如何在 Ubuntu 中授予 root 用户文件执行权限?

如何在 Ubuntu 中授予 root 用户文件执行权限?

我一直在网上遵循这个 iptables 指南,并遇到了一个问题,我试图给自己授予对 root 拥有并存储在 root 主文件夹中的文件的执行权限。以下是作为参考的在线文档: iptables 指南

它说:

确保您可以执行脚本

$ chmod +x /root/fw.stop

进而:

您可以运行脚本

$ /root/fw.stop

当我输入命令“chmod +x /root/fw.stop”时,收到错误“chmod:无法访问`/root/fw.stop':权限被拒绝”。

显然,如果我想运行该脚本,我可以通过简单地输入“sudo /root/fw.stop”来实现,但我正在尝试学习;指南的作者是否只是在他列出的语法上犯了错误,还是我做错了什么?

我尝试了“sudo bash -c“chmod +x /root/fw.stop””,然后尝试以我自己的身份使用命令“/root/fw.stop”再次运行脚本,但收到错误“bash: /root/fw.stop: 权限被拒绝”。

答案1

作者犯了许多错误。

  1. 应以 root 身份创建、修改和执行该脚本。
  2. 该脚本缺少指示其应使用什么解释器的信息。

这是你应该做的:

以 root 身份(sudo -s)创建文件 /root/fw.stop:

$ sudo -s
Enter foo's password:
# nano -w /root/fw.stop

然后输入以下脚本(注意第一行的变化):

#!/bin/sh
echo "Stopping firewall and allowing everyone..."
iptables -F
iptables -X
iptables -t nat -F
iptables -t nat -X
iptables -t mangle -F
iptables -t mangle -X
iptables -P INPUT ACCEPT
iptables -P FORWARD ACCEPT
iptables -P OUTPUT ACCEPT

然后你可以对它进行 chmod 操作(仍然以 root 身份):

# chmod +x /root/fw.stop

然后你就可以运行它了(是的,仍然以 root 身份运行):

# /root/fw.stop

如果您想以 root 以外的任何人身份运行它,则应使用 sudo ( sudo /root/fw.stop)。setuid 位是可能的,但这是一个严重的安全漏洞,因为它允许任何人运行脚本。

答案2

我读过作者的文章并发现了这些:

$chmod +x /root/fw.stop

您可以运行脚本

$/root/fw.stop

作者在这里犯了一些错误,让我们看看命令提示符,$ 应为 #, 或者iptables必须以 root 身份运行,同样前进停止

答案3

是的,上面写着:

$ chmod +x /root/fw.stop
$ /root/fw.stop

作者应该写

# chmod +x /root/fw.stop
# /root/fw.stop

因为该文档的其余部分使用#表示应以 root 身份运行的命令和$表示应以用户身份运行的命令,而这些命令对于非 root 用户来说不起作用。

第一个方法不起作用,因为用户无权更改 root 所拥有的文件的权限。

第二个行不通,因为

  1. 用户将不被允许访问该脚本,因为用户没有+x 权限/root
  2. 该脚本将运行iptables,并且只有 root 才允许运行iptables

答案4

我猜测这些关于权限被拒绝的有趣错误是因为当您尝试“chmod +x”时您不是 root 身份。

“sudo -s”有帮助吗?

高血压,

JR

相关内容