是否需要读取权限才能执行文件?

时间:2014-05-01 11:10:47

标签: c linux shell executable file-permissions

我正在尝试在C(用于Linux)上创建一个简单的c-shell程序来执行脚本。

我需要读取一个脚本文件才能执行它,但如果它只具有执行权限且没有读取权限,我该如何阅读呢?

4 个答案:

答案 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/77538https://stackoverflow.com/a/21309969/1566267

答案 2 :(得分:0)

为了执行文件,您不需要读取权限。 实际上,如果您具有读取权限,但没有执行权限,则无法执行该文件。 执行权限允许您要求系统执行脚本文件。

尝试:

system("script.sh");

为了执行脚本(在示例script.sh中)。

你也可以使用:

execve("script.sh");

这将运行脚本替换脚本与指定脚本中的脚本保持与脚本相同的pid(如图here所示)

答案 3 :(得分:0)

这样做的经典方法是使包装器C应用程序setuid root。无论权限如何,Root都可以读取所有内容。这附带了一大堆警告。确保你没有通过打开更大的安全孔来关闭一个小安全漏洞。