答案1
对于 的 GNU 实现ls
,颜色的含义取决于LS_COLORS
环境变量的设置,通常使用dircolors
命令。
数字代码(的组合)决定使用哪些颜色来指示特定的文件类型:
# Attribute codes:
# 00=none 01=bold 04=underscore 05=blink 07=reverse 08=concealed
# Text color codes:
# 30=black 31=red 32=green 33=yellow 34=blue 35=magenta 36=cyan 37=white
# Background color codes:
# 40=black 41=red 42=green 43=yellow 44=blue 45=magenta 46=cyan 47=white
红色背景上的白色文本由以下组合定义37;41
用于echo "$LS_COLORS"
调查并发现:
su=37;41
因此 SETUID 文件是红色背景上的白色文本(这恰好是默认值)
dircolors --print-database
在没有任何自定义的情况下,为默认设置提供更详细和可读的输出:
SETUID 37;41 # file that is setuid (u+s)
STICKY 37;44 # dir with the sticky bit set (+t) and not other-writable
红色突出显示的唯一其他默认用法是蓝色文字设置了粘性位的目录位于红色背景上。
答案2
当您运行ls -al
或 时ls -F
,以红色背景和白色文本列出的文件表明该setuid
位已翻转。这意味着文件/脚本/程序将以拥有它的用户身份运行,而不是以运行它的用户身份运行。从图中可以看出, 和ping
的ping6
第 4 位设置为s
,而其他setuid
未翻转的位显示为x
。
更多信息请参见: