В Linux-системе, как мне перечислить всех пользователей с привилегиями root (и, что еще лучше, всех пользователей в целом, а также, есть ли у них root или нет)?
Не забудьте изменить пароль root. Если какой-либо пользователь имеет UID 0, кроме root, этого не должно быть. Плохая идея. Проверять:
grep 'x:0:' /etc/passwd
Опять же, вам не следует этого делать, кроме как проверить, является ли пользователь членом корневой группы:
grep root /etc/group
Чтобы узнать, может ли кто-нибудь выполнять команды от имени пользователя root, проверьте sudoers:
cat /etc/sudoers
Чтобы проверить бит SUID, который позволяет запускать программы с привилегиями root:
find / -perm -04000
Чтобы узнать, кто имеет UID 0:
getent passwd 0
Чтобы узнать, кто в группах root
, wheel
adm
и admin
:
getent group root wheel adm admin
Чтобы перечислить всех пользователей и группы, членами которых они являются:
getent passwd | cut -d : -f 1 | xargs groups
Чистый root - это идентификатор пользователя "0".
Все пользователи системы находятся в файле / etc / passwd:
less /etc/passwd
Те, кто имеют root-права, имеют идентификатор пользователя «0», это 3-й столбец. Те, у кого есть группа «0» (4-й столбец), также могут иметь некоторые привилегии root.
Затем вы захотите просмотреть группы и узнать, кто является дополнительным членом группы «root», «wheel» или «admin»:
less /etc/group
Пользователи, перечисленные в этих группах, могут иметь некоторые привилегии root, особенно с помощью команды «sudo».
Последнее, что вы захотите проверить, - это конфигурация "sudo" и посмотреть, кто указан как имеющий разрешение на запуск этой команды. Сам этот файл хорошо документирован, поэтому я не буду воспроизводить его здесь:
less /etc/sudoers
Это охватывает основные области того, кто может иметь root-доступ.
Распечатать всех пользователей
perl -n -e '@user = split /:/ ; print "@user[0]\n";' < /etc/passwd
Чтобы напечатать только тех пользователей с UID 0, которые, как говорили другие, являются пользователями с неявными привилегиями root:
perl -n -e '@user = split /:/ ; print "@user[0]\n" if @user[2] == "0";' < /etc/passwd
Чтобы получить быстрый список всех пользователей, попробуйте дважды нажать вкладку (для автозаполнения) после ввода passwd
команда, за которой следует пробел. Это работает с su
команда тоже.
Должен быть выполнен как пользователь с привилегиями root.
Меня раздражало, что не было однострочного ответа ... Если вы хотите перечислить все учетные записи UID 0 (root), используйте следующее:
cat /etc/passwd | cut -f1,3,4 -d":" | grep"0:0" | cut -f1 -d":" | awk '{print $1}'
Лучший,