在 ls 中,如何删除粘性位的背景颜色

在 ls 中,如何删除粘性位的背景颜色

我如何才能删除粘性位的背景颜色。LSCOLORS 看起来像这样 export LSCOLORS="Gxfxcxdxbxegedabagacad"

使用 oh-my-zsh

编辑:正如建议的那样,我进行了测试,LSCOLORS="" ls但颜色仍然存在。

在此处输入图片描述

答案1

你的例子没有显示粘着位, 表明设置组ID. (粘性是chmod +t,你有chmod g+s。)

你确定你需要这个吗?我觉得这不对。

在目录上设置 gid 意味着在该目录中创建的文件将拥有目录中的组,而不是用户的主要组,所以这非常有用。

但是在普通的、不可执行的文件上设置gid 不会做任何有用的事情。

我建议从所有文件中删除 setgid(但将其保留在目录中),如下所示:

find . -type f -exec chmod g-s {} \;

或者您可以使用以下方法强制对文件和目录设置一组已知的权限:

find . \( -type d -exec chmod g=rwsx {} \; \) -o \( -type f -exec chmod g=rw {} \; \)

下次,不要使用chmod -R g+sfind -exec chmod g+s {} \;,而是这样做:

find . -type d -exec chmod g+s {} \;

这样它只会影响目录。


背景

ls颜色 setgid 文件,因为如果该文件也是可执行的,它将以额外的权限运行。

我认为黄色和黑色突出显示是为了让你仔细查看它们,以确保它们是你所期望的,而不是恶意用户或 rootkit 等安装的某些新文件。

跑步

find /usr -perm -2000

查看一些使用这些权限的程序示例。

在我的系统上它列出

/usr/bin/wall
/usr/bin/chage
/usr/bin/expiry
...

例如r-s/usr/bin/wall

$ ls -l /usr/bin/wall
-rwxr-sr-x 1 root tty 9888 2008-04-29 11:57 /usr/bin/wall

意味着该wall程序可以将输出写入任何用户的 tty,即使它不是以 root 身份运行。


如果完成上述操作后,您仍然想改变颜色,请尝试以下步骤:

LS_COLORS=${LS_COLORS/sg=30;43:/sg=00:}

放置它的位置取决于您的设置,但放在 ~/.zshrc 的末尾就可以了。

由于某种原因,删除sg(setgid)条目会使其使用默认颜色,而不是不使用特殊颜色。

相关内容