Poweroff hoặc Khởi động lại như người dùng bình thường


17

Để chạy lệnh poweroffhoặc rebootmột người cần phải là siêu người dùng. Có dù sao tôi có thể chạy nó như một người dùng bình thường? Tôi chỉ không muốn sudovà nhập mật khẩu của mình mỗi lần khởi động lại hoặc tắt nguồn.


2
Câu trả lời phụ thuộc vào hệ thống init mà distro của bạn sử dụng ... Ví dụ: với phiên systemdhoạt động logind, bạn có thể khởi động lại hoặc tắt nguồn mà không có đặc quyền nâng cao, không có người dùng nào khác vẫn đăng nhập ...
jasonwryan

@jasonwryan Tôi hiện đang sử dụng Ubuntu mà không sử dụng systemdtheo mặc định. Vì vậy, ý bạn là các Distros khác như Arch có thể khởi động lại mà không có đặc quyền bị loại bỏ?
Stormvirux

Có: theo các điều kiện trong bình luận đầu tiên của tôi.
jasonwryan

Câu trả lời:


22

Tôi đã thay đổi /etc/sudoersđể mọi người dùng trong nhóm quản trị viên có thể thực hiện các lệnh sau mà không cần yêu cầu mật khẩu.

sudo halt
sudo reboot
sudo poweroff

Bạn chỉ cần thêm các dòng sau vào /etc/sudoers

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

và thêm chính mình vào nhóm quản trị viên.

Nếu bạn muốn chỉ có một người dùng có thể làm điều này, chỉ cần xóa %adminvà thay thế bằng usernamenhư thế này

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

Bạn có thể tìm hiểu thêm về /etc/sudoersvới man sudoershoặc manpage trực tuyến


4

Bạn cũng có thể tạo một tệp mới theo /etc/sudoers.dtên nó như bạn muốn (tôi đặt tên cho nó 'shutdown') và đặt các dòng sau vào bên trong:

# Allows me to shutdown the system without a password

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

Chỉ cần thay đổi "yourUserName" cho Tên người dùng CỦA BẠN và thêm hoặc xóa các lệnh để sử dụng, cá nhân tôi chỉ sử dụng nó cho shutdown. Một trong những khác biệt chính của việc tạo một tệp cụ thể là tệp sudoers.dnày sẽ tồn tại trong Nâng cấp hệ thống


1
Nếu bạn chọn phương pháp này, hãy đảm bảo rằng /etc/sudoers#includechỉ thị thích hợp để đọc tệp từ đó /etc/sudoers.d/.
patricktokeeffe

2

Bạn cũng có thể đạt được điều này bằng thủ thuật với setuid. Tôi không biết nếu nó sẽ hoạt động trên tất cả các hệ thống, bởi vì đôi khi chúng bỏ qua bit setuid / setgid.

Bạn có thể chỉ định một nhóm người dùng có thể thực hiện thay đổi trạng thái hệ thống trong trường hợp của tôi adm. Sau đó thêm người dùng thích hợp vào nhóm này.

gpasswd -a $USER adm

Chỉ định quyền:

chmod 4550 /usr/bin/reboot

ls -l outpus sẽ trông như thế này:

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

Sau đó, bạn có thể chỉ cần gõ:

reboot

1

Giải pháp đơn giản nhất:

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

Sau đó, bạn có thể sử dụng một trong các lệnh này:

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

Theo người đàn ông tắt máy,một tùy chọn cho việc sử dụng không root:

Nếu shutdownđược gọi với đối số -a (thêm điều này vào lệnh gọi tắt máy trong / etc / inittab ), nó sẽ kiểm tra xem có tập tin /etc/shutdown.allow không . Sau đó, nó so sánh tên đăng nhập trong tệp đó với danh sách những người được đăng nhập trên bảng điều khiển ảo ...

Nó hoạt động trong Debian Linux. Và có giới hạn cho 32 tên người dùng trong /etc/shutdown.allow.


4
Không có tùy chọn như vậy trên Fedora, CentOS hoặc RHEL.
fpmurphy

1
Điều này cũng không hoạt động cho Ubuntu, ít nhất đó là những gì tôi nhận được từ các tài liệu. Sẽ rất hữu ích nếu bạn xem đây chỉ là một tính năng của Debian.
Raphael Ahren

Vẫn chưa có trong Ubuntu (18.04) vào năm 2020 =}
tink
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.