$ touch .a
$ touch b
$ /bin/ls
b
$ /bin/ls -A
.a b
$ sudo /bin/ls
.a b
当root和root调用时,它显示隐藏文件(名称以点开头)。以普通用户身份运行时未显示它们(如预期)。这与Linux上的
ls
(来自coreutils
的ls
)的功能不同。#1 楼
事实证明,此功能不是Apple特有的。这通常是BSD系统的功能。 /* Root is -A automatically. */
if (!getuid())
f_listdot = 1;
最初,我能够追溯到4.4BSD-Lite的来源。在1994年的FreeBSD提交中已经导入了这些资源。
然后发现了1993年的NetBSD提交,声称它是从386BSD导入代码,并且该功能已经存在。此外,此提交表明,在1991年的386BSD 0.0版的开发过程中,据我所知,它是在4.3左右从BSD分叉的。
此注释是在开发期间首次出现4.3BSD-Reno在此提交(1989年6月27日)中的标题为“新ls的第一个工作版本”的版本。原始评论说:
/* root sees all files automatically */
当天晚些时候进行了更改(我不是不过,请确保该存储库中的时间戳完全正确)以:
/* root is -A automatically */
在1992年添加了大写字母和句点,使注释变成了现在的注释:
/* Root is -A automatically. */
但是从快照中可以看出,此行为在1979年5月9日的2BSD中已经存在:
Aflg = getuid() == 0;
我当时找不到任何实际的历史记录,但是也有这张1977年的1BSD快照,没有这些内容。而且实际上没有
-A
标志。所以该功能似乎是在1977年11月(当时正在开发1BSD)和1979年5月2BSD发行之间引入的。 br />
在这次调查中,我还发现了
-I
标志,该标志于2005年添加到FreeBSD中以覆盖此行为,并在稍后进行了重新设计。评论
另外,可能值得注意的是,通过以开头来隐藏文件的“功能”。是一个简单的bug-ls只应该隐藏它。目录,不是所有以..开头的内容。快进了几十年,它通常用于隐藏危险文件等,同时也用于隐藏系统配置等。因此,让管理员查看这些文件(维护文件配置或查找隐藏的恶意软件等)。
–罗安
15年6月24日在9:08
Luaan的评论参考:plus.google.com/+RobPikeTheHuman/posts/R58WgWwN9jp(Rob Pike在其中解释说,隐藏“点文件”是作为错误开始的)。
–nibot
2015年6月25日,0:24
根据POSIX原理,“ ls实用程序的某些历史实现会在超级用户未指定-a选项的情况下调用ls时,显示目录中除点和点-点之外的所有条目。当“普通”用户未指定-a时调用ls时,除非它们被命名为文件操作数,否则不应看到任何名称以
–R .. GitHub停止帮助ICE
2015年6月26日,下午3:12
它远比它老。我认为它早于SysV-BSD分裂,因为上一次我访问SysV系统时,出现了完全相同的行为。
–约书亚
15年6月28日在3:47
史诗般的答案。历史学到!
– Corey Goldberg
15年6月29日在1:24
#2 楼
这是源代码的链接。注意/* Root is -A automatically. */
。这是Apple版本的BSD ls
的功能。评论
有趣的发现。执行ls时是否还可以抑制隐藏文件?
–李斯特先生
15年6月23日在17:01
嗯,看起来这不是Apple特有的功能,但它来自BSD世界吗?
– Kirelagin
15年6月23日在17:30
是的,它不是特定于苹果的。感谢您的回答,这使我步入正轨。我用Root is -A自动字符串来搜索线索。
– Kirelagin
2015年6月23日在17:53
Lister先生:您可以在许多操作系统(FreeBSD,因此也可能是OS X)上使用-I(大写i)以根目录显示点文件。
–艾伦·裘德(Allan Jude)
2015年6月25日14:23在
#3 楼
IIRC,在Usenet的早期(80年代初期)就有一个关于此的话题。添加该功能是为了安全起见,因此恶意用户无法轻易地从sysadmin / root隐藏文件/目录/可执行文件。该理论基本上是“ root可以访问所有内容,因此它应该能够看到所有内容”。评论
听起来很合理(即使将文件转换为点文件是“隐藏”它的可疑方式)。找到这些档案将是很棒的。
– Kirelagin
15年6月26日在11:11
评论
我将这些标签误读为“ OSX不好”,并感到非常困惑。如果大写允许使用标签,则不会造成混淆,在这里BSD和OSX更合适。
@Raystafarian很有趣,因为通常是相反的方式,人们试图用标签写句子。