C 执行文件需要读取权限吗?
我正在尝试在c(Linux)上制作一个简单的c-shell程序,它将执行脚本C 执行文件需要读取权限吗?,c,linux,shell,executable,file-permissions,C,Linux,Shell,Executable,File Permissions,我正在尝试在c(Linux)上制作一个简单的c-shell程序,它将执行脚本 我需要读取脚本文件才能执行它,但是如果它只有执行权限而没有读取权限,我如何读取它呢?执行文件不需要读取权限。 事实上,如果您有读取权限,但没有执行权限,则无法执行该文件。 执行权限允许您请求系统执行脚本文件 尝试: system("script.sh"); 为了执行脚本(在示例script.sh中) 您还可以使用: execve("script.sh"); 这将运行脚本,用指定脚本中的脚本替换您的脚本,并保持与脚本
我需要读取脚本文件才能执行它,但是如果它只有执行权限而没有读取权限,我如何读取它呢?执行文件不需要读取权限。 事实上,如果您有读取权限,但没有执行权限,则无法执行该文件。 执行权限允许您请求系统执行脚本文件 尝试:
system("script.sh");
为了执行脚本(在示例script.sh中)
您还可以使用:
execve("script.sh");
这将运行脚本,用指定脚本中的脚本替换您的脚本,并保持与脚本相同的pid(如图所示)执行文件不需要读取权限。 事实上,如果您有读取权限,但没有执行权限,则无法执行该文件。 执行权限允许您请求系统执行脚本文件 尝试:
system("script.sh");
为了执行脚本(在示例script.sh中)
您还可以使用:
execve("script.sh");
这将运行脚本,用指定脚本中的脚本替换您的脚本,并保持与脚本相同的pid(如图所示)执行此操作的经典方法是将包装器C应用程序设为根用户。无论权限如何,Root用户都可以读取所有内容。不过,这也带来了一大堆警告。确保你没有打开一个更大的安全漏洞来关闭一个小的安全漏洞。这样做的经典方法是将包装器C应用程序设为root。无论权限如何,Root用户都可以读取所有内容。不过,这也带来了一大堆警告。确保你没有通过打开一个更大的安全漏洞来关闭一个小的安全漏洞。简而言之
- 只能使用执行权限执行的二进制文件
- 脚本是文本文件,因此您需要读取权限
- 只能使用执行权限执行的二进制文件
- 脚本是文本文件,因此您需要读取权限
所以,您需要玩一些具有组所有权、sudo或类似功能的游戏。是的,您需要
读取
权限才能执行脚本
但是,我想提到一种可能性,即另一个用户
在没有r
文件权限的情况下运行脚本
您可以允许someone以sudo
的身份执行somescript
,作为另一个拥有r+x
文件访问权限的用户。
但是,您应该有权访问/etc/sudoers
(即成为root
,或要求超级用户将记录从下面添加到etc/sudoers
)
在中找到解决方案
和
是的,您需要
读取
权限才能执行脚本
但是,我想提到一种可能性,即另一个用户
在没有r
文件权限的情况下运行脚本
您可以允许someone以sudo
的身份执行somescript
,作为另一个拥有r+x
文件访问权限的用户。
但是,您应该有权访问/etc/sudoers
(即成为root
,或要求超级用户将记录从下面添加到etc/sudoers
)
在中找到解决方案
和
你不能,你还需要给文件读权限。那么bash如何在没有读权限的情况下执行文件&如果你是用C编写的,你应该能够调用
system(…)
或execlp(…)
等来执行可执行程序(无论是脚本、二进制还是其他)。您不需要先“读取”它来执行它。@ПППССПППСППСПППСПППаааааааМаС。。。不可能<代码>chmod 400==权限被拒绝<代码>chmod 100==权限被拒绝chmod 500
==执行脚本。如果您不能执行脚本的副本,您还需要授予文件读取权限。那么bash如何在没有读取权限的情况下执行文件&如果您是用C编写的,您应该能够调用system(…)
或execlp(…)
等来执行可执行程序(不管是脚本、二进制还是其他格式)你不“读”它首先要执行它。@ППССССПССПССППССПСПСПССППСППСППСПСППСааааМаааааааааа107。不幸的是,我不能使用system(),我使用execve执行程序,但脚本只是文本file@Deduplicator嗯,你应该将内容复制到另一个你有执行权限的文件中……但那是另一回事!@clami219:或者直接转到用户空间动态加载程序,或者调用解释器,@Deduplicator Ok,但这不是这里的主题……我的意思是什么在这里,执行脚本(在这个术语的经典意义上,使用系统调用)不需要读取权限。如果可以读取它,当然可以执行它,但不能直接执行。不幸的是,我不能使用system(),我使用execve执行程序,但脚本只是文本file@Deduplicator嗯,你应该将内容复制到另一个你有执行权限的文件中……但那是另一回事!@clami219:或者直接转到用户空间动态加载程序,或者调用解释器,@Deduplicator Ok,但这不是这里的主题……我的意思是什么在这里,执行脚本不需要读权限(在这个术语的经典意义上,使用系统调用)。这是最好的答案!这是最好的答案!