我想安装某些软件。软件包中有很多文件,包括一些 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 的情况。