Difference between revisions of "Allow users to shutdown (简体中文)"

From ArchWiki
Jump to: navigation, search
m
Line 20: Line 20:
 
  # pacman -S sudo
 
  # pacman -S sudo
  
然后,在 root 用户下用 visudo 命令添加以下到 /etc/sudoers 文件的末端。替换其中的 '''user''' 为你的用户名, '''hostname''' 为你的主机名。
+
然后,在 root 用户下用 {{Ic|visudo}} 命令添加以下到 {{Ic|/etc/sudoers}} 文件的末端。替换其中的 {{Ic|'''user'''}} 为你的用户名, {{Ic|'''hostname'''}} 为你的主机名。
  
 
  '''user''' '''hostname'''=NOPASSWD: /sbin/shutdown -h now
 
  '''user''' '''hostname'''=NOPASSWD: /sbin/shutdown -h now
Line 29: Line 29:
 
  '''user''' '''hostname'''=NOPASSWD: /sbin/shutdown -h now,/sbin/reboot
 
  '''user''' '''hostname'''=NOPASSWD: /sbin/shutdown -h now,/sbin/reboot
  
现在你的用户可以用 sudo shutdown -h now 命令关机, reboot 命令重启了。
+
现在你的用户可以用 {{Ic|sudo shutdown -h now}} 命令关机, {{Ic|sudo reboot}} 命令重启了。希望关闭系统的用户也可以使用 {{Ic|poweroff}} 或 {{Ic|halt}}。
  
{{Box Note|For users wishing to power down a system <tt>poweroff</tt> or <tt>shutdown -P now</tt> may be preferable to <tt>shutdown -h now</tt> as it leaves no doubt as to the intention of the user initiated command.|}}
+
为了方便起见,你也可用给用户的 {{ic|~/.bashrc}}加入以下别名 (或加入 {{ic|/etc/bash.bashrc}} 使全系统生效):
  
== 方法三: Xfce ==
+
alias reboot="sudo reboot"
在Xfce下,如果你希望用户利用Hal关机,需要安装 sudo 。然后用 visudo -f 命令添加以下内容到 /etc/sudoers 中
+
alias poweroff="sudo poweroff"
 +
alias halt="sudo halt"
  
* 对所有用户:
+
== 方法三: consolekit ==
  %users '''hostname'''=NOPASSWD:/usr/lib/xfce4/xfsm-shutdown-helper
+
查看[[ConsoleKit]]获取使用说明。你也可以使用dbus进行电源操作:
* 对单一用户:
+
*关机:
  '''user''' '''hostname'''=NOPASSWD:/usr/lib/xfce4/xfsm-shutdown-helper
+
  dbus-send --system --print-reply --dest="org.freedesktop.ConsoleKit" /org/freedesktop/ConsoleKit/Manager org.freedesktop.ConsoleKit.Manager.Stop
 +
*重启:
 +
dbus-send --system --print-reply --dest="org.freedesktop.ConsoleKit" /org/freedesktop/ConsoleKit/Manager org.freedesktop.ConsoleKit.Manager.Restart
 +
*挂起:
 +
  dbus-send --system --print-reply --dest="org.freedesktop.UPower" /org/freedesktop/UPower org.freedesktop.UPower.Suspend
 +
*休眠 (挂起到硬盘):
 +
dbus-send --system --print-reply --dest="org.freedesktop.UPower" /org/freedesktop/UPower org.freedesktop.UPower.Hibernate
  
替换其中的 '''user''' 为你的用户名, '''hostname''' 为你的主机名(你可以用hostname命令得到它)。
+
方法生效的前提是用户具有调用[[PolicyKit]]关机的权限。默认情况下用户组“wheel”具有此权限。可以编辑/etc/polkit-1/localauthority.conf.d/50-localauthority.conf来改变权限用户组。
这样你定义了的用户的“关机”和“重启”选项就激活了。
+
 
 +
{{Note|使用dbus挂起和休眠需要安装{{Pkg|upower}}。}}
 +
 
 +
== 方法四: acpid ==
 +
使用[[acpid]]可以允许任何人通过电源按钮物理关机。

Revision as of 02:44, 28 February 2012

This template has only maintenance purposes. For linking to local translations please use interlanguage links, see Help:i18n#Interlanguage links.


Local languages: Català – Dansk – English – Español – Esperanto – Hrvatski – Indonesia – Italiano – Lietuviškai – Magyar – Nederlands – Norsk Bokmål – Polski – Português – Slovenský – Česky – Ελληνικά – Български – Русский – Српски – Українська – עברית – العربية – ไทย – 日本語 – 正體中文 – 简体中文 – 한국어


External languages (all articles in these languages should be moved to the external wiki): Deutsch – Français – Română – Suomi – Svenska – Tiếng Việt – Türkçe – فارسی

?最简单的方法:把用户加入到power组中?

把你想允许有关机权限的用户加入到power组中,这是我常干的一件事,不知道是否有通用性。

方法一: setuid

如果你想让用户有关机和重启的权力,你可以修改 halt 命令的许可权限,reboot 命令是 halt 命令的一个symlink,所以它无需修改。root用户登录输入:

# chmod +s /sbin/halt

注意这样做被认为是一种对安全的威胁,因为包括root在内的所有用户都可以关机和重启了。

Topic: http://bbs.archlinux.org/viewtopic.php?id=2787

方法二: sudo

比较安全些的方法是使用 sudo 命令。首先安装 sudo:

# pacman -S sudo

然后,在 root 用户下用 visudo 命令添加以下到 /etc/sudoers 文件的末端。替换其中的 user 为你的用户名, hostname 为你的主机名。

user hostname=NOPASSWD: /sbin/shutdown -h now
user hostname=NOPASSWD: /sbin/reboot

或者合并为一行表示

user hostname=NOPASSWD: /sbin/shutdown -h now,/sbin/reboot

现在你的用户可以用 sudo shutdown -h now 命令关机, sudo reboot 命令重启了。希望关闭系统的用户也可以使用 poweroffhalt

为了方便起见,你也可用给用户的 ~/.bashrc加入以下别名 (或加入 /etc/bash.bashrc 使全系统生效):

alias reboot="sudo reboot"
alias poweroff="sudo poweroff"
alias halt="sudo halt"

方法三: consolekit

查看ConsoleKit获取使用说明。你也可以使用dbus进行电源操作:

  • 关机:
dbus-send --system --print-reply --dest="org.freedesktop.ConsoleKit" /org/freedesktop/ConsoleKit/Manager org.freedesktop.ConsoleKit.Manager.Stop
  • 重启:
dbus-send --system --print-reply --dest="org.freedesktop.ConsoleKit" /org/freedesktop/ConsoleKit/Manager org.freedesktop.ConsoleKit.Manager.Restart
  • 挂起:
dbus-send --system --print-reply --dest="org.freedesktop.UPower" /org/freedesktop/UPower org.freedesktop.UPower.Suspend
  • 休眠 (挂起到硬盘):
dbus-send --system --print-reply --dest="org.freedesktop.UPower" /org/freedesktop/UPower org.freedesktop.UPower.Hibernate

方法生效的前提是用户具有调用PolicyKit关机的权限。默认情况下用户组“wheel”具有此权限。可以编辑/etc/polkit-1/localauthority.conf.d/50-localauthority.conf来改变权限用户组。

Note: 使用dbus挂起和休眠需要安装upower

方法四: acpid

使用acpid可以允许任何人通过电源按钮物理关机。