Как я узнаю, если я 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.