定义:
文件和目录的权限管理在操作系统中至关重要,特别是在多用户环境下,它决定了不同用户对文件和目录的访问和操作权限。
一、基本权限类型及表示方法
在Linux系统中,文件和目录的权限分为三类:读取权限(read,r)、写入权限(write,w)和执行权限(execute,x)。这些权限适用于三种不同的用户类别:所有者(owner)、所属组(group)和其他用户(others)当然还包括一种:全部用户(all)。
权限的表示方法有两种:
- 符号表示法:使用r、w、x字符分别表示读取、写入和执行权限。例如,
-rw-r--r--
表示一个文件,其所有者有读取和写入权限,所属组和其他用户只有读取权限。 - 数字表示法:使用八进制数字来表示权限,其中读(r)=4,写(w)=2,执行(x)=1,没有权限(-)=0。例如,7表示rwx(4+2+1),5表示r-x(4+1)。
二、查看权限
要查看文件或目录的权限,可以使用ls -l
命令。该命令会显示文件或目录的详细权限信息,包括文件类型、权限、所有者、所属组、大小、最后修改时间和名称。
例如,执行ls -l
命令后,可能会看到如下输出:
-rwxr-xr-- 1 user group 4096 Mar 10 10:00 file.txt
在这个例子中,-rwxr-xr--
表示了 file.txt
文件的权限。这个字符串可以分为四部分:
- 第一个字符
-
表示这是一个文件(如果是d
,则表示目录 ,b:表示块设备如硬盘,c:表示字符设备文件如鼠标、键盘)。 - 接下来的三个字符
rwx
表示文件所有者的权限(读(read)、写(write)、执行(execute))。 - 中间的三个字符
r-x
表示文件所属组的权限(读、不可写、执行)。 - 最后三个字符
r--
表示其他用户的权限(读、不可写、不可执行)。
权限的类型
- 读权限(r): 允许读取文件内容或列出目录内容。
- 写权限(w): 允许修改文件内容或修改目录(创建、删除文件)。
- 执行权限(x): 对于文件,允许运行该文件;对于目录,允许进入目录。
注意事项:对文件的写操作是否可以删除文件要看其文件所在的目录是否可以有可写的操作,相当于理解为:文件写的操作对应的是内容,而目录写的操作对应的是文件
三、修改权限
使用 chmod
命令可以更改文件或目录的权限。chmod
有两种使用方式:符号模式和绝对模式。
符号模式
在符号模式下,使用以下符号来表示权限:
u
: 所有者g
: 组o
: 其他用户a
: 所有用户(所有者、组和其他用户)
操作符可以是:
+
: 添加权限-
: 移除权限=
: 设置确切的权限
例子:
chmod u+x file.txt
:给文件所有者添加执行权限。chmod g-w file.txt
:从文件所属组移除写权限。chmod o=r file.txt
:设置其他用户的权限为只读。
绝对模式
在绝对模式下,使用三位八进制数字来表示权限。每类用户(所有者、组、其他)都有一个数字,范围从0到7。
0
: 无权限1
: 执行权限(x)2
: 写权限(w)3
: 写和执行权限(wx)4
: 读权限(r)5
: 读和执行权限(rx)6
: 读和写权限(rw)7
: 读、写和执行权限(rwx)
例子:
chmod 755 file.txt
:设置所有者拥有读、写、执行权限,组和其他用户拥有读和执行权限。chmod 644 file.txt
:设置所有者拥有读、写权限,组和其他用户只有读权限。
目录权限的特殊性
目录的权限具有特殊性,因为它们控制的是对目录内容的访问,而不是目录本身。例如:
- 如果一个用户对一个目录有执行权限,那么他可以进入该目录(
cd
命令)。 - 如果一个用户对一个目录有写权限,那么他可以在该目录中创建或删除文件,即使他没有对文件的写权限。
通过以上方式,管理员可以精确地控制用户和组对文件和目录的访问权限,确保系统的安全性和数据的完整性。
使用chown命令修改所有者和所属组
chown
命令用于修改文件或目录的所有者或所属组。它可以单独修改所有者或所属组,也可以同时修改两者。
- 用法:chown 用户名 文件名
- 修改所有者:
chown newuser file.txt
将文件file.txt
的所有者更改为newuser
。 - 修改所属组:
chown :newgroup file.txt
将文件file.txt
的所属组更改为newgroup
。 - 同时修改所有者和所属组:
chown newuser:newgroup file.txt
将文件file.txt
的所有者更改为newuser
,所属组更改为newgroup
。 - 修改目录的所有者:chown -R 用户名 目录名
使用chgrp命令修改所属组
chgrp
命令只用于更改文件或目录的所属组。
- 用法:chgrp 组名 文件名
- 例如:
chgrp newgroup file.txt
将文件file.txt
的所属组更改为newgroup
。 - 修改目录的组名:chgrp -R 组名 目录名
四、特殊权限
除了基本权限外,Linux还提供了三种特殊权限:SUID、SGID和sticky bit。
- SUID(Set User ID):文件以文件所有者的权限执行,而非执行者的权限。通常用于某些系统程序。例如,
chmod u+s file.sh
为脚本file.sh
设置SUID权限。 - SGID(Set Group ID):目录内新建的文件继承该目录的组,而不是创建者的组。例如,
chmod g+s mydir
为目录mydir
设置SGID权限。 - sticky bit:只允许文件所有者或root删除该目录下的文件。常用于
/tmp
目录。例如,chmod +t mydir
为目录mydir
设置sticky bit权限。