Є кілька способів цього досягти. Можна працювати з звичайним непривілейованим обліковим записом, який вимагатиме виконання команди з sudo та введення пароля. Тоді ви можете додати наступну таблицю до / etc / sudoers (за допомогою запуску visudo):
## user is allowed to execute reboot -r only
jdoe ALL=NOPASSWD: /sbin/shutdown -r *
Також, щоб вимкнути кешування даних судо, додайте також таке:
Defaults timestamp_timeout=0
Це запобіжить кешування облікових даних у випадку, коли ви викликали команду з sudo раніше.
Приклад:
[root@ops ~]# su - jdoe
[jdoe@ops ~]$ sudo shutdown -c
[sudo] password for jdoe:
[jdoe@ops ~]$ sudo shutdown -r +10
Shutdown scheduled for Mon 2018-09-03 18:51:13 IDT, use 'shutdown -c' to cancel.
[jdoe@ops ~]$ sudo shutdown -H
[sudo] password for jdoe:
^[[A[jdoe@ops ~]$ sudo shutdown -c
[sudo] password for jdoe:
Зверніть увагу, як у наведеному вище прикладі мені не потрібно було вводити свій пароль під час запуску sudo shutdown -r +10
, але в іншому я був. Якщо ви хочете усунути необхідність введення sudo перед командою ( sudo shutdown -r +10
), додайте наступне у свій .bash_profile або .bashrc:
alias shutdown="sudo shutdown"
Приклад:
[jdoe@ops ~]$ source ~/.bash_profile
[jdoe@ops ~]$ shutdown -r +10
Shutdown scheduled for Mon 2018-09-03 19:03:14 IDT, use 'shutdown -c' to cancel.
[jdoe@ops ~]$ shutdown -c
[sudo] password for jdoe:
Зауважте, що найкраща практика працювати з непривілейованим обліковим записом та ескалації судо, коли потрібно.