Linux的文件类型
文件类型:
- 普通文件 (
-
):常规文件,可能是文本、二进制数据等。 - 目录 (
d
):文件夹,包含其他文件或目录。 - 符号链接 (
l
):指向另一个文件或目录的快捷方式。 - 块设备文件 (
b
):用于存储数据的块设备,如硬盘。 - 字符设备文件 (
c
):用于按字符流操作的设备,如键盘、终端。 - 管道文件 (
p
):用于进程间通信的命名管道。 - 套接字 (
s
):用于网络通信的文件。
Linux的默认权限
在 Linux 系统中,文件和目录的默认权限取决于 umask
(用户文件创建模式掩码)的值。默认情况下,umask
设置会影响新创建的文件和目录的权限。
文件和目录的默认权限
-
文件:
- 通常情况下,新创建的文件默认权限为
666
(即:rw-rw-rw-
)。 - 这是因为一般情况下,普通文件不应该具有执行权限。
- 通常情况下,新创建的文件默认权限为
-
目录:
- 通常情况下,新创建的目录默认权限为
777
(即:rwxrwxrwx
)。 - 这是因为用户通常希望具有完全的权限来访问目录,包括执行权限(进入目录)。
- 通常情况下,新创建的目录默认权限为
使用 umask
调整默认权限
umask
是一个三位或四位八进制数,它指定了新文件或目录应当剔除的权限位。通过设置 umask
,可以控制新文件或目录的默认权限。
例如:
-
默认
umask
值为022
:- 新文件的默认权限将是
644
(666 - 022
),即:rw-r--r--
。 - 新目录的默认权限将是
755
(777 - 022
),即:rwxr-xr-x
。
- 新文件的默认权限将是
-
默认
umask
值为027
:- 新文件的默认权限将是
640
(666 - 027
),即:rw-r-----
。 - 新目录的 default permissions will be
750
(777 - 027
),即:rwxr-x---
。
- 新文件的默认权限将是
检查和设置 umask
可以使用 umask
命令来查看当前 umask
的值
umask
可以使用 umask
命令来设置新的 umask
值
umask 027
Linux的目录权限
-
读权限 (
r
):- 目录的读权限允许用户列出目录中的文件和子目录。
- 对应的八进制数值为
4
。
-
写权限 (
w
):- 目录的写权限允许用户在目录中创建、删除和重命名文件或子目录。
- 对应的八进制数值为
2
。
-
执行权限 (
x
):- 目录的执行权限允许用户进入目录(即改变当前工作目录到此目录)。
- 对应的八进制数值为
1
。
删除文件或目录的权限与文件本身的权限无关,而是与包含该文件或目录的父目录的权限相关。这是因为删除操作实际上是对父目录结构的修改。
删除文件的权限
-
目录的写权限 (
w
):- 要删除一个文件,用户需要对其所在的目录拥有写权限。
- 写权限允许用户修改目录内容,例如添加或删除文件。
-
目录的执行权限 (
x
):- 要删除一个文件,用户还需要对其所在的目录拥有执行权限。
- 执行权限允许用户进入该目录。
所以,要删除一个文件,用户需要对文件所在目录同时拥有写权限和执行权限。文件本身的权限则没有直接影响。
粘滞位
在 Linux 文件系统中,粘滞位(Sticky Bit)是一种特殊的权限位,用于目录上的时候,可以限制非目录拥有者删除目录中的文件或子目录。粘滞位在共享目录中非常有用,例如 /tmp
目录。
粘滞位的作用
-
当目录设置了粘滞位时,只有以下用户可以删除或重命名该目录中的文件或子目录:
- 文件或子目录的所有者。
- 目录的所有者。
- 超级用户(
root
)。
-
对于普通用户来说,如果没有设置粘滞位,任何拥有写权限的用户都可以删除或重命名目录中的文件或子目录,即使他们不是文件或子目录的所有者。
设置粘滞位
粘滞位可以通过以下方式设置:
-
八进制表示:
在权限设置的最前面加
1
。例如:chmod 1777 directory_name
这会设置
directory_name
目录的权限为rwxrwxrwt
,其中最后一个t
表示粘滞位。 -
符号表示:
使用符号
+t
。例如:chmod +t directory_name
这会添加粘滞位到
directory_name
。
检查粘滞位
粘滞位在目录的权限表示中显示为 t
或 T
:
t
:表示其他用户对目录拥有执行权限。例如 drwxrwxrwt
。
T
:表示其他用户对目录没有执行权限。例如 drwxrwxrwT
。
示例
以下是一些实际的例子:
共享目录 /tmp
:
典型的粘滞位应用是 /tmp
目录,通常权限为 drwxrwxrwt
。
这确保了任何用户都可以在 /tmp
中创建文件,但只有文件的所有者、目录的所有者或超级用户才能删除或重命名这些文件。
自定义共享目录:
假设你有一个共享目录 shared
,你希望用户能够在该目录中创建文件,但不允许删除其他人的文件:
mkdir shared
chmod 1777 shared
这将设置 shared
目录的权限为 drwxrwxrwt
。