Как удалить пользователей, у которых есть uid 0?
Я должен очистить всех пользователей с идентификатором 0, кроме root. Например, мой файл passwd содержит пользователя root с идентификатором 0 и пользователя homer с идентификатором 0.
Я пробовал что-то вроде
grep :x:0: passwd | grep -v root:x: | awk -F : '{ print $1 }' | xargs userdel
но я получил ошибку userdel: пользователь homer в настоящее время вошел в систему, хотя я вошел в систему как root, а не homer. Я полагаю, эта ошибка происходит из-за их совместного использования и идентификации.
Есть ли способ обойти это? Должен ли я просто отредактировать файлы passwd и shadow? Иначе, есть ли способ заставить идентификатор 0 быть уникальным, чтобы мы могли гарантировать, что другие пользователи не будут созданы с идентификатором 0? Благодарю.
3 ответа
"Гомер" и "root" - это одна и та же учетная запись. Вы можете иметь несколько имен пользователей для одной учетной записи. Смотрите также https://unix.stackexchange.com/questions/49993/another-account-with-same-uid-as-root-gets-prompted-to-set-new-password-for-root
Ты захочешь vipw
а также vipw -s
чтобы исправить это. Редактирование напрямую с vim
или же sed
плохая идея
Рассмотрите https://serverfault.com/ или https://unix.stackexchange.com/ для будущих вопросов такого типа.
Это хитрость: userdel -rf username
Эта команда показывает вам:
userdel: user XXX is currently used by process 1
но имя пользователя удалено
Вы можете использовать эту команду sed:
sed '/^[^:]\+:x:0:/{/^root:/!d}' /etc/passwd
Или же
sed -i '/^[^:]\+:x:0:/{/^root:/!d}' /etc/passwd
Что бы изменить файл.