我试图创建一个只能由root读取/写入但可以由每个人执行的shell脚本。我创建了一个文件test.sh,将所有权设置为" chown root:me test.sh"并将权限设置为" chmod 711 test.sh",希望这可以解决问题。但是,这会导致文件始终需要sudo才能执行。是否可以编辑权限,以便任何人(不使用sudo)都可以执行脚本,但只有root(使用sudo)可以读/写文件?
答案 0 :(得分:2)
这是不可能实现的,至少使用shell脚本。
实际上,在执行的那一刻,shell程序(我假设Bash)需要读取shell文件的内容,并且该进程使用您的用户名和权限运行。
话虽如此,BASH程序(ZSH,SH或任何其他shell遵循相同的规则)需要能够读取文件的内容,这只能通过授予读取权限+ r来实现。因此,最低限度是755许可模式。
另一种方法是运行一个实际的程序来完成这项工作,并且不需要读取权限才能执行。但这是一种完全不同的模式。
此回复也解释了这一点。
https://unix.stackexchange.com/questions/34202/can-a-script-be-executable-but-not-readable