Невідомий користувач у файлі statoverride


22

У мене на моєму htpc сервері ubuntu, який називається mediatomb, було встановлено додаток, кілька місяців тому я його видалив і замінив на встановлення Plex. У вихідні під час запитів існуючих користувачів на машині я помітив, що користувач і група mediatomb все ще існують, тому я використав команду

sudo deluser mediatomb

щоб видалити користувача. Через день або близько цього я пішов встановити htop, sudo apt-get install htopале виявив, що отримую помилку:

помилка синтаксису: невідомий користувач 'mediatomb' у файлі statoverride.

Я думав, що я просто зможу відкрити файл statoverride за допомогою nano та відредагувати будь-які посилання на mediatomb, але мені не вдалося правильно відкрити файл за допомогою nano. Я виконав команду grep

grep 'mediatomb' /var/lib/dpkg/statoverride

який повернув два місця у файлі, які вже не існують у системі. Єдиний спосіб, яким я зараз можу подолати проблему, - це заново створити користувачу mediatomb і тоді все працює нормально. Очевидно, це не дуже вдале довгострокове рішення.

Що я хотів би знати, що таке файл statoverride і чому він містить у ньому користувачів, які були видалені з системи? Чи видаляю я користувачів неправильним чи застарілим способом?

Відповіді:


47

Я знаю, що це питання трохи старе, але я стикався з цим вже двічі. Раз з puppet, раз з virtualbox. Це знову обрізалося, і я знайшов щось, що спрацювало. Це варіант на serverfault.com .

Замість того, щоб покладатися на dpkg-statoverride --remove /path/to/offending/file.extяку, кидає помилку

dpkg: unrecoverable fatal error, aborting:
syntax error: unknown group offendinggroup in statoverride file

Ви можете захоплюватися sed, а можна просто відкрити /var/lib/dpkg/statoverrideулюблений текстовий редактор і видалити лише рядки, що містять елементи, які спричинили помилку. Я виявив, що це документально підтверджена помилка як для Debian, так і для Ubuntu,

Однак, я просто виправив шахту, вручну редагувавши будь-який запис, який видав помилку. Сподіваємось, це допоможе наступній особі, яка відвідує цей номер 1 для пошуку в Google для цієї проблеми.


Дуже дякую! Я тільки починав переживати, що буду витрачати всю вічність на відкриття неясних куточків світу Linux, щоб вирішити цей простий чарівник, який я зробив кілька днів тому. не знаю, як мені вдалося це зробити, але видалення цього одного рядка з цього файлу усунула проблему. велике спасибі, що заощадили мені багато часу!
Пітер Пергач

Ти надзвичайний! Виправлено мою проблему.
Elad Weiss

16

Хоча я не можу відповісти на ваше запитання як на запитання, я можу допомогти вам у вашій дилемі. У мене виникла та сама проблема, яка виникає після використання "Облікових записів користувачів" для видалення користувача "backuppc" - користувача, який я вручну налаштував для створення резервних копій. Ну я списав цей маршрут, але не намагався видалити користувача лише через пару тижнів (IE - сьогодні). Я не відчував жодних проблем, поки менеджер оновлень не знайшов і не намагався застосувати оновлення; процес не зможе прочитати

dpkg: unrecoverable fatal error, aborting:  
 syntax error: unknown user 'backuppc' in statoverride file
W: Waited for dpkg --assert-multi-arch but it wasn't there - dpkgGo (10: No child processes)
E: Sub-process /usr/bin/dpkg returned an error code (2)
A package failed to install.  Trying to recover:

Після деяких пошуків я знайшов рішення.

x@y ~ $ cat /var/lib/dpkg/statoverride
root postdrop 2555 /usr/sbin/postdrop
root postdrop 2555 /usr/sbin/postqueue
root mlocate 2755 /usr/bin/mlocate
postfix postdrop 2710 /var/spool/postfix/public
backuppc www-data 4750 /usr/lib/backuppc/cgi-bin/index.cgi
root ssl-cert 710 /etc/ssl/private
root crontab 2755 /usr/bin/crontab

Виправлено запуском: sudo sed -i '/ backuppc / d' / var / lib / dpkg / statoverride

x@y ~ $ sudo sed -i '/backuppc/d' /var/lib/dpkg/statoverride; cat /var/lib/dpkg/statoverride
[sudo] password for x: 
root postdrop 2555 /usr/sbin/postdrop
root postdrop 2555 /usr/sbin/postqueue
root mlocate 2755 /usr/bin/mlocate
postfix postdrop 2710 /var/spool/postfix/public
root ssl-cert 710 /etc/ssl/private
root crontab 2755 /usr/bin/crontab

Вибачте, я не можу відповісти на ваше запитання, але це був другий результат у google, тому я хотів запропонувати тут рішення для людей. Моя відповідь виникла з http://rickfoosusa.blogspot.com/2012/04/howto-ubuntu-unknown-user-in.html .


3
Це найгірший підхід до проблеми. Натомість слід перевстановити / перенастроїти пакунок, а не обходити видалення речей, які не призначені для видалення.
Брайам

4

Я отримував таку помилку:

dpkg: unrecoverable fatal error, aborting:
syntax error: unknown group "crontab" in statoverride file,
 E: Sub-process /usr/bin/dpkg returned an error code (2)
dpkg: unrecoverable fatal error, aborting:
 unknown group 'messagebus' in statoverride file
E: Sub-process /usr/bin/dpkg returned an error code (2)

Нижче команда вирішила мою проблему apt-get install

sudo sed -i '/crontab/d' /var/lib/dpkg/statoverride

Ви можете змінити слово crontab, але зберегти "/ d", поки ви не зможете успішно встановити будь-який apt-get без будь-якої синтаксичної помилки.

root@localhost:~# sudo sed -i '/messagebus/d' /var/lib/dpkg/statoverride
root@localhost:~# apt-get install wifite
Reading package lists... Done

2

Це тому, що ви, можливо, видалили користувача і тепер dpkg запитує /etc/passwdпорівняти з файлом statoverride, він перевіряє, чи всі записи файлу statoverride знаходяться в passwd, і якщо їх немає, видайте попередження, що саме відбувається.

Це легко зафіксувати, якщо ви переконфігуруєте / перевстановіть відповідний пакет (у вашому випадку це було mediatomb, можливо, будь-що інше; на щастя, Debian (ОС на основі Ubuntu заснований) використовує те саме ім’я користувача, що і ім'я проекту, як правило) і це (повторно) створить користувача у файлі passwd.

sudo apt-get --reinstall install package

або

sudo dpkg-reconfigure package

1

Коли я встановив DelugeD, він створив користувача під назвою debian-deluged. Пізніше я змінив налаштування Deluge, щоб використовувати інший ідентифікатор користувача, і видалив створеного автоматично. Це призвело до statoverrideпомилки при встановленні спідометра для упаковки.

Я запустив sudo nano /var/lib/dpkg/statoverrideі вручну замінив створеного автором користувача на присвоєний ідентифікатор користувача, і помилка була усунена.


1

У мене була подібна помилка і виправлено її, спершу створивши резервну копію файлу statoverride, а потім видаливши всі рядки, що містять слово postdrop .

Не забудьте додати новий рядок в кінці файлу statoverride .

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.