Как предоставить пользователю права на выключение?

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

Я ссылался на эту страницу и добавил текст в файле sudoers. Тем не менее, он все еще спрашивает меня пароль всякий раз, когда я выполняю sudo shutdown -h now. Кроме того, я получаю сообщение об ошибке root, когда я выполняю shutdown без sudo.

Мой файл sudoers выглядит примерно так.

# Cmnd alias specification Cmnd_Alias SHUTDOWN = /sbin/shutdown # User privilege specification root ALL=(ALL:ALL) ALL myusername ALL = NOPASSWD: SHUTDOWN

Как я могу разрешить пользователь выполнит команду выключения без необходимости вручную вводить пароль?

Спасибо.

9
задан 20 June 2011 в 15:55

40 ответов

Некоторое время назад я сделал это, установив suid (Set User ID). Это заставляет программу выполнять роль владельца файла, а не пользователя, запускающего его. Поскольку shutdown принадлежит root, это должно позволить вам отключиться без sudo.

chmod u+s /sbin/shutdown

Имеются последствия для безопасности, поскольку каждый может запустить завершение работы. http://en.wikipedia.org/wiki/Setuid

1
ответ дан 6 August 2018 в 03:29
  • 1
    В общем случае не рекомендуется изменять файлы или метаданные файлов, установленные из пакетов, кроме файлов конфигурации в /etc. – enzotib 20 June 2011 в 16:57
  • 2
    Хм ... правда! Но каков официальный путь? Играете с полкитом? Не так приятно ... – turbo 20 June 2011 в 20:57
  • 3
    sudo - это правильный путь, на мой взгляд, но, к сожалению, пользователь не дает возможности увидеть его файл sudoers, и что с ним не так. – enzotib 20 June 2011 в 23:05
  • 4
    Это единственное, что сработало для меня. – Mark Stewart 23 September 2014 в 08:17

Некоторое время назад я сделал это, установив suid (Set User ID). Это заставляет программу выполнять роль владельца файла, а не пользователя, запускающего его. Поскольку shutdown принадлежит root, это должно позволить вам отключиться без sudo.

  chmod u + s / sbin / shutdown  

Есть последствия для безопасности, хотя, поскольку кто-либо затем может завершить работу. [D0] http://en.wikipedia.org/wiki/Setuid

1
ответ дан 7 August 2018 в 21:16

Я сделал это, как в , этот ответ, работает безупречно для меня. Возможно, ваш подход пропускает часть visudo ?

Откройте командную строку и введите:

  sudo visudo  

В открывшемся файле добавьте следующую строку в конец:

  yourusername ALL = NOPASSWD: / sbin / halt  

Затем выйдите из редактора и (CTRL + x).

Теперь вы можете выключить компьютер из командной строки, например после загрузки:

  wget UrlOfTheFileYouWantToDownload;  sudo halt  
7
ответ дан 7 August 2018 в 21:16

Похоже, вы хотите запустить скрипт как root. Если вы хотите запустить скрипт, который ждет чего-то, чтобы закончить, а затем отключить ваш компьютер, вы просто запустите скрипт с помощью sudo. Это будет запрашивать ваш пароль при запуске скрипта, но тогда сам скрипт может отключить систему без какого-либо дальнейшего вмешательства.

0
ответ дан 7 August 2018 в 21:16

Некоторое время назад я сделал это, установив suid (Set User ID). Это заставляет программу выполнять роль владельца файла, а не пользователя, запускающего его. Поскольку shutdown принадлежит root, это должно позволить вам отключиться без sudo.

  chmod u + s / sbin / shutdown  

Есть последствия для безопасности, хотя, поскольку кто-либо затем может завершить работу. [D0] http://en.wikipedia.org/wiki/Setuid

1
ответ дан 10 August 2018 в 09:34

Похоже, вы хотите запустить скрипт как root. Если вы хотите запустить скрипт, который ждет чего-то, чтобы закончить, а затем отключить ваш компьютер, вы просто запустите скрипт с помощью sudo. Это будет запрашивать ваш пароль при запуске скрипта, но тогда сам скрипт может отключить систему без какого-либо дальнейшего вмешательства.

0
ответ дан 10 August 2018 в 09:34

Я сделал это, как в , этот ответ, работает безупречно для меня. Возможно, ваш подход пропускает часть visudo ?

Откройте командную строку и введите:

  sudo visudo  

В открывшемся файле добавьте следующую строку в конец:

  yourusername ALL = NOPASSWD: / sbin / halt  

Затем выйдите из редактора и (CTRL + x).

Теперь вы можете выключить компьютер из командной строки, например после загрузки:

  wget UrlOfTheFileYouWantToDownload;  sudo halt  
7
ответ дан 10 August 2018 в 09:34

Некоторое время назад я сделал это, установив suid (Set User ID). Это заставляет программу выполнять роль владельца файла, а не пользователя, запускающего его. Поскольку shutdown принадлежит root, это должно позволить вам отключиться без sudo.

  chmod u + s / sbin / shutdown  

Есть последствия для безопасности, хотя, поскольку кто-либо затем может завершить работу. [D0] http://en.wikipedia.org/wiki/Setuid

1
ответ дан 13 August 2018 в 15:44
  • 1
    В общем случае не рекомендуется изменять файлы или метаданные файлов, установленные из пакетов, кроме файлов конфигурации в / etc . – enzotib 20 June 2011 в 16:57
  • 2
    Хм ... правда! Но каков официальный путь? Играете с полкитом? Не так приятно ... – turbo 20 June 2011 в 20:57
  • 3
    sudo - правильный путь, на мой взгляд, но, к сожалению, пользователь не дает возможности увидеть файл sudoers , и что с ним не так. – enzotib 20 June 2011 в 23:05
  • 4
    Это единственное, что сработало для меня. – Mark Stewart 23 September 2014 в 08:17

Похоже, вы хотите запустить скрипт как root. Если вы хотите запустить скрипт, который ждет чего-то, чтобы закончить, а затем отключить ваш компьютер, вы просто запустите скрипт с помощью sudo. Это будет запрашивать ваш пароль при запуске скрипта, но тогда сам скрипт может отключить систему без какого-либо дальнейшего вмешательства.

0
ответ дан 13 August 2018 в 15:44

Я сделал это, как в , этот ответ, работает безупречно для меня. Возможно, ваш подход пропускает часть visudo ?

Откройте командную строку и введите:

  sudo visudo  

В открывшемся файле добавьте следующую строку в конец:

  yourusername ALL = NOPASSWD: / sbin / halt  

Затем выйдите из редактора и (CTRL + x).

Теперь вы можете выключить компьютер из командной строки, например после загрузки:

  wget UrlOfTheFileYouWantToDownload;  sudo halt  
7
ответ дан 13 August 2018 в 15:44

Другие вопросы по тегам:

Похожие вопросы: