LinuxSir.cn,穿越时空的Linuxsir!

 找回密码
 注册
搜索
热搜: shell linux mysql
查看: 2243|回复: 7

如何在shell里面自动执行一个需要root权限的命令?

[复制链接]
发表于 2003-8-21 00:05:10 | 显示全部楼层 |阅读模式
比如adsl-start就必须root来执行。
我想作一个脚本,目前是su - root -c adsl-start
但是每次执行还是要提示输一遍root的密码,怎么可以把这个密码也写在脚本里,这样就不用每次输入了。
另外一个问题为什么sudo -u root adsl-start,总说密码不正确?
发表于 2003-8-21 00:39:15 | 显示全部楼层
这个问题讨论过,答案是--不可以!!!
:sorry
发表于 2003-8-21 08:18:55 | 显示全部楼层
为什么不可以? 用visudo设置一下,
然后直接sudo /usr/sbin/adsl-start
发表于 2003-8-21 11:15:45 | 显示全部楼层
最初由 penny 发表
为什么不可以? 用visudo设置一下,
然后直接sudo /usr/sbin/adsl-start


是配置一下/etc/sudoers这个文件吧?
(我还以为是用脚本改变身份的呢)
 楼主| 发表于 2003-8-21 11:26:44 | 显示全部楼层
我配置了,确总说我语法不对。
我在最后加了一行:
%users ALL=/usr/sbin/adsl-start, /usr/sbin/adsl-stop NOPASSWD: ALL
发表于 2003-8-21 11:37:24 | 显示全部楼层
ALL Your_machine_name=NOPASSWD: /usr/sbin/adsl-start, /usr/sbin/adsl-stop

中间的your_machine_name换成自己的机器名就行了
发表于 2003-8-21 11:41:45 | 显示全部楼层
好好看看下面的文章,是否对你有用?;)

为普通用户分配特权

  有时候我们不想让一个用户有超级用户权限,又想该用户能执行一些超级用户才能执行的命令。我们可以指定某个列入/etc/sudoers文件的普通用户可以利用sudo来执行一些只有超级用户才能执行的命令。
  /etc/sudoers的配置规则如下:
  Host_Alias:用来创建主机别名[可选],列表中的主机必须用逗号隔开,如果要设置多个别名,可以用冒号隔开,保留关键字ALL代表所有主机。例如:
Host_Alias bluesun=grind,glass
  这里用别名bluesun来统称grind和glass两台机器,grind和glass分别是这两台机器的机器名。
  User_Alias:用来创建用户别名[可选],列表中的用户名必须以逗号隔开。其格式同主机别名,保留关键字ALL代表所有命令。
  Cmnd_alias:用来创建命令别名[可选],列表中的命令必须用逗号隔开,如果要定义一个命令无效,可以在该命令前加!号。
  用户命令使用列表:用户命令使用语法如下:
Username host= [Run User's Name ] CommandList
  Username指定一个真正的用户名或定义过的别名,host制定一个真正的主机名或者定义过的主机别名。CommandList可以是以逗号分隔的命令列表,也可以是一个已经定义过的别名。一般情况下,sudo执行的所有命令都是以root身份执行。但是一些特别的程序,比如一些需要安全性比较高的程序不能用root身份执行的,可以指定用"Run User's Name"指向的用户名来执行。例如:
grind glass=/sbin/route
  这一句说明用户grind可以在glass这台主机上运行查看路由表命令。
from:www.linuxaid.com.cn
 楼主| 发表于 2003-8-21 12:08:59 | 显示全部楼层
多谢各位,已经搞定了
您需要登录后才可以回帖 登录 | 注册

本版积分规则

快速回复 返回顶部 返回列表