将所有文件转换为可执行文件有什么害处吗?

将所有文件转换为可执行文件有什么害处吗?

我想安装某些软件。软件包中有很多文件,包括一些 shell 脚本文件。首先我必须选择一些文件,然后使其可执行:

chmod 777 shellscr1

但后来我意识到有许多这样的文件我必须将其设为可执行文件。因此,为了方便起见,我这样做了:

chmod 777 *

现在所有文件都是可执行的。

这样做会有什么严重后果吗(除了安全之外)?

答案1

根据程序的不同,它可能不会产生负面影响,也可能不会使软件无法使用。

例如,更改您的 ~/.ssh 目录的权限,并查看当您尝试 ssh 到另一台机器时会出现什么错误。

某些程序以特定用户身份访问配置文件。如果权限为 777,任何人都可以覆盖该文件,从而他们文件所有者。

答案2

正如其他人指出的那样,没有理由(至少在问题中没有提出)要求文件是全球可写的。类似chmod 755 *或 的内容chmod +x *应该就足够了。

不过,我会进一步缩小答案的范围,给你一个答案确切地你在要求什么。shell 脚本总是以舍邦例如

#!/usr/bin/env bash

因此,下面这段代码将搜索当前目录中以字符开头的任何文件#!/,并使这些文件可执行。换句话说,此命令只会将那些看起来像 shell 脚本的文件标记为可执行文件。

for file in *; do [ "$(head -c 3 "$file")" = '#!/' ] && chmod +x "$file"; done;

答案3

除了安全之外,没有任何严重后果。(当然是从逻辑上讲)

答案4

最初我必须选择一些文件然后使其可执行:

 chmod 777 shellscr1

使它们可执行并不意味着777, 它的意思是755。你至少可以改变这一点,因为显然与安全有关。

使 shell 脚本可执行有时可能会产生一些不利影响。例如,如果你的/bin/sh指向与脚本预期使用的 shell 不同的 shell,您可能会使它基本上无法使用。优秀的程序员会采取措施防止这种情况发生,而通过更改权限,您可能会使他的努力付诸东流。

但是,我再说一遍,这只适用于你的 /bin/sh 指向非标准 shell 的情况。

相关内容