Unix-Changing Permissions-Files 变绿

eva*_*ess 2 unix highlight chmod

我在 unix 中的文件夹上使用了这个命令:

chmod -R go-rwx *
Run Code Online (Sandbox Code Playgroud)

以更改组和其他人的权限。这样做,许多文件变成绿色,甚至是简单的数据文件。为什么会这样?这是什么意思?它会以不好的方式影响我的文件吗?它们现在似乎可以工作,但我担心它们的一般功能。谢谢!

ama*_*rea 7

您提到的命令不太可能导致ls以绿色打印您的文件。当ls颜色被启用,可执行文件都打印在浅绿色的默认。由于chmod +R go-rwx只删除权限,它不会导致任何文件被标记为可执行文件,因此不会将ls它们打印为绿色。

相反,我认为造成这种情况的原因是您必须输入一个不同的命令,它不小心将所有这些文件标记为可执行文件。这实际上很常见。这是典型的场景:您想让目录和所有子目录对所有用户都可读并且可以输入。所以你这样做chmod -R a+rx top_directory。这有效,但作为副作用,您还为所有这些目录中的所有普通文件设置了可执行标志。ls如果启用颜色,这将使它们以绿色打印,这在我身上发生过几次。您可以通过这样做chmod -R a+rX top_directory来避免这种情况,这只会为目录设置可执行位。

为了让你的文件不再是绿色的,你必须清除那些可执行位。如果这些目录中的文件实际上都不应该是可执行的,这很简单:

$ chmod -R a-x top_directory
$ chmod -R u+X top_directory
Run Code Online (Sandbox Code Playgroud)

这将删除所有文件和目录的可执行标志,然后仅将其添加回目录(对于当前用户)。但是,如果某些文件实际上应该是可执行的,则您必须仔细检查它们并手动修复问题,这可能很乏味。

将某些文件错误地标记为可执行文件并不是什么大问题。它们仍将正常运行。它只是有点乱,如果当前目录 ( .) 在您的$PATH. 所以你可以放心地忽略这个问题。