Unix更改权限 - 文件变为绿色

时间:2014-12-19 14:38:44

标签: unix highlight chmod

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

chmod -R go-rwx *

为了更改群组和其他人的权限。 这样做,许多文件变为绿色彩色,甚至是简单的数据文件。 为什么会这样?这是什么意思? 它会以一种糟糕的方式影响我的文件吗? 它们似乎现在正在工作,但我关注它们的一般功能。 谢谢!

2 个答案:

答案 0 :(得分:4)

您提到的命令不太可能导致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

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

将某些文件错误地标记为可执行文件不是一个大问题。他们仍将正常运作。它只是有点混乱,如果当前目录(.)在您的$PATH中,它们可能会显示在命令选项卡中。所以你可以放心地忽略这个问题。

答案 1 :(得分:1)

这是ls功能:

  

- 颜色[= WHEN]
      着色输出。默认为“始终”或可以是“从不”或“自动”。更多信息

     

默认情况下使用颜色来区分文件类型,并使用--color = never。使用--color = auto时,仅当标准输出连接到终端时,ls才会发出颜色代码。 LS_COLORS环境变量可以更改设置。使用dircolors命令进行设置。

您可以尝试使用ls --color=never,但不会再看到颜色了。


您可以使用dircolors -p查看颜色配置 这是可执行文件配置所在的行:

# This is for files with execute permission:
EXEC 01;32

这只是为了帮助您识别文件类型,因此它不会以任何不好的方式影响您的文件。