运行命令时 ls -ld /tmp
,输出为:
drwxrwxrwt 30 root root 20480 Mar 11 14:17 /tmp
所以我有两个主要问题:
t
权限后的字母是什么?- 据我所知,它
/tmp
是用来创建与系统中不同用户相关的临时文件的,那么它为什么有权限rwxrwxrwx
(777)?
这对我来说似乎是错误的。请我帮忙,以了解这里的情况。
运行命令时 ls -ld /tmp
,输出为:
drwxrwxrwt 30 root root 20480 Mar 11 14:17 /tmp
所以我有两个主要问题:
t
权限后的字母是什么?/tmp
是用来创建与系统中不同用户相关的临时文件的,那么它为什么有权限rwxrwxrwx
(777)?这对我来说似乎是错误的。请我帮忙,以了解这里的情况。
Answers:
粘贴位是在目录上设置的权限位,该权限位仅允许该目录中文件的所有者,目录的所有者或root用户删除或重命名文件。没有其他用户具有删除其他用户创建的文件所需的特权。
这是一种安全措施,可避免删除关键文件夹及其内容(子目录和文件),尽管其他用户拥有完全权限。
/tmp
会有t
粘性?该/tmp
目录可以被不同的Linux用户用来创建临时文件。现在,如果用户删除/重命名该目录中其他用户创建的文件怎么办?
好了,为避免此类问题,使用了粘性位的概念。因此,777
给出了a ,但是保留粘性位并不是一个坏主意。
我将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 o-t ~/Desktop/test
现在让我们测试结果:
ls -li ~/Desktop/test
1551793 drwxrwxrwx 45 hadi hadi 20485 Mar 11 14:35 ~/Desktop/test
t
隐藏了x
指示所有用户是否都可以执行文件/目录的指示,所以我们需要其他指示方式。通常的事情是每个人都可以执行它,在这种情况下,您会得到一个普通的t
(而不是x
)。但是,如果没有,您将获得大写字母T
(而不是-
)。资料来源:维基百科。
粘性位是在文件或目录上设置的权限位,仅允许文件/目录的所有者或root用户删除或重命名文件。没有其他用户有权删除其他用户创建的文件。
有时候,您需要一个Linux目录,Linux系统的所有用户都可以使用该目录来创建文件。用户可以根据自己的方便在此目录中创建,删除或重命名文件。
现在,如果用户意外或故意删除(或重命名)该目录中其他用户创建的文件怎么办?
好了,为避免此类问题,使用了粘性位的概念。由于/ tmp用于此目的。因此,为避免出现上述情况,/ tmp使用sticky位。
例如:
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之类的现代系统会自动管理其可执行文件和其他文件的缓存,而无需为此而烦恼。
Stickybit是一种避免意外删除共享目录的解决方法。当目录具有粘性位时,即使每个用户都可以获取全部其他权限,只有所有者或根目录才能删除它。
/tmp
是进程和用户之间最共享的目录,为此它包含stickybit,以确保没有用户可以删除目录,即使权限为777
,也必须如此,以使用户和进程能够使用目录没有权限冲突。