Как проверить, есть ли у меня доступ к Sudo?

Из-за этого у меня недавно возникли проблемы.

$sudo vim /etc/motd [sudo] password for bruce: bruce is not in the sudoers file. This incident will be reported. 

Есть ли способ проверить, есть ли у меня доступ к Sudo или нет?

    Выполнить sudo -v . Обычно он используется для расширения тайм-аута паролей sudo, но может использоваться для определения наличия у вас каких-либо привилегий sudo .

     $ sudo -v Sorry, user [username] may not run sudo on [hostname]. 

    Отрывок из пользовательской страницы:

    Если задан параметр -v (validate), sudo будет обновлять отметку времени пользователя, запрашивая пароль пользователя, если это необходимо. Это расширяет тайм-аут sudo еще на 5 минут (или независимо от того, установлен ли тайм-аут в sudoers), но не выполняет команду.

    Если вашему пользователю разрешено выполнять только определенные команды, эта команда будет работать, указывая на то, что вам разрешено запускать что-то с разными привилегиями. Хотя сообщение выглядит по-другому при попытке выполнить команду, в этом случае вам не разрешено (и почта не отправляется в root ), все же возможно, что вы столкнетесь с проблемами, если администраторы прочитают /var/log/secure .

     $ sudo ls [sudo] password for [username]: Sorry, user [username] is not allowed to execute '/bin/ls' as root on [hostname]. 

    Чтобы узнать, что вам разрешено запускать с разными привилегиями, вы можете использовать sudo -l . Обратите внимание, что для этой команды требуется ввести пароль.

    Это очень просто. Выполнить sudo -l . В этом списке будут перечислены любые привилегии sudo.

    Вот версия, удобная для скриптов:

     timeout 2 sudo id && echo Access granted || echo Access denied 

    Поскольку он не будет зависеть от ввода пароля, если у вас нет доступа sudo .

    Вы также можете установить его в переменной, например:

     timeout 2 sudo id && sudo="true" || sudo="no" echo "$sudo" 

    «Sudo access» приходит в ароматы. Два основных аспекта: сначала вы или группа, которой вы являетесь, должны быть настроены для доступа sudo в файле / etc / sudoers.

    Во-вторых, вам нужно знать свой пароль, или вам нужно было недавно сделать команду sudo. Достаточно достаточно, чтобы время ожидания не истекло. (Забавный факт: вы можете сделать время очень долго в файле sudoer.)

    Я часто хочу протестировать второй вид доступа в прологе скрипта, который должен будет выполнить некоторые шаги. Когда эта проверка завершится неудачно, я могу посоветовать пользователю, которому он должен активировать второй вид доступа, прежде чем запускать скрипт.

    bash-3.2$ if sudo -S -p '' echo -n < /dev/null 2> /dev/null ; then echo 'Sudo is enabled.' ; else echo 'Sudo is not enabled' ; fi Sudo is enabled. bash-3.2$ sudo -K bash-3.2$ if sudo -S -p '' echo -n < /dev/null 2> /dev/null ; then echo 'Sudo is enabled.' ; else echo 'Sudo is not enabled' ; fi Sudo is not enabled

    -S сообщает sudo прочитать пароль от stdin. -p устанавливает пустое приглашение. -K очищает второй доступ.

    Поскольку он отправляет stderr в / dev / null, он также проверяет, имеет ли пользователь первый доступ к sudo.

    Для меня « sudo -v » и « sudo -l » не работали в скрипте, потому что иногда были интерактивными (спрашивая у меня пароль, как упоминалось выше). ' sudo -n -l ' тоже не работал, он выдал код выхода '1', хотя у меня есть разрешения sudo из-за недостающего пароля. Но расширение команды:

     A=$(sudo -n -v 2>&1);test -z "$A" || echo $A|grep -q asswor 

    Был успешным для меня для сценария. Это выражение дает 0 если текущий пользователь может вызвать 'sudo' и 1 если нет.

    Объяснение:
    Дополнительный параметр -n для sudo предотвращает интерактивность.
    Выход $A команды ' sudo -n -v 2>&1 ' может быть:
    – пустой (в этом случае sudo может быть вызван текущим пользователем) или:
    – примечание о том, что текущий пользователь не разрешен для sudo, или:
    – текст вопроса для пароля (в этом случае пользователь авторизован).
    («Asswor» подходит для английского «пароля», а также для немецкого «Passwort»).

    Выполните следующие действия, чтобы просмотреть файл sudoers. Если вы там, у вас есть sudo. Если нет, вы можете добавить себя.

    1. su
    2. visudo
    3. Внизу файла введите your_username_here ALL=(ALL) ALL
    4. Нажмите ESC и введите :wq
    5. Тип exit
    6. Повторно запустите команду, требующую sudo
    7. Введите свой пароль (не пароль root)
    Давайте будем гением компьютера.