Poweroff або Reboot як звичайний Користувач


17

Для запуску команди poweroffабо rebootпотрібно бути суперкористувачем. Чи все-таки я можу це запустити як звичайний користувач? Я просто не хочу sudoвводити свій пароль щоразу, коли перезавантажую або вимикаю живлення.


2
Відповідь залежить від того, яку систему init використовує ваш дистрибутив ... Наприклад, за допомогою systemdта активного logindсеансу ви можете перезавантажувати або переоснащуватися без підвищених привілеїв, якщо жоден інший користувач все ще не входить у систему ...
jasonwryan

@jasonwryan В даний час я використовую Ubuntu, який не використовується systemdза замовчуванням. Отже, ви маєте на увазі інші дистрибутиви, такі як Arch можуть перезавантажуватися без розроблених привілеїв?
Stormvirux

Так: відповідно до умов мого першого коментаря.
jasonwryan

Відповіді:


22

Я змінив /etc/sudoersтак, що кожен користувач, який знаходиться в групі адміністратора, може виконувати такі команди, не запитуючи пароль.

sudo halt
sudo reboot
sudo poweroff

Вам просто потрібно додати наступні рядки /etc/sudoers

## Admin user group is allowed to execute halt and reboot 
%admin ALL=NOPASSWD: /sbin/halt, /sbin/reboot, /sbin/poweroff

і додайте себе до групи адміністратора.

Якщо ви хочете, щоб це міг зробити лише один користувач, просто видаліть %adminі замініть його usernameтаким

## user is allowed to execute halt and reboot 
stormvirux ALL=NOPASSWD: /sbin/halt, /sbin/reboot, /sbin/poweroff

Ви можете дізнатися більше про /etc/sudoersз man sudoersабо онлайн сторінки керівництва


4

Ви також можете створити новий файл під /etc/sudoers.dназвою його за вашим бажанням (я його назвав 'shutdown'), а всередині помістити наступні рядки:

# Allows me to shutdown the system without a password

yourUserName ALL = NOPASSWD: /sbin/halt, /sbin/reboot, /sbin/poweroff

Просто змініть "yourUserName" на ВАШ Ім'я користувача та додайте та видаліть команди для використання, особисто я його використовую лише для shutdown. Однією з головних відмінностей створення певного файлу в sudoers.dтому, що цей файл переживе оновлення системи


1
Якщо ви виберете цей підхід, переконайтеся, що /etc/sudoersє відповідна #includeдиректива для читання файлів /etc/sudoers.d/.
patricktokeeffe

2

Ви також можете домогтися цього, виправдавши налаштування. Я не знаю, чи буде це працювати у всіх системах, оскільки вони іноді ігнорують setuid / setgid біт.

Ви можете вказати групу користувачів, які можуть виконати зміну стану системи в моєму випадку це було adm. Потім додайте відповідних користувачів до цієї групи.

gpasswd -a $USER adm

Вкажіть дозволи:

chmod 4550 /usr/bin/reboot

ls -l outpus повинен виглядати так:

-r-sr-x--- 1 root adm 18928 Mar 13  2015 /usr/bin/reboot

Після цього ви можете просто ввести:

reboot

1

Найпростіше рішення:

sudo echo $USER >> /etc/shutdown.allow

Тоді ви можете використовувати одну з цих команд:

shutdown -ah now   // halt
shutdown -ar now   // reboot

За словами людини , виключення є -a опція для використання позакореневого:

Якщо shutdownвикликається аргументом -a (додайте це до виклику вимкнення в / etc / inittab ), він перевіряє, чи присутній файл /etc/shutdown.allow . Потім він порівнює імена для входу у цьому файлі зі списком людей, які увійшли на віртуальну консоль ...

Він працює в Debian Linux. І для 32 імен користувачів існує обмеження /etc/shutdown.allow.


4
У Fedora, CentOS або RHEL немає такої опції.
fpmurphy

1
Це також не працює для Ubuntu, принаймні, це я отримую від документів. Було б корисно дізнатися, чи це лише функція Debian.
Рафаель Аренс

Ще не в Ubuntu (18.04) у 2020 році =}
тинк
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.