权限问题,无法以root身份运行脚本

3

我正在运行一个shell脚本(Script.sh),它本身又调用其他的shell脚本(Script2.sh、Script3.sh等)。我以root用户身份登录,并已赋予所有脚本执行权限。但是当我执行"ls -l"命令时,文件属性列中仍然没有显示脚本的执行权限。"Script.sh"的运行语法如下:

root@freescale $ sh Script.sh

但是这个脚本无法执行被它调用的其他脚本(Script2.sh,Script3.sh)。错误报告为“权限被拒绝”。

我已经使用chmod命令给予了执行权限,但是权限没有改变,脚本(Script2.sh,Script3.sh等)也没有执行。

我希望这个错误是由于Script2.sh在Script3.sh中被调用的原因:

./Script2.sh
./Script3.sh

如果我把它写成: sh Script2.sh 它可以执行,但无法执行Script2.sh内部调用的其他脚本,并报告同样的错误“权限被拒绝”。

很难在没有看到脚本的情况下判断。你能展示一个 "http://sscce.org/" 吗? - Anders R. Bystrup
你使用了什么chmod命令?你需要在脚本上设置执行权限位。 - devnull
可能您的脚本位于已挂载“noexec”标志的分区上。 - umläute
除了devnull的评论之外,ls -l Script*的确切输出是什么? - umläute
@devnull:我使用了chmod +rx Script.sh命令来设置其可执行位,但正如umlaeute所指出的那样,挂载分区的noexec位没有设置,这就是为什么脚本不能通过“./”执行的原因。 - pRAShANT
显示剩余2条评论
2个回答

7

确保您的分区没有使用noexec标志挂载(正如名称所示,这会阻止使任何文件可执行)


1
请确保 script.sh 文件的权限和所有权,并尝试执行。
 # chmod 755 script.sh
 # chown root.root script.sh

谢谢。

1
@Sonny:chmod u+x script.shchmod 0755 script.sh; chown root.root之间的区别在于前者只确保用户可以执行脚本,而后者则确保所有人都可以执行它,只有root用户才能修改它。 - Markus W Mahlberg
通常情况下,重新分配所有权既不正确也不必要。 - tripleee
注意表单“chown root.root ...”:并非所有系统都接受该点。 - linuxfan says Reinstate Monica

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接