LinuxSir.cn,穿越时空的Linuxsir!

 找回密码
 注册
搜索
热搜: shell linux mysql
楼主: 自由飞翔

有没有办法用shell脚本做到自动 su - root[基本解决]

[复制链接]
 楼主| 发表于 2004-3-12 12:22:35 | 显示全部楼层
我又加了 /sbin/adsl-connect

可是...

[freel@localhost freel]$ /sbin/adsl-connect
/sbin/adsl-connect: You must be root to run this script
发表于 2004-3-12 12:32:52 | 显示全部楼层
最初由 自由飞翔 发表
我又加了 /sbin/adsl-connect

可是...

[freel@localhost freel]$ /sbin/adsl-connect
/sbin/adsl-connect: You must be root to run this script

是要root才能执行这个命令吗?你现在是root 吗?
 楼主| 发表于 2004-3-12 12:36:13 | 显示全部楼层
如果是root,还有什么问题

我是这个意思
==============================================


技巧:为普通用户分配特权

有时候我们不想让一个用户有超级用户权限,又想该用户能执行一些超级用户才能执行的命令。我们可以指定某个列入/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
发表于 2004-3-12 13:03:03 | 显示全部楼层
你说的我都不懂。man visudo

  1. ERRORS
  2.        sudoers file busy, try again later.
  3.            Someone else is currently editing the sudoers file.
  4.                                                                                 
  5.        /etc/sudoers.tmp: Permission denied
  6.            You didn't run visudo as root.
  7.                                                                                 
  8.        Can't find you in the passwd database
  9.            Your userid does not appear in the system passwd file.
  10.                                                                                 
  11.        Warning: undeclared Alias referenced near ...
  12.            Either you are using a {User,Runas,Host,Cmnd}_Alias before defining
  13.            it or you have a user or hostname listed that consists solely of
  14.            uppercase letters, digits, and the underscore ('_') character.  If
  15.            the latter, you can ignore the warnings (sudo will not complain).
  16.            In -s (strict) mode these are errors, not warnings.
复制代码

错误的提示和你的不同??不懂阿。。。
 楼主| 发表于 2004-3-12 17:41:57 | 显示全部楼层

/////////为普通用户分配特权////////////


现在还是不太明白这个东西


我都有点晕了~~~~

但是.... 这个错误是怎么出来的?

  1. ERRORS
  2.        sudoers file busy, try again later.
  3.            Someone else is currently editing the sudoers file.
  4.                                                                                 
  5.        /etc/sudoers.tmp: Permission denied
  6.            You didn't run visudo as root.
  7.                                                                                 
  8.        Can't find you in the passwd database
  9.            Your userid does not appear in the system passwd file.
  10.                                                                                 
  11.        Warning: undeclared Alias referenced near ...
  12.            Either you are using a {User,Runas,Host,Cmnd}_Alias before defining
  13.            it or you have a user or hostname listed that consists solely of
  14.            uppercase letters, digits, and the underscore ('_') character.  If
  15.            the latter, you can ignore the warnings (sudo will not complain).
  16.            In -s (strict) mode these are errors, not warnings.
复制代码
 楼主| 发表于 2004-3-12 17:43:02 | 显示全部楼层
还有,这个不知道写的对不对?

/etc/sudoers


  1. freel localhost=/sbin/adsl-start
  2. freel localhost=/sbin/adsl-connect
  3. freel localhost=/sbin/adsl-ctop
复制代码


我的脑袋真的有点晕了,有点感冒
发表于 2004-3-12 17:43:39 | 显示全部楼层
这是从man visudo里抄来的。。。。。
发表于 2004-3-12 18:16:22 | 显示全部楼层

回复: 回复: 回复: 有没有办法用shell脚本做到自动 su - root

最初由 自由飞翔 发表
这个东西可以用,但是很慢,而且有时好使有时不好使

谢谢兄弟

是吗 ? 我再回去看看
发表于 2004-3-12 18:32:09 | 显示全部楼层
我试了 n 遍, 可以了, 并且口令不再显示出来

  1. #!/usr/bin/expect -f

  2. spawn su - root
  3. expect -exact "Password: "
  4. sleep 1
  5. send -- "你的root口令\r"
  6. interact
复制代码
发表于 2004-3-12 18:56:19 | 显示全部楼层
我的/etc/sudoers设置:
  1. javalee Linux=NOPASSWD: /sbin/adsl-stop,/sbin/adsl-start
复制代码
其中:
javalee是用户名,
Linux是我的主机名
NOPASSWD: /sbin/adsl-stop,/sbin/adsl-start 这些命令不需要密码
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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