Как я узнаю, если я sudoer?


32

Как ведет себя система Linux, когда я не sudoer? Вот что произойдет, если я попытаюсь использовать sudo:

server:/tmp>$ sudo cal
[sudo] password for user:
Sorry, try again.

Возможно ли, что я просто не знаю свой пароль или это означает, что я не sudoer? (На другом компьютере системы распечатано, что я не sudoer и инцидент будет сообщено)


Лучший ответ, чем любой из следующих: superuser.com/questions/553932/…
— barnhillec

Ответы:


40

Чтобы узнать, имеет ли конкретный пользователь доступ к sudo или нет, мы можем использовать -lи -Uпараметры вместе.

Например,

Если у пользователя есть доступ к sudo, он напечатает уровень доступа sudo для этого конкретного пользователя.

   $ sudo -l -U pradeep
     User pradeep may run the following commands on this host:
     (ALL : ALL) ALL

Если у пользователя нет доступа к sudo, он напечатает, что пользователю не разрешено запускать sudo на localhost.

   $ sudo -l -U pradeep.c
     User pradeep.c is not allowed to run sudo on localhost.

4
Это не работает для меня. Вместо того, чтобы давать мне информацию, он снова запрашивает пароль: server:/home/drasto>$ sudo -l -U drasto [sudo] password for drasto:на этом сервере есть дистрибутив Red Hat, если это поможет
— Rasto

9

Вы можете использовать -lфлаг, чтобы перечислить свои привилегии.

-l[l] [command]
   If no command is specified, the -l (list) option will list the allowed (and forbidden)
   commands for the invoking user (or the user specified by the -U option) on the current
   host.  If a command is specified and is permitted by sudoers, the fully-qualified path
   to the command is displayed along with any command line arguments.  If command is
   specified but not allowed, sudo will exit with a status value of 1.  If the -l option
   is specified with an l argument (i.e. -ll), or if -l is specified multiple times, a
   longer list format is used.

Если вы не в файле, вы должны получить ошибку «not in the sudoers file», которую вы видели на другом компьютере.


2
Это также не работает для меня. Он просто просит у меня пароль:server:/home/drasto>$ sudo -l [sudo] password for drasto:
— Rasto

1
Введите свой пароль
— Кевин

1
@Kevin @Michael Мой пароль не работает. Я знаю только один пароль для этого сервера, который я использую для входа на сервер. Это просто не работает, когда меня просят ввести пароль sudo (я пробовал его около 100 раз, capslock, numlock и т. Д.). Но в целом думать не имеет смысла! Я хочу знать, есть ли у меня привилегии sudo, но чтобы узнать это, мне нужны привилегии sudo ?! Для запуска sudo -lмне нужен пароль sudo? Так что я должен быть пользователем root, чтобы знать, являюсь ли я пользователем root ?!
— Расто

1
@ Drasto Как сказал Билл, sudoищет ваш пароль для входа. Так что, если вы попробовали это, и это не сработало, либо sudo ужасно неправильно настроен, либо вы оказались в какой-то тюрьме, где он не может видеть или читать нужные файлы. В любом случае, у вас фактически нет разрешений sudo.
— Кевин

1
@Kevin Тогда я, наверное, в какой-то тюрьме. На самом деле я думаю, что у меня не должно быть тех разрешений sudo на этой машине. Поэтому я был удивлен, когда он спросил меня о моем пароле sudo в первую очередь. Во всяком случае, это так, как я написал: мой пароль для входа не работает.
— Расто

-1

Вы можете проверить, находитесь ли вы в группе sudo, с помощью команды

groups

В shell-скрипте вы можете использовать это:

if groups | grep "\<sudo\>" &> /dev/null; then
   echo yes
else
   echo no
fi

1
Группа может быть sudo, admin, wheelили что - то совсем другое, и даже членство в группе, отдельный пользователь может быть отказано в доступе Судо по определенным правилам (или наоборот).
— Муру

Это имеет слишком много ложных негативов для моей цели (проверка жесткости). Ответ Кевина более точный.
— StockB
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.