我正在尝试在C(用于Linux)上创建一个简单的c-shell程序来执行脚本。
我需要读取一个脚本文件才能执行它,但如果它只具有执行权限且没有读取权限,我该如何阅读呢?
答案 0 :(得分:2)
简而言之,
所以,你需要玩团体所有权,sudo或类似游戏。
答案 1 :(得分:1)
是的,您需要read
权限来执行脚本。
但是,我想提及another_user
在没有r
权限的情况下运行脚本的一种可能性。
您可以允许 某人 以somescript
执行sudo
another_user 对文件具有r+x
访问权限的人。
但是,您应该有权访问/etc/sudoers
(即成为root
,或要求超级用户将记录从下方添加到etc/sudoers
)
# Run script as the user 'another_user' without asking for password
somebody ALL = (another_user) NOPASSWD: /usr/bin/somescript
找到解决方案 https://unix.stackexchange.com/a/77538和 https://stackoverflow.com/a/21309969/1566267
答案 2 :(得分:0)
为了执行文件,您不需要读取权限。 实际上,如果您具有读取权限,但没有执行权限,则无法执行该文件。 执行权限允许您要求系统执行脚本文件。
尝试:
system("script.sh");
为了执行脚本(在示例script.sh中)。
你也可以使用:
execve("script.sh");
这将运行脚本替换脚本与指定脚本中的脚本保持与脚本相同的pid(如图here所示)
答案 3 :(得分:0)
这样做的经典方法是使包装器C应用程序setuid root。无论权限如何,Root都可以读取所有内容。这附带了一大堆警告。确保你没有通过打开更大的安全孔来关闭一个小安全漏洞。