什么是权限
在Linux中,每个文件和目录都有三种不同类型的权限:读取权限、写入权限和执行权限。这些权限可以被分配给三种不同的用户类型:文件所有者、文件所属组和其他用户。这就是所谓的“rwx”权限表示法。
- r (读取权限):允许用户读取文件或目录的内容。对文件而言,这意味着可以查看文件中的内容;对目录而言,这意味着可以列出目录中的文件和子目录。
- w (写入权限):允许用户修改文件或目录的内容。对文件而言,这意味着可以编辑或删除文件;对目录而言,这意味着可以在目录中创建、删除或重命名文件和子目录。
- x (执行权限):允许用户执行文件或进入目录。对文件而言,这意味着可以运行可执行文件;对目录而言,这意味着可以进入目录并访问其中的文件和子目录。
文件所有者、文件所属组和其他用户可以各自分别具有读取、写入和执行权限。每个用户类型的权限可以被分配为允许或禁止。这些权限可以使用chmod命令更改。
为什么要设置权限
员工的职责分工不同 不同账户所需要做的事情不一样
方便服务器内部的管理
普通权限管理Linux中文件的所有者
user(属主)U
文件创建者 拥有者 表示一个账户 对这个文件的权限
group(属组) G
文件所属的用户组 某个组对这个文件有的权限
other(其他用户) O
除了上面之外的其他用户 对这个文件有的权限
UGO, A, all(三种全部用户的表示)
root用户(超级管理员)默认拥有所有权限
ls 查看文件属性
ls -l ll 使用ll命令查看文件权限
其中
- 代表普通文件
d 代表目录
r 代表可读 数字表示为4
w 代表可写 数字表示为2
x 代表可执行 数字表示为1
设置文件或目录权限
chmod
chmod是一个用于更改文件或目录权限的命令。它可以授予或禁止读取、写入和执行权限,从而控制用户可以对文件或目录进行何种操作。chmod命令可以使用两种不同的语法:符号表示法和数字表示法。
chmod u+x 1 给一个文件的属主增加执行权限
chmod g+x,o+x 2给一个文件同时增加属组其他权限
chmod o-x 2 <--(文件名) 减少其他人的执行权限
chmod u=rwx,g=rwx,o=rwx 2 给文件所有人赋予所有权限
chmod a=rwx 1 赋予所有人所有权限
u,g,o,a 表示用户
+,- 表示授予和禁止权限
r,w,x 表示读取,写入和执行权限
同时设置多个身份权限的时候 每个身份权限用英文逗号隔开
chmod g+x,o+x
在设置权限的时候如果有两个部分权限一样 我们可以:
chmod u=rwx,g=rwx
等价于 chmod ug=rwx
数字表示
0 不能读 不能写 不能执行
1 不能读 不能写 执行
2 不能读 写 不能执行
3 不能读 写 能执行
4 读 不能写 不能执行
5 读 不能写 执行
6 读 写 不能执行
7 读 写 执行
属主与属组设置
属主:文件的所有者 是一个账户 一个人
属组:所属的用户组 一个组
查看系统属主属组
ls -l 或 ll
chown 修改文件的属主
修改文件的属主 属组
用法1:将文件的属主修改为其他用户
chown 属主 文件名
用法2:同时修改文件的属主 属组
chown 属主:属组 文件名
chgrp 修改文件的属组
chgrp 属组 文件名
一般来说 chown命令 只有root用户才可以使用 普通用户没有权限修改别人的文件所有者 也没有权限将自己文件的所有者修改为别人。
特殊权限
设置位s
让一般使用者 临时拥有文件的属主/属组权限
/usr/bin/passwd 在执行时 需要修改/etc/passwd /etc/shadow 等文件,这些文件除了root 其他用户都只有读权限,为了让普通用户修改密码 临时让他们拥有root权限,找个s权限 就是帮我们来完成这个任务的,s权限 只能应用在二进制的可执行文件上。
去除s权限
which
查看二进制可执行文件所在的位置
查看命令ls所在的位置
通过chmod命令修改s权限
chmod 用户+、- 命令路径
chmod u-s或u+s /usr/bin/passwd
普通用户测试
鉴定用户令牌错误,用户没有权限
粘滞位t
在Linux中,粘滞位是一种特殊的文件权限,通常用于保护目录中的文件免受删除或重命名的意外操作。当某个目录的粘滞位被设置后,只有该目录的所有者和超级用户才能删除或重命名该目录中的文件。
粘滞位用“t”表示,其在文件权限表示法中的位置在执行权限的最后一位。要为一个目录设置粘滞位,需要使用chmod命令。
例如,要将目录/mydir设置为具有粘滞位的权限“drwxrwxrwt”,可以使用以下命令:
chmod o+t mydir
chmod o+t/o-t 文件名
ACL
ACL是Access Control List的缩写,即访问控制列表,在Linux中用于扩展文件和目录的权限控制。ACL可以为单个文件或目录的访问控制列表添加额外的访问规则,使得可以授予或撤销更细粒度的权限。
在传统的Linux 文件权限控制中,每个文件或目录只有一个所有者、一个所属组和一个其他用户的权限设置。这种权限模型有时候不够灵活,不能满足更复杂的权限需求。 例如,如果一个文件需要同时授权给两个用户组,或者需要不同用户对同一文件的不同访问权限,则传统的文件权限控制就无法满足这种需求。
ACL的基本概念是让每个文件或目录可以有多个用户和用户组的访问规则。每个规则都是由用户或用户组、权限和类型组成的。在设置ACL之后,用户或用户组可以被授权或者被禁止访问文件或目录,同时可以为每个用户或用户组定义不同的权限,例如读取、写入、执行、删除等等。
例如,要为目录/mydir设置ACL规则以授权用户johndoe读取和写入目录,可以使用以下命令
setfacl 给文件针对某个用户 设置acl权限
-m 修改acl策略
-x 去掉某个用户或者某个组的权限
-b 删除所有acl策略
-R 递归 通常用于目录中
要查看目录/mydir的ACL规则,可以使用以下命令:
getfacl /mydir
这将列出目录/mydir的所有ACL规则。。
UMASK
表示创建文件阿默认权限
root umask值
目录 | 文件 | |
最大默认权限 | 777 rwxrwxrwx | 666 rw-rw-rw- |
umask | 022 ----w--w- | 022 ----w--w- |
初始权限 | 755 rwxr-xr-x | 644 rw-r--r-- |
普通用户umask值
目录 | 文件 | |
最大默认权限 | 777 rwxrwxrwx | 666 rw-rw-rw- |
umask | 002 -------w- | 002 -------w- |
初始权限 | 775 rwxrwxr-x | 664 rw-rw-r-- |
当umask 011 创建文件默认权限应该是 655 实际运行时会变成666
666 —> rw-rw-rw-
011 —> -----x--x
相减得
666 —> rw-rw-rw-
这个特殊情况只出现于文件
修改umask值
临时修改:umask umask值 umask 044