[已解决]菜鸟提问:如何让普通用户可以执行这l两句话

sh/bash/dash/ksh/zsh等Shell脚本
aihaozhe2
帖子: 295
注册时间: 2009-08-19 20:21

[已解决]菜鸟提问:如何让普通用户可以执行这l两句话

#1

帖子 aihaozhe2 » 2011-09-17 13:29

如何让普通用户可以执行这l两句话:
echo "mem" > /sys/power/state
echo "disk" > /sys/power/state
上次由 aihaozhe2 在 2013-10-29 21:51,总共编辑 1 次。
头像
missU
帖子: 1610
注册时间: 2010-03-28 16:16
来自: 你知道么?

Re: 菜鸟提问:如何让普通用户可以执行这l两句话

#2

帖子 missU » 2011-09-17 13:34

-rw-r--r-- 1 root root 4096 9月 17 12:21 /sys/power/state
普通用户不可能有权限去执行的。
该文件的读写权限属于root

代码: 全选

shutdown -h now && 睡觉
aihaozhe2
帖子: 295
注册时间: 2009-08-19 20:21

Re: 菜鸟提问:如何让普通用户可以执行这l两句话

#3

帖子 aihaozhe2 » 2011-09-17 13:37

是啊,我知道这个属性。

我没有安装复杂的wm,比如gnome,所以现在想实现待机/休眠,那么应该怎么办呢
头像
missU
帖子: 1610
注册时间: 2010-03-28 16:16
来自: 你知道么?

Re: 菜鸟提问:如何让普通用户可以执行这l两句话

#4

帖子 missU » 2011-09-17 13:44

关上显示器

代码: 全选

shutdown -h now && 睡觉
头像
cuihao
帖子: 4793
注册时间: 2008-07-24 11:33
来自: 郑州
联系:

Re: 菜鸟提问:如何让普通用户可以执行这l两句话

#5

帖子 cuihao » 2011-09-17 13:44

:em06 编一个程序,然后给他SUID?
求人不如求它仨: 天蓝的Wiki 屎黄的Wiki 绿
Site: CUIHAO.TK    Twitter: @cuihaoleo
Machine: Athlon64 X2 5200+ / 2x2GB DDR2-800 / GeForce GTS 450
AD: ~まだ見ぬ誰かの笑顔のために~
头像
missU
帖子: 1610
注册时间: 2010-03-28 16:16
来自: 你知道么?

Re: 菜鸟提问:如何让普通用户可以执行这l两句话

#6

帖子 missU » 2011-09-17 13:45

要不就

代码: 全选

sudo echo "mem" > /sys/power/state
或者
sudo echo "disk" > /sys/power/state

代码: 全选

shutdown -h now && 睡觉
头像
lilydjwg
论坛版主
帖子: 4258
注册时间: 2009-04-11 23:46
系统: Arch Linux
联系:

Re: 菜鸟提问:如何让普通用户可以执行这l两句话

#7

帖子 lilydjwg » 2011-09-17 13:48

代码: 全选

dbus-send --system --print-reply --dest=org.freedesktop.Hal /org/freedesktop/Hal/devices/computer org.freedesktop.Hal.Device.SystemPowerManagement.Suspend int32:0
头像
lilydjwg
论坛版主
帖子: 4258
注册时间: 2009-04-11 23:46
系统: Arch Linux
联系:

Re: 菜鸟提问:如何让普通用户可以执行这l两句话

#8

帖子 lilydjwg » 2011-09-17 13:49

missU 写了:要不就

代码: 全选

sudo echo "mem" > /sys/power/state
或者
sudo echo "disk" > /sys/power/state
这样不行的。
aihaozhe2
帖子: 295
注册时间: 2009-08-19 20:21

Re: 菜鸟提问:如何让普通用户可以执行这l两句话

#9

帖子 aihaozhe2 » 2011-09-17 18:32

lilydjwg 写了:

代码: 全选

