“ls -ld / tmp”输出中的“t”字母是什么?

运行命令ls -ld /tmp ,输出将为:

 drwxrwxrwt 30 root root 20480 Mar 11 14:17 /tmp 

所以我有两个主要问题:

  • 权限后的字母t是什么?
  • 据我所知/tmp用于创建与系统中不同用户相关的临时文件,那么为什么它有权限rwxrwxrwx (777)?

这对我来说似乎不对。 我需要你的帮助来了解这里发生了什么。

那粘性位是什么?

粘滞位是在目录上设置的权限位,该目录仅允许该目录中的文件所有者,目录的所有者或root用户删除或重命名该文件。 没有其他用户具有删除其他用户创建的文件所需的权限。

这是一种安全措施,可避免删除关键文件夹及其内容(子目录和文件),但其他用户具有完全权限。

为什么/tmpt 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 ,并且必须这样才能使用户和进程能够使用目录没有权限冲突。