在Linux系统中,权限是指系统用来限制和控制用户对文件和目录的访问能力的一组规则。这些规则决定了用户可以对文件或目录执行哪些操作,比如读取(read)、写入(write)、执行(execute)等。Linux系统通过权限来维护系统的安全性和数据的完整性。
1、 Linux用户类型
- 超级用户(root):拥有系统中最高权限,可以执行系统级别的管理任务,访问和修改系统的所有文件和设置。
- 普通用户:由管理员创建并分配给系统的普通用户账户,具有较低的权限,只能访问和修改自己的文件和一些共享的资源。
whoami:显示当前用户的用户名
su [用户名]:切换用户
2、 文件类型和基本权限
文件的基本权限分为三组:
- 所有者(User):文件的创建者或拥有者,拥有对文件的完全控制权
- 所属组(Group):与文件相关联的用户组,该组的所有成员都具有一定的权限来访问文件
- 其他用户(Others):既不是文件的所有者也不是文件的所属组成员的用户,其权限受到文件的权限设置的限制
最前面由10个字符组成,第一个字符表示文件类型,后面的九个字符按3个一组分别表示所有者、用户组和其他用户的权限 。
2.1、 文件类型
- d:文件夹
- -:普通文件
- l:软链接(类似Windows的快捷方式)
- b:块设备文件(例如硬盘、光驱等)
- p:管道文件
- c:字符设备文件(例如屏幕等串口设备)
- s:套接口文件
2.2、 基本权限
- 读取(r):允许查看文件内容或列出目录内容。
- 写入(w):允许修改文件内容或在目录中创建、删除文件。
- 执行(x):允许执行文件或进入目录。
- “—”:表示不具有该项权限
Linux权限是指对文件和目录所具有的操作权限,包括读(r)、写(w)和执行(x)权限。
2.3、 权限值表示方法
文件权限值有两种表示方法,字符表示和8进制数值表示。
a) 字符表示方法
b) 8进制数值表示方法
权限 = 角色 + 文件的属性。
对某一个文件是否有读、写、执行权限,第一看我们的角色,第二看这个文件对于我们所扮演的这个角色是否有相应的权限。也就是说,即使我(普通用户)是这个文件的拥有者,如果这个文件没有读属性,我也不能读这个文件。
对于超级用户root,没有权限的限制。
两个注意点:
- 1、文件有可执行权限,和文件能否被执行,是两码事。
一个文件可执行,一要看这个文件对当前用户是否有可执行权限,二要这个文件本身是个可执行文件。
- 2、确定身份的过程,只能确定一次,一般顺序为拥有者、所属组、其他用户。
如果某个文件的拥有者没有对这个文件的写权限,即使这个文件的所属组有写权限,而文件的拥有者也是所属组,那这个文件的拥有者依然不能对这个文件进行写入。
3、 权限管理命令
管理文件权限,我们先要知晓就文件的权限,以下是查询文件权限的命令:
要查看文件的权限设置,可以使用 ls
命令或 stat
命令。
ls -l 文件名
ls 命令可以列出文件和目录的详细信息,包括文件权限。
stat 文件名
stat 命令可以显示文件的详细信息,包括文件权限。
在 Linux 中,权限管理主要通过以下几个命令来实现:
3.1、chmod 命令
用于更改文件或目录的权限。
chmod [options] mode file
示例:
chmod u+rwx file.txt # 给文件所有者增加读、写、执行权限
chmod g-w file.txt # 去掉组用户的写权限
chmod o=rx file.txt # 设置其他用户只有读和执行权限
chmod 755 file.txt # 设置文件权限为 rwxr-xr-x
chmod -R 755 directory # 递归更改目录及其子目录的权限
使用权限符号表示法时,可以将符号与权限字符组合使用。如上述示例。 +:添加权限。 -:移除权限。 =:设置权限。
3.2、chown 命令
用于更改文件或目录的所有者。
chown [options] owner[:group] file
示例:
chown user file.txt # 将文件所有者改为 user
chown user:group file.txt # 将文件所有者改为 user,组改为 group
chown -R user:group directory # 递归更改目录及其子目录的所有者和组
3.3、chgrp 命令
用于更改文件或目录的所属组。
chgrp [options] group file
示例:
chgrp group file.txt # 将文件所属组改为 group
chgrp -R group directory # 递归更改目录及其子目录的所属组
3.4、umask 命令
用于设置默认权限掩码,决定新创建文件和目录的默认权限。
umask [options] [mask]
示例:
umask 022 # 设置新文件默认权限为 755,新目录默认权限为 755
umask 077 # 设置新文件和目录默认权限为 700
在 Linux 中,权限掩码(umask) 是用于设置新创建文件和目录的默认权限的机制。它通过屏蔽某些权限位来决定新文件和目录的最终权限。
a) 权限掩码的工作原理
默认情况下,新创建的文件和目录的权限分别是 666(rw-rw-rw-)
和 777(rwxrwxrwx)
。权限掩码通过从这些默认权限中减去指定的掩码值来确定最终权限。
b) 计算方法 假设 umask 值为 022:
- 文件默认权限:666 - 022 = 644(rw-r–r–)
- 目录默认权限:777 - 022 = 755(rwxr-xr-x)
c) 设置和查看 umask
查看当前 umask:
umask
设置 umask:
umask 022
d) 示例
查看当前 umask:
$ umask
0022
创建文件和目录:
$ touch newfile
$ mkdir newdir
查看权限:
$ ls -l newfile newdir
-rw-r--r-- 1 user user 0 Aug 16 09:04 newfile
drwxr-xr-x 2 user user 4096 Aug 16 09:04 newdir
e) 修改 umask 要永久修改 umask,可以在用户的 shell 配置文件(如 .bashrc 或 .profile)中添加一行:
umask 022
f) 特殊情况
- umask 000:新文件和目录将具有最大权限(666 和 777),这通常不推荐使用,因为它会导致安全风险。
- umask 077:新文件和目录将只有所有者有完全权限(600 和 700),适用于需要高安全性的场景。
通过合理设置 umask,可以有效控制新创建文件和目录的默认权限,确保系统的安全性和资源的合理分配
4、 特殊权限(粘滞位)
在 Linux 系统中,粘滞位(Sticky Bit) 是一种特殊权限位,主要用于控制对特定目录中文件的删除操作。设置粘滞位后,只有文件的所有者或 root 用户才能删除或移动该文件,而其他用户即使有写权限也不能删除或移动这些文件。
4.1、 粘滞位的作用
粘滞位通常用于多用户环境中的公共目录,例如 /tmp 目录,以防止用户删除或移动其他用户的文件。设置粘滞位后,目录的其他用户权限位会显示为 t 或 T:
- t:表示该目录的其他用户有执行权限。
- T:表示该目录的其他用户没有执行权限。
4.2、 设置粘滞位
使用 chmod 命令可以设置粘滞位:
chmod +t directory # 为目录设置粘滞位
chmod -t directory # 移除目录的粘滞位
4.3、 示例
查看 /tmp 目录的权限:
ls -ld /tmp
drwxrwxrwt 10 root root 4096 Aug 16 09:04 /tmp
#可以看到 /tmp 目录的其他用户权限位为 t,表示已设置粘滞位。
为目录设置粘滞位:
mkdir mydir
chmod 1777 mydir # 设置粘滞位并赋予所有用户读、写、执行权限
ls -ld mydir
drwxrwxrwt 2 user user 4096 Aug 16 09:04 mydir
4.4、 注意事项
粘滞位只对目录有效,对文件无效。
设置粘滞位后,其他用户仍然可以修改文件内容,但不能删除或移动文件。当一个目录被设置粘滞位,则该目录下的文件只能由:1. 超级用户删除;2. 该目录所有者删除;3. 该文件所有者删除。
通过合理使用粘滞位,可以有效保护公共目录中的文件,防止未授权的删除和移动操作。
5、 总结
Linux 文件权限是保护文件和目录安全的重要机制。通过正确设置文件权限,我们可以限制对文件的访问、读取、写入或执行操作。本文详细介绍了文件权限的表示方式,包括用户权限、组权限和其他权限。我们还学习了如何设置文件权限,使用 chmod 命令以及权限符号表示法和权限数字表示法。此外,我们了解了如何查看文件权限,使用 ls 命令和 stat 命令。还介绍了如何更改文件的所有者和所属组,使用 chown 命令和 chgrp 命令。最后,我们还了解了特殊权限,如粘着位和默认权限设置。
掌握文件权限的概念和相关命令对于管理和保护 Linux 系统中的文件和目录至关重要。正确设置文件权限可以确保系统的安全性和稳定性。希望本文能够帮助你更好地理解和使用 Linux 文件权限,并在实际应用中发挥作用。
评论
评论列表
暂无评论