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

32

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

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

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

Rasto
источник
Лучший ответ, чем любой из следующих: 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.
pradeepchhetri
источник
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», которую вы видели на другом компьютере.

Kevin
источник
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
Schlacki
источник
1
Группа может быть sudo, admin, wheelили что - то совсем другое, и даже членство в группе, отдельный пользователь может быть отказано в доступе Судо по определенным правилам (или наоборот).
Муру
Это имеет слишком много ложных негативов для моей цели (проверка жесткости). Ответ Кевина более точный.
StockB