Я хочу, чтобы команда перечисляла всех пользователей, которые имеют привилегии root, т.е. sudo?
Предположим, я пользователь sudoer. Как я мог знать всех других пользователей sudoer?
command-line
sudo
Maythux
источник
источник
sudo
разрешение, а кто нет .... если пользователь находится вsudo
группе, но вsudoers
файле ничего не указано дляsudo
группы, тогда?Ответы:
Если вам просто нужно перечислить sudoers, перечисленных в
sudo
группе, я думаю, что лучший способ сделать это - запустить эту команду (которая должна быть вычислительно легче, чем любая из других команд в этом ответе):Также, как предлагается в комментариях Muru, формат записей в
/etc/group
может быть легко обработанcut
:Кроме того, опять же, как предложено в комментариях Муру, можно использовать
getent
вместоgrep
:Любая из этих команд напечатает всех пользователей, перечисленных в
sudo
группе в/etc/group
(если есть).Разбивка команды № 1:
grep
: Печатает все строки, соответствующие регулярному выражению в файле-P
:grep
сопоставляет регулярные выражения в стиле Perlo
:grep
печатает только совпадающую строку'^sudo.+:\K.*$'
: делаетgrep
соответствие регулярному выражению между кавычкамиRegex # 1 разбивка:
^
: начало строки.+
: один или несколько символов\K
: отменить предыдущий матч.*
: ноль или более символов$
: конец линииКоманда № 2 разбивка:
grep
: Печатает все строки, соответствующие регулярному выражению в файле'^sudo.+:\K.*$'
: делаетgrep
соответствие регулярному выражению между кавычкамиcut
: Печатает только указанный раздел каждой строки в файле-d:
:cut
интерпретировать:
как разделитель полей-f4
:cut
печатает только четвертое полеРаспределение Regex # 2:
^
: начало строки.*
: ноль или более символов$
: конец линииисточник
getent group sudo | cut -d: -f4
или используйте awk, но в любом случае помните, что group и passwd имеют фиксированные форматы с разделителями.getent group
- вам вообще не нужен grep.getent group foo
это какgrep foo /etc/group
, но более способный.getent
, хоть как-то размышляли о том, какgrep
иgetent
сравнивать в вычислительном отношении? Будет ли легче бежатьgetent
?sudo
группы. У некоторых юниксов есть другие группы, такие какwheel
. Ответ @muru будет включать всех sudoers независимо от того, в каких группах они находятся.Как указано здесь, я рассматриваю самый простой способ поиска с
-l
&-U
параметрами вместе, просто напечатайтеusers
его, например:John
then:Если у пользователя есть
sudo
доступ, он напечатает уровеньsudo
доступа для этого конкретного пользователя:Если у пользователя нет доступа к sudo, он напечатает, что пользователю не разрешено работать
sudo
на локальном хосте:источник
for u in $(awk -F'[/:]' '{if($3>=1000&&$3!=65534) print $1}' /etc/passwd); do sudo -lU "$u" ; done
. быстрый взлом ничего не гарантировал :)"%domain admins@mycompany.intra" ALL=(ALL) ALL
это работает. Вы сэкономили мне много времени, потому что я не знал, что это работает и для не локальных пользователей.Как уже было сказано, ответ можно найти на Unix & Linux Stack Exchange :
Разница лишь в том, что группы в Ubuntu нет
wheel
, ноsudo
(илиadmin
в более старых версиях Ubuntu). Таким образом, команда становится:источник
geten group
и я вижу много разных чисел. Мой оригинальный вопрос, как узнать, является ли пользователь системным пользователем (создан с помощьюuseradd -r
)Развернув
sudo -l -U
тест, можноgetent passwd
определить пользователей, которые могут его использоватьsudo
. Использованиеgetent
позволяет нам получить доступ к пользователям, которые могут отсутствовать вpasswd
файле, например, к пользователям LDAP:sudo -U
не возвращает ненулевое значение выхода, которым мы могли бы воспользоваться, поэтому мы ограничены выводом.источник
sudo
.В большинстве Unix-подобных систем, которые имеют команду sudo и имеют файл конфигурации sudo; работает visudo как root:
или же
позволит администратору проверять и изменять привилегии групп, которые могут использовать команду sudo.
В Unix-подобных системах на основе Debian, таких как Ubuntu, группы 4 и 27 обычно имеют права доступа к привилегиям sudo.
Группа 4 - это группа администраторов (adm), а группа 27 - это sudo gid.
Чтобы увидеть, какие пользователи в настоящее время назначены этим группам, просмотрите файл / etc / group, как показано ниже:
Пример вывода в Ubuntu (но не на основе Redhat, Oracle Solaris / Solaris или BSD) даст следующее:
Как мы можем сказать, youruser является администратором системы и членом группы 4 (adm). Но youruser и mybrother являются членами группы 27, которая является номером gid (идентификация группы) группы sudo. Таким образом, mybrother также может получить права root (суперпользователь).
Многие системы Linux, такие как Fedora и Slackware, включают gid группы колес = 10. Что дает права администратора при применении команды sudo. В системах на основе BSD (например, FreeBSD) пользователь root является членом группы wheel, которая имеет значение 0.
Также с помощью команды id любой пользователь может найти в системе информацию о группе другого известного пользователя.
Например:
Образец вывода
источник
Эта команда возвращает список пользователей с правами sudo:
Выход (например):
Если отображается только имя пользователя, то эта команда:
источник
Команда:
Выход:
Том, Стейси - пользователи с привилегиями sudo.
источник
cat
.Я был поставлен в тупик о том, как
vagrant
пользователь может использовать,sudo
даже если он не упомянут/etc/sudoers
ни в,/etc/group
ни в сgetent
.Оказывается
sudo
также читает записи из всех файлов в/etc/sudoers.d/
. Поэтому, если вы не просматривали этот каталог, вы можете не понимать, сколько пользователей на самом деле имеютsudo
доступ.Такой
sudo
доступ может быть обнаружен ответ Joker, используя ,sudo -l -U vagrant
но не обнаруживается какой - либо из других ответов здесь , которые все связаны либоgetent
или/etc/group
.источник