ubuntu server 18.04的ssh普通用户如何在脚本中关机、重启

系统安装、升级讨论
版面规则
我们都知道新人的确很菜,也喜欢抱怨,并且带有浓厚的Windows习惯,但既然在这里询问,我们就应该有责任帮助他们解决问题,而不是直接泼冷水、简单的否定或发表对解决问题没有任何帮助的帖子。乐于分享,以人为本,这正是Ubuntu的精神所在。
回复
gydoesit
帖子: 153
注册时间: 2006-10-10 11:01

ubuntu server 18.04的ssh普通用户如何在脚本中关机、重启

#1

帖子 gydoesit » 2018-11-04 21:16

ubuntu server 18.04,普通用户通过ssh,可以sudo后执行reboot,poweroff,但不sudo不行,如

userrer@hserver:~$ poweroff
Failed to set wall message, ignoring: Interactive authentication required.
Failed to power off system via logind: Interactive authentication required.
Failed to open /dev/initctl: Permission denied
Failed to talk to init daemon.

userr@hserver:~$ reboot
Failed to set wall message, ignoring: Interactive authentication required.
Failed to reboot system via logind: Interactive authentication required.
Failed to open /dev/initctl: Permission denied
Failed to talk to init daemon.

如果在本地登录,则poweroff和reboot都可以直接使用。
目前在ssh登录后,用sudo来关机,重启
但现在要想放在一个脚本中,又不想用root,有什么办法?
头像
astolia
论坛版主
帖子: 6445
注册时间: 2008-09-18 13:11

Re: ubuntu server 18.04的ssh普通用户如何在脚本中关机、重启

#2

帖子 astolia » 2018-11-05 10:56

systemd做重启关机等操作时的权限管理用的是polkit,你需要修改polkit的配置。

代码: 全选

echo '[Remote SSH]
Identity=unix-user:userrer
Action=org.freedesktop.login1.*
ResultAny=yes
ResultInactive=yes
ResultActive=yes' | sudo tee /etc/polkit-1/localauthority/50-local.d/power.pkla
或者你也可以给用户userrer设置成用sudo reboot/poweroff操作不用密码

代码: 全选

echo 'userrer ALL= NOPASSWD:/sbin/reboot
userrer ALL= NOPASSWD:/sbin/poweroff' | sudo tee /etc/sudoers.d/power
回复