【Linux系统编程】权限的概念
Linux权限的概念
- Linux权限的概念
- 1. LInux权限管理
- 2. 文件权限值的表示方法
- 3. 文件访问权限的相关设置方法
- 3.1 **chmod命令**
- 3.2 **chown 命令**
- 3.3 chgrp 命令
- 3.4 umask 命令
- 4. file 指令
- 5. 目录的权限
- 6. 粘滞位【选学】
Linux权限的概念
Linux下有两种用户:超级用户(root)、普通用户。
超级用户:通常用户名是root,拥有系统的最高权限,可以在Linux系统下进行任何操作而不受限制。
普通用户:权限受到限制,只能进行被授权的操作。
超级用户的命令提示符是“#”,普通用户的命令提示符是“$”。
用户切换命令:su
功能:用于切换当前登录的用户身份。
格式:su [用户名]
例如:
从root用户切换到普通用户user:su user
从普通用户user切换到root用户:su root(系统会提示输入root用户的口令)
1. LInux权限管理
1.文件访问者的分类
权限针对以下三类“人”进行设置:
- 文件和文件目录的所有者:u,即User,文件的创建者。
- 文件和文件目录的所有者所在的组的用户:g,即Group,文件所属用户组中的其他成员。
- 其它用户:o,即Others,既不是所有者也不在同组的其他任何用户。
2.文件类型和访问权限
文件属性
Linux中一切皆文件,通过ls -l命令的第一个字符可以识别文件类型:
- d:目录(文件夹)
- -:普通文件
- l:软链接(类似于Windows的快捷方式)
- b:块设备文件(如硬盘、光盘)
- c:字符设备文件(如屏幕等串口设备)
- p:管道文件
- s:套接口文件
基本权限
每种权限对文件和目录的意义不同:
权限 | 字符表示 | 八进制表示 | 对文件的含义 | 对目录的含义 |
---|---|---|---|---|
读 | r | 4 | 读取文件内容 | 浏览目录内容(列出文件名) |
写 | w | 2 | 修改文件内容 | 在目录中创建、删除、重命名文件 |
执行 | x | 1 | 执行文件(如脚本、程序) | 进入目录(cd到该目录) |
无权限 | - | 0 | 不具备相应权限 | 不具备相应权限 |
2. 文件权限值的表示方法
- 字符表示法:例如:- r w x r - x r - - -,共10位。第1位是文件类型,后续9位每3位一组,分别对应所有者(u)、所属组(g)、其他用户(o) 的rwx权限。
- 八进制数值表示法:将每组权限视为一个二进制数(有权限为1,无权限为0),再转换为八进制数字。例如:
- r w x r - x r - -转换为:
所有者: r w x = 4+2+1 = 7
所属组: r - x = 4+0+1 = 5
其他用户: r - - = 4+0+0 = 4
所以该权限的数字表示为 754。
3. 文件访问权限的相关设置方法
3.1 chmod命令
功能:修改文件或目录的访问权限。
注意:只有文件的拥有者和root用户有权修改文件的权限。
格式:chmod [参数] 权限 文件名
常用选项:-R:递归修改目录及其内部所有文件的权限。
权限设置格式:
1) 用户符号 +/-/= 权限字符
用户符号:
u:拥有者
g:所属组
o:其他用户
a:所有用户
操作符:
+:增加权限
-:移除权限
=:设置绝对权限(覆盖原有权限)
实例:
chmod u+w /home/abc.txt(给文件所有者增加写权限)
chmod o-x /home/abc.txt(移除其他用户的执行权限)
chmod a=x /home/abc.txt(设置所有用户的权限为“仅执行”)
2)三位八进制数字
实例:
chmod 664 /home/abc.txt(权限为 r w - r w - r - -)
chmod 640 /home/abc.txt(权限为 r w - r - - - - -)
3.2 chown 命令
功能:修改文件的拥有者。
格式:chown [参数] 用户名 文件名
实例:
chown user1 f1(将文件f1的拥有者改为user1)
chown -R user1 filegroup1(递归修改目录filegroup1及其内容的拥有者)
3.3 chgrp 命令
功能:修改文件或目录的所属组。
格式:chgrp [参数] 用户组名 文件名
常用选项:-R递归修改。
实例:chgrp users /abc/f2(将文件f2的所属组改为users组)
3.4 umask 命令
功能:查看或修改文件创建时的默认权限掩码。
新建文件的默认权限为 0666(rw-rw-rw-)
新建目录的默认权限为 0777(rwxrwxrwx)
实际创建的权限 = 默认权限 减去 umask值(或理解为 默认权限 & ~umask)
格式:umask [权限值]
超级用户默认umask为 0022
普通用户默认umask为 0002
实例:
umask(查看当前umask值)
umask 044(设置umask值为044)
4. file 指令
功能说明:用于辨识文件的真实类型,不依赖于文件扩展名。
语法:file [选项] 文件或目录…
常用选项:
-c:详细显示指令执行过程,便于排错。
-z:尝试去解读压缩文件的内容。
使用sudo分配权限
sudo允许系统管理员委派权限,让普通用户以其他用户(通常是root)的身份执行命令。
- 修改 /etc/sudoers文件分配权限:
chmod 740 /etc/sudoers # 先赋予写权限
vi /etc/sudoers # 编辑文件
格式:接受权限的用户 登陆的主机=(执行命令的用户) 命令
- 使用sudo调用授权的命令
格式:sudo -u 用户名 命令
实例:sudo -u root /usr/sbin/useradd u2(以root身份执行添加用户命令)
5. 目录的权限
目录的权限含义特殊,需要特别注意:
- 可执行权限 x:这是进入目录的“钥匙”。如果目录没有x权限,用户将无法cd到该目录,即使它拥有该目录的r(读)权限。
- 可写权限 w:如果目录有w权限,用户就可以在该目录内创建或删除文件。这里有一个关键点:删除一个文件所需的权限,取决于文件所在目录的w权限,而不是文件本身的w权限。
这意味着,只要用户对某个目录具有写权限,他就可以删除该目录下的任何文件,包括不属于他自己的文件。这显然是不安全的。为了解决这个问题,Linux引入了“粘滞位”。
6. 粘滞位【选学】
当一个目录被设置了粘滞位后,该目录下的文件只能被以下三种身份的用户删除或重命名:
- 超级管理员 (root)
- 该目录的所有者
- 该文件的所有者
设置方法:chmod +t 目录名
效果:设置了粘滞位的目录(如系统的/tmp目录),其权限位最后一位会变成t(例如 drwxrwxrwt)。这有效防止了用户在公共可写目录中随意删除他人的文件,实现了安全的共享。
沾滞位的作用:在设置的沾滞位的目录下,其它用户可以创建文件,但是只能删除自己的文件,不可以删除别人的文件;可以通过chmod +t设置其它用户权限位中的沾滞位