На linux box, как мне перечислить всех пользователей, имеющих права суперпользователя (и, что еще лучше, всех пользователей в целом вместе с тем, есть ли у них root или нет)?
На linux box, как мне перечислить всех пользователей, имеющих права суперпользователя (и, что еще лучше, всех пользователей в целом вместе с тем, есть ли у них root или нет)?
Ответы:
Не забудьте сменить пароль root. Если любой пользователь имеет UID 0, кроме root, он не должен. Плохая идея. Проверять:
grep 'x:0:' /etc/passwd
Опять же, вы не должны делать это, но чтобы проверить, является ли пользователь членом корневой группы:
grep root /etc/group
Чтобы узнать, может ли кто-либо выполнять команды от имени пользователя root, проверьте sudoers:
cat /etc/sudoers
Чтобы проверить бит SUID, который позволяет программам выполняться с правами root:
find / -perm -04000
grep '[^:]*:[^:]*:0:' /etc/passwd
. +1 в частности для проверки на SUID.
Чтобы увидеть, кто является UID 0:
getent passwd 0
Чтобы увидеть, кто в группах root
, wheel
adm
и admin
:
getent group root wheel adm admin
Чтобы перечислить всех пользователей и группы, членами которых они являются:
getent passwd | cut -d : -f 1 | xargs groups
getent passwd
вместо этого, на самом деле правильный. Только не забудьте проверить / etc / sudoers.
Чистый корень - это идентификатор пользователя "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-доступ.
consolehelper
и PackageKit
.)
getent passwd
следует перечислить всех пользователей системы (включая root) в формате passwd, независимо от базы данных, в которой они определены.
Для печати всех пользователей
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
getent passwd
вместо этого. Для вашего первого примера «напечатать всех пользователей» попробуйте следующее:getent passwd | perl -naF: -e 'print "$F[0]\n"'
Чтобы получить быстрый список всех пользователей, попробуйте дважды нажать вкладку (для автозаполнения) после ввода passwd
команды с пробелом. Это работает и с su
командой.
Должно быть сделано как привилегированный пользователь.