Linux文件权限管理chmod
Linux文件权限管理chmod
1 如何查看文件权限
使用 ls -l
命令可以查看文件的详细信息,其中包括文件权限。
1 | ls -l bitcontrol.c |
输出示例:
1 | -rw-r--r-- 1 serenitatis serenitatis 1024 Nov 16 15:59 bitcontrol.c |
文件类型:最前面的一个字符表示文件类型共七种。
-
表示普通文件。白色d
表示目录。蓝色l
表示链接。蓝绿色c
字符设备(流式传输)驱动文件。亮黄色b
块设备(带缓存的传输)驱动文件。同字符设备亮黄色p
管道(进程间通信)文件,管道文件数据不会保存,只能用于进程间通信。紫色s
套接字文件(不同计算机间的通信文件)。暗黄色特殊的有
压缩包
和失去连接的文件的软链接
文件为红色。rw-r--r--
表示文件权限,第一个-
表示文件类型,rw-
表示拥有读和写权限,r--
表示拥有只读权限,第一个为用户权限,第二个为组权限,第三个为其他用户权限。
每个rwx都是有1
表示硬链接数目。serenitatis
表示文件所有者。serenitatis
表示文件所属组。1024
表示文件大小。Nov 16 15:59
表示文件最后修改时间。bitcontrol.c
表示文件名。
2 如何修改文件权限
使用 chmod
命令可以修改文件权限。
2.1 chmod
语法
chmod
命令的基本语法如下:
1 | chmod [who][operator][permission] file |
who
可以是以下值之一或组合:u
:文件所有者g
:文件所属组o
:其他用户a
或者省略:所有用户(等同于ugo
)
operator
可以是:+
:添加权限-
:移除权限=
:设置权限(替换现有权限)
permission
可以是:r
:读权限w
:写权限x
:执行权限
2.2 示例
假设你想给用户 serenitatis
添加读、写和执行权限,你需要先确定 serenitatis
是否是文件的所有者或所属组成员。然后根据情况使用以下命令:
2.2.1 如果 serenitatis
是文件所有者
1 | chmod u+rwx bitcontrol.c |
2.2.2 如果 serenitatis
属于文件的所属组
首先,确保 serenitatis
属于文件的所属组,然后使用:
1 | chmod g+rwx bitcontrol.c |
2.2.3 如果 serenitatis
是其他用户
1 | chmod o+rwx bitcontrol.c |
2.3 更改文件所有者或所属组
如果你需要将文件的所有者或所属组更改为 serenitatis
,可以使用 chown
和 chgrp
命令:
2.3.1 更改文件所有者
1 | chown serenitatis bitcontrol.c |
2.3.2 更改文件所属组
1 | chgrp serenitatis bitcontrol.c |
2.3.3 示例
假设你希望将 bitcontrol.c
的所有者更改为 serenitatis
并赋予其读、写和执行权限:
1 | chown serenitatis bitcontrol.c |
3 权限掩码umask及其缺省值
3.1 权限值
也可使用数字表示权限,如:
1 | chmod 777 file |
表示将文件所有者、所属组和其他用户都设置为可读可写可执行。
权限说明:rwx分别表示可读、可写、可执行。对应权限值为4、2、1。
3.2 权限掩码umask
在类Unix系统(如Linux)中,当普通用户和root用户创建文件夹或文件时,默认的权限设置会有所不同,这主要取决于umask
值。umask
是一个权限掩码,它决定了新创建文件或目录的默认权限。普通用户umask值默认为002
,root用户umask值默认为022
。
3.2.1 对于文件:
- 默认情况下,新创建的文件的权限是
666
(即-rw-rw-rw-
),这意味着所有者、所属组和其他用户都具有读写权限。 - 但实际赋予的权限取决于
umask
值。例如,如果umask
设置为022
(这是常见的默认值),那么最终的文件权限将是666 - 022 = 644
(即-rw-r--r--
),意味着文件所有者有读写权限,而其他用户只有读权限。
3.2.2 对于目录:
- 新创建的目录默认权限是
777
(即drwxrwxrwx
),表示所有者、所属组和其他用户都有读、写、执行权限。 - 同样地,应用
umask
后,如果umask
是022
,那么目录的实际权限将变为777 - 022 = 755
(即drwxr-xr-x
)。这意味着所有者可以读写并进入该目录,而其他人只能读取和进入,但不能写入。