脚本内命令权限问题?

pro21ms4
脚本内命令权限问题?

脚本内容如下:
#!/bin/bash

pppoe-start

if [ $? -eq 1 ]; then
    pppoe-stop
fi

$ls /usr/bin/ppp -l
-rwsr-sr-x 1 root root 66 07-01 09:22 /usr/bin/ppp

问题: 已设置S 位, 为什么普通用户执行 说没有权限?  怎么才能让普通用户执行这个脚本?

dotnetdotcn
s,表示set UID或set GID。位于user或group权限组的第三位置。如果在user权限组中设置了s位,则当文件被执行时,该文件是以文件所有者UID而不是用户UID执行程序。如果在group权限组中设置了s位,当文件被执行时,该文件是以文件所有者GID而不是用户GID执行程序。

跟你想的应该不是一回事

无声无息
是你的ppp没有权限,还是pppoe-stop没有权限

walkerxk
/usr/bin/ppp是脚本?由于安全问题,脚本的S位已经没用了,可以用shc编译成二进制文件。

pro21ms4
1. 就是不想每次都 sudo pppoe-start;  sudo pppoe-stop 所以再写这个脚本. 想连接或断开只输入ppp就行
2. ppp 是由普通用户执行的. 但设置了 S位. ppp的owner是root
3. 编译成二进制还是一样的. 关键脚本内的命令 没有root权限,  但普通用户执行passwd命令心改/etc/passwd是怎么工作的呢?

[[i] 本帖最后由 pro21ms4 于 2008-7-1 23:23 编辑 [/i]]

walkerxk
编译成二进制应该是没有问题了,没有脚本内命令的权限的概念的,执行的命令,要看执行的人,你用root执行ppp难道也不行么?其实你可以用sudo ppp的。