dbus-send --system --print-reply --dest=org.freedesktop.Hal /org/freedesktop/Hal/devices/computer org.freedesktop.Hal.Device.SystemPowerManagement.Suspend int32:0
:em06 这是什么? 我不懂dbus。。

哦,对了,好像以前有一个把用户加入powerdev组的做法,让普通用户获得电源管理的权力。。。

现在debian squeeze没有这个组阿。。还是我没安装相应软件包???我不要其他的wm,要保持现在的openbox
tusooa
帖子: 6548
注册时间: 2008-10-31 22:12
系统: 践兔
联系:

Re: 菜鸟提问:如何让普通用户可以执行这l两句话

#10

帖子 tusooa » 2011-09-18 13:29

sudo sh -c 'echo "mem" > /sys/power/state'
sudo sh -c 'echo "disk" > /sys/power/state'

代码: 全选

] ls -ld //
头像
wzssyqa
帖子: 4010
注册时间: 2008-04-07 17:36
来自: 泰安人在阜新

Re: 菜鸟提问:如何让普通用户可以执行这l两句话

#11

帖子 wzssyqa » 2011-09-19 0:14

cuihao 写了::em06 编一个程序,然后给他SUID?
觉得这是正解
头像
bigsun
帖子: 301
注册时间: 2009-01-11 16:05

Re: 菜鸟提问:如何让普通用户可以执行这l两句话

#12

帖子 bigsun » 2011-09-19 8:44

Openbox下关机、重启、注销、休眠等功能的实现

2011-03-14 10:36:49| 分类: 默认分类 |字号 订阅
退出Openbox : openbox --exit

关机 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.Hibernate

或者:
编辑/etc/sudoers,加入
ALL ALL=NOPASSWD :/sbin/shutdown
然后编辑Openbox菜单:

<item label="Reboot">
<action name="Execute"> <execute>sudo 'shutdown -r now'</execute> </action></item>
<item label="Shut down">
<action name="Execute"> <execute>sudo 'shutdown -h now'</execute> </action></item>
aihaozhe2
帖子: 295
注册时间: 2009-08-19 20:21

Re: 菜鸟提问:如何让普通用户可以执行这l两句话

#13

帖子 aihaozhe2 » 2011-09-19 9:06

E感谢各位的回答。。

问一下,执行ls的代码出现错误信息是怎么回事

rror org.freedesktop.DBus.Error.ServiceUnknown: The name org.freedesktop.UPower was not provided by any .service files

而且,我没有安装sudo命令,没有sudoers文件
头像
bigsun
帖子: 301
注册时间: 2009-01-11 16:05

Re: 菜鸟提问:如何让普通用户可以执行这l两句话

#14

帖子 bigsun » 2011-09-20 7:52

看看/usr/share/dbus-1/interfaces/org.freedesktop.UPower.xml
此文件属于upower包(arch linux).
To suspend:
dbus-send --system --print-reply --dest=org.freedesktop.UPower /org/freedesktop/UPower org.freedesktop.UPower.Suspend
Shutdown, reboot and suspend using gdm-control

In the latest Openbox release (3.4.7), you can shutdown, reboot or suspend from within Openbox with gdm-control, by telling GDM (The Gnome Display Manager) to perform these actions.

To shutdown the computer with gdm-control, use the following command:

gdm-control --shutdown && openbox --exit

To restart, use this command:

gdm-control --reboot && openbox --exit

And to suspend, use the following line:

gdm-control --suspend
http://urukrama.wordpress.com/openbox-guide/#shutdown2
funicorn
帖子: 1318
注册时间: 2005-09-13 4:56
系统: Ubuntu Jammy Jellyfi

Re: 菜鸟提问:如何让普通用户可以执行这l两句话

#15

帖子 funicorn » 2011-09-20 9:04

楼主问了一个简单的问题,被楼上几位发散到火星去了,两种办法

1. 调用bash

代码: 全选

sudo bash -c "echo "mem" > /sys/power/state"
调用bash完整执行后面的语句

2 管道

代码: 全选

echo "mem" |sudo tee /sys/power/state
第2种是标准做法。
回复