“ls -ld / tmp”输出中的“t”字母是什么?
运行命令ls -ld /tmp
,输出将为:
drwxrwxrwt 30 root root 20480 Mar 11 14:17 /tmp
所以我有两个主要问题:
- 权限后的字母
t
是什么? - 据我所知
/tmp
用于创建与系统中不同用户相关的临时文件,那么为什么它有权限rwxrwxrwx
(777)?
这对我来说似乎不对。 我需要你的帮助来了解这里发生了什么。
那粘性位是什么?
粘滞位是在目录上设置的权限位,该目录仅允许该目录中的文件所有者,目录的所有者或root用户删除或重命名该文件。 没有其他用户具有删除其他用户创建的文件所需的权限。
这是一种安全措施,可避免删除关键文件夹及其内容(子目录和文件),但其他用户具有完全权限。
为什么/tmp
有t
bit bit?
/tmp
目录可供不同的Linux用户用于创建临时文件。 现在,如果用户删除/重命名此目录中某个其他用户创建的文件,该怎么办?
那么,为了避免这些问题,使用粘性位的概念。 因此,给出了777
,但保留粘性位并不是一个坏主意。
如何为目录设置粘滞位?
我将在我的桌面上名为test
的目录上设置一个粘滞位。
符号方式( t
代表粘性位):
chmod o+t ~/Desktop/test
要么
chmod +t ~/Desktop/test
数字/八进制方式(1,粘贴位位为第一个位置的值1)
chmod 1757 ~/Desktop/test
现在让我们测试结果:
ls -li ~/Desktop/test 1551793 drwxrwxrwt 45 hadi hadi 20485 Mar 11 14:35 ~/Desktop/test
删除/删除粘滞位
chmod ot ~/Desktop/test
现在让我们测试结果:
ls -li ~/Desktop/test 1551793 drwxrwxrwx 45 hadi hadi 20485 Mar 11 14:35 ~/Desktop/test
资料来源: “什么是棘手的比特以及如何在Linux中设置它?”在Linux Juggernaut上
粘滞位是在文件或目录上设置的权限位,只允许文件/目录的所有者或root用户删除或重命名该文件。 没有其他用户被授予删除其他用户创建的文件的权限。
有时,您需要Linux目录,Linux系统的所有用户都可以使用该目录来创建文件。 用户可以根据此目录中的方便创建,删除或重命名文件。
现在,如果用户意外或故意删除(或重命名)此目录中某个其他用户创建的文件,该怎么办?
那么,为了避免这些问题,使用粘性位的概念。 因为/ tmp用于此目的。 所以为了避免上述情况, / tmp使用粘滞位。
例如:
mkdir demo chmod 777 demo
我还在此文件夹中创建了具有不同用户的两个文件,具有权限777。
ls -ld demo drwxrwxrwx 2 guru guru 4096 Mar 11 18:17 demo ls -l demo -rwxrwxrwx 1 abhi abhi 0 Mar 11 17:11 file1 -rwxrwxrwx 1 anshu anshu 0 Mar 11 18:15 file2
现在打开粘性位
chmod +t demo/ ls -ld demo drwxrwxrwt 2 guru guru 4096 Mar 11 18:17 demo
现在如果一个用户(abhi)想要重命名第二个用户(anshu)会发生什么
mv /home/guru/demo/file2 /home/guru/demo/file3 mv: cannot move '/home/guru/demo/file2' to '/home/guru/demo/file3': Operation not permitted
粘性位的起源
在Linux上,粘滞位仅在目录上具有上述用途。 从历史上看,它在常规文件中用于完全不同的东西,这就是名称的来源。
执行程序时,在用户实际开始使用程序之前,需要花费一些时间将程序加载到内存中。 如果用户经常使用程序,例如编辑器,则启动时间延迟是当时的开销。
为了改善这种时间延迟,引入了粘性位。 操作系统检查了如果可执行文件上的粘滞位为ON,则可执行文件的文本段保留在交换空间中。 这样,当程序再次运行时,可以很容易地将可执行文件加载到RAM中,从而最大限度地减少时间延迟。
Linux等现代系统会自动管理可执行文件和其他文件的缓存,并且不需要粘贴位。
资料来源: The Geek Stuff的“Linux Sticky Bit Concept with Examples with Explas”
stickybit是一种不会被意外删除的共享目录的变通方法。 当一个目录有一个stickybit时,只有所有者或root可以删除它,即使每个用户都可以获得完整的其他权限。
/tmp
是进程和用户之间最共享的目录,并且它包含stickybit以确保没有用户可以删除目录,即使权限是777
,并且必须这样才能使用户和进程能够使用目录没有权限冲突。