[root@1060a ~]# ls -l 总用量 8 -rw------- 1 root root 1206 11月 2 19:40 anaconda-ks.cfg drwxr-xr-x 2 root root 59 11月 2 19:42 Desktop drwxr-xr-x 2 root root 6 11月 2 19:37 Documents drwxr-xr-x 2 root root 6 11月 2 19:37 Downloads -rw------- 1 root root 1483 11月 2 19:41 initial-setup-ks.cfg drwxr-xr-x 2 root root 32 11月 2 19:37 Music drwxr-xr-x 3 root root 24 11月 2 19:37 Pictures drwxr-xr-x 2 root root 6 11月 2 19:37 Videos 第一行:总用量(total)表示当前显示的文件和目录的大小总和。 之后的每一行可以分为8个字段 -|rw------- | 1 | root | root | 1206 | 11月 2 19:40 | anaconda-ks.cfg (1)文件类型。-表示这是一个普通文件。 d 目录 l 链接文件 b 块设备文件 (2)权限,每三位一组,分别对应拥有人,所属组和其他用户。当文件存在ACL权限时,在最后会添加一个'+'号。 (3)对目录而言:该字段表示目录下子目录的数量,该位置最小值为2。因为所有目录下都会存在'.'和'..',表示当前目录和上一级目录。 对文件而言:该字段表示文件的硬链接数量。 (4)文件拥有人。 (5)文件所属组。 (6)文件大小。 (7)文件内容最后一次修改时间。 每一个文件存在四个时间戳,可以使用stat命令进行查看 [root@1060a ~]# stat anaconda-ks.cfg 文件:anaconda-ks.cfg 大小:1206 块:8 IO 块:4096 普通文件 设备:fd00h/64768d Inode:201333825 硬链接:1 权限:(0600/-rw-------) Uid:( 0/ root) Gid:( 0/ root) 最近访问:2023-11-06 10:33:19.462014094 +0800 //最后一次查看文件内容的时间 最近更改:2023-11-02 19:40:42.632018072 +0800 //最后一次修改文件内容的时间 最近改动:2023-11-06 10:34:14.722133463 +0800 //最后一次修改文件属性的时间 创建时间:2023-11-02 19:40:42.592018070 +0800 //文件被创建的时间 (8)文件名。
权限规定系统中用户可以对文件进行什么操作。
Linux中基础权限一个有三个:r(read)——读,w(write)——写,x(execute)——执行。
权限对文件的作用:
权限对目录的作用:
注:
当用户运行一个命令时,会产生一个对于的进程,该进程UID和GID将继承用户的UID和GID。
权限优先级:user>group>other
chmod [-R] u/g/o/a +/-/= filename(dirname) u:表示文件拥有人 g:文件拥有组 o:其他人 u+g+o=a(所用人) +:在原有权限上增加权限 -:在原有权限上减掉权限 =:覆盖原来的权限 直接赋权 chmod u=rwx,g=rwx,o=rwx file/dir chmod ugo=rwx file/dir chmod a=rwx fiel/dir 加减赋权 chmod u+rw,g+r,o+x file/dir chmod u-w,g-r,o-x file/dir
chmod [-R] 权限数 filename(dirname) 权限数有三位,从第一位开始分别表示所有人,所属组,其他人权限如755表示该文字所用人拥有rwx权限,所属组和其他用户拥有rw权限。 eg: chmod 777 file1 赋予所有用户rwx权限 chmod 651 fiel1 赋予拥有人rw权限,所属组rx权限,其他用户x权限
注:字符式的直接赋权和数字式修改均会直接覆盖之前的权限,生产环境中建议使用加减赋权。
chmod -R 777 dir 将目录权限以及目录下所有文件和目录的权限设置为777。
chown [-R] [OWNER][:[GROUP]] FILE... 将file1的所属人修改为admin #chown admin file1 将file1的所属组修改为admin #chown :admin file1 将file1的所属人修改为user1,所属组修改为user1 #chown user1:user1 file1
除了root用户之外,文件的拥有人同样可以修改该文件的权限和所属组。
文件的拥有人:文件的拥有人可以修改文件的权限
文件的拥有人只有两种来源:
文件的所属组:
修改文件的所属组,该用户必须是该组的成员,组可以是附加组或者私有组; 文件拥有组的来源:
文件拥有人修改权限 [user1@rhce text]$ ll total 0 -rw-r--r--. 1 user1 it 0 Sep 13 14:25 file1 [user1@rhce text]$ chmod 666 file1 [user1@rhce text]$ ll total 0 -rw-rw-rw-. 1 user1 it 0 Sep 13 14:25 file1 文件拥有人修改所属组 修改所属组需要注意,修改文件的所属组,该组必须是用户人的主要组或附属组 [user1@rhce text]$ id uid=1001(user1) gid=1004(it) groups=1004(it),1002(user2) context=unconfined_u:unconfined_r:unconfined_t:s0-s0:c0.c1023 [user1@rhce text]$ ll total 0 -rw-rw-rw-. 1 user1 it 0 Sep 13 14:25 file1 [user1@rhce text]$ chown :user2 file1 [user1@rhce text]$ ll total 0 -rw-rw-rw-. 1 user1 user2 0 Sep 13 14:25 file1 [user1@rhce text]$ chown :user1 file1 chown: changing group of 'file1': Operation not permitted
只要用户对设有 SUID 的文件有执行权限,那么当用户执行此文件时,会以文件所有者的身份去执行此文件(该权限位于拥有人的x权限上)
eg:当我使用tester用户去修改密码的过程
作用于文件:效果于SUID权限相似,当用户对设有SGID权限的文件拥有执行权限,那么当用户执行文件时,会以文件所属组的身份去执行此文件。
作用于目录:当一个目录被赋予SGID权限后,所有用户在创建文件和目录时,该文件或目录的所属组将继承目录的所属组。也就是,只有用户对设用SGID的目录拥有rwx权限时,SGID的功能才能完全发挥。
粘滞位,防删除位。如果一个目录有该权限,即在该目录内,只用文件或者目录的所有人和root用户可以删除目录和文件。(该权限位于其他用户的x权限上)
注:该权限只对目录有效,对文件无效。
特殊权限表示方式
特殊权限设置
设置suid chmod u+s filename 设置sgid chmod g+s filename/dirname 设置sticky chmod o+t dirname 也可通过数字来设置 设置suid chmod 4xxx filename 设置sgid chmod 2xxx filename/dirname 设置sticky chmod 1xxx dirname
隐藏权限是为了给文件加上一层防护,防止root用户的误操作。
i权限:只可以查看文件内容,不能删除和修改文件内容。
i
a权限:可以查看和追加文件内容,不能删除文件和文件之前的内容。
a
设置隐藏权限:chattr
语法:
chattr +/- 权限 文件名 eg:给文件添加/去掉i权限 chattr +/-i file
查看隐藏权限:lsattr
lsattr 文件名 eg:查看文件的隐藏权限 [root@localhost ~]# lsattr text -----a---------------- text
当文件仅由单个所有者和指定的一组人使用时,标准 Linux文件权限即可满足要求。但是,有些用例要求多个指定的用户和组以不同的文件权限集来访问文件。 访问控制列表(ACL)便提供了这一功能。
借助ACL,可以使用与常规文件权限相同的权限标志 (读取、写入和执行)向由用户名、组名、UID 或 GID 标识的多个用户和组授予权限。除了文件所有者和文件的组从属关系之外,这些额外的用户和组分别被称为指定用户和指定组,因为它们不是在长列表中指定的,而是在ACL中指定的。
当一个文件设置了ACL权限后。ls -l命令查询的是最少的ACL设置。
ls -l
[root@1060a opt]# ll file -rw-rw-r--+ 1 root root 0 11月 6 10:59 file 10个权限字符,末尾的加号表示该文件存在若干条目的ACL权限 用户:显示用户ACL设置,与标准的文件设置相同 组:显示当前ACL掩码设置,而不是所属组权限 其他:显示其他ACL设置,与标准的文件设置相同。 当文件设置ACL权限后,使用chmod修改该文件的所属组权限,修改的不是组权限而是更改ACL掩码。如果需要设置所属组权限,则需要使用设置ACL权限的命令。
查看ACL权限的命令:getfacl
getfacl
要显示文件上的ACL设置,使用 getfacl file
getfacl file
[root@1060a opt]# getfacl file # file: file # owner: root # group: root user::rw- user:admin:rwx #effective:rw- group::r-- mask::rw- other::r-- 注释条目: # file: file 该文件用户名 # owner: root 该文件的拥有人 # group: root 该文件的所属组 用户条目 user::rw- user:admin:rwx #effective:rw- 第一行文件拥有人权限。user的权限为rw- 第二行指定用户权限。用户admin权限为rwx,但是掩码将有效权限控制为rw 组条目 group::r-- 组所有者权限。 掩码条目 mask::rw- 掩码设置显示可能为所有指定用户和组,提供的最大权限。 其他条目 other::r-- 其他用户权限。
要显示文件上的ACL设置,使用 getfacl directory
getfacl directory
[root@1060a tmp]# getfacl dir # file: dir # owner: user # group: operators # flags:-S- user::rwX user:consultant3:--- user:1005:rwx group::rwx group:consultant1:r-x group:2210:rwx mask::rwx other::--- default:user::rwx default;user:consultant3:--- default:group::rwx default:group:consultant1:r-x default:mask::rwx default:other::-- 注释条目 # file: dir # owner: user # group: operators # flags:-S- 前三行是注释,用于识别目录名,拥有人和所属组。如果存在特殊权限,则会出现在第四行注释来显示所设置的标志。这里表示设置了sgid。 标准ACL条目 user::rwX user:consultant3:--- user:1005:rwx group::rwx group:consultant1:r-x group:2210:rwx mask::rwx other::--- 与上午中文件上的ACL中相同。 默认条目 default:user::rwx default;user:consultant3:--- default:group::rwx default:group:consultant1:r-x default:mask::rwx default:other::-- 默认权限,在该目录下创建新文件或目录时,会自动获得这些ACL权限。 目录会完全继承所有默认权限。 文件同样会继承所有权限,但是会使用权限掩码将x权限移除。 [root@1060a tmp]# setfacl -m d:user:admin:rwx dir/ [root@1060a tmp]# getfacl dir/ # file: dir/ # owner: root # group: root user::rwx group::r-x other::r-x default:user::rwx default:user:admin:rwx default:group::r-x default:mask::rwx default:other::r-x [root@1060a tmp]# touch dir/file [root@1060a tmp]# getfacl dir/file # file: dir/file # owner: root # group: root user::rw- user:admin:rwx #effective:rw- group::r-x #effective:r-- mask::rw- other::r-- 注意: getfacl命令的输出可以用作setfacl的输入,用来恢复ACL或者从源文件或目录负责ACL并将其保存到新文件中。 eg: [root@localhost tmp]# getfacl 123 > 123-acl [root@localhost tmp]# touch text [root@localhost tmp]# setfacl --set-file=123-acl t
在决定一个进程能否访问文件时,将按如下应用文件权限和ACL。
命令:setfacl
setfacl
setfacl 选项 filename/dirname 常用选项: -m 设当ACL权限 -x 删除指定的ACL权限 -b 删除所有ACL权限 -d 设置默认ACL权限 -k 删除默认权限 -R 递归设置ACL。 eg: 给用户st赋予ACL的只读权限 # setfacl -m u:st:r class 给用户组stg赋予ACL的读执行权限 #setfacl -m g:stg:rx class 删除用户组stg的ACL权限 #setfacl -x g:stg: class 删除用户st的ACL权限 #setfacl -x g:st: class 清楚文件或目录的所有ACL权限 #setfacl -b class 设置目录的默认权限 #setfacl -dm u:user1:rwx,g:user1:rx dir #setfacl -m d:u:user1:rwx,d:g:user1:rx dir
内容与之前的权限管理相差不大,该文档使用UOS-server-1060a系统测试,并补充了部分内容。
还要啥内容,各位大佬可以说一下,我去新建文件
请问-rwxrwxrwx的第一位文件类型有没有修改方法?
专业
属实专业
Featured Collection
Popular Events
【1060a系列】权限管理
一、ls -l内容解释
二、基础权限
权限规定系统中用户可以对文件进行什么操作。
Linux中基础权限一个有三个:r(read)——读,w(write)——写,x(execute)——执行。
(1)权限对目录和文件的作用
权限对文件的作用:
权限对目录的作用:
注:
(2)判断是否拥有权限
当用户运行一个命令时,会产生一个对于的进程,该进程UID和GID将继承用户的UID和GID。
权限优先级:user>group>other
(3)权限修改
修改权限:chmod
字符式修改
数字式修改
注:字符式的直接赋权和数字式修改均会直接覆盖之前的权限,生产环境中建议使用加减赋权。
递归设置权限
修改拥有人和所属组
除了root用户之外,文件的拥有人同样可以修改该文件的权限和所属组。
文件的拥有人:文件的拥有人可以修改文件的权限
文件的拥有人只有两种来源:
文件的所属组:
修改文件的所属组,该用户必须是该组的成员,组可以是附加组或者私有组;
文件拥有组的来源:
三、特殊权限
(1)三种特殊权限
SUID
只要用户对设有 SUID 的文件有执行权限,那么当用户执行此文件时,会以文件所有者的身份去执行此文件(该权限位于拥有人的x权限上)
eg:当我使用tester用户去修改密码的过程
SGID
作用于文件:效果于SUID权限相似,当用户对设有SGID权限的文件拥有执行权限,那么当用户执行文件时,会以文件所属组的身份去执行此文件。
作用于目录:当一个目录被赋予SGID权限后,所有用户在创建文件和目录时,该文件或目录的所属组将继承目录的所属组。也就是,只有用户对设用SGID的目录拥有rwx权限时,SGID的功能才能完全发挥。
sticky(sbit)
粘滞位,防删除位。如果一个目录有该权限,即在该目录内,只用文件或者目录的所有人和root用户可以删除目录和文件。(该权限位于其他用户的x权限上)
注:该权限只对目录有效,对文件无效。
(2)特殊权限管理
特殊权限表示方式
特殊权限设置
四、隐藏权限
隐藏权限是为了给文件加上一层防护,防止root用户的误操作。
(1)两种常见隐藏权限
i权限:只可以查看文件内容,不能删除和修改文件内容。a权限:可以查看和追加文件内容,不能删除文件和文件之前的内容。(2)隐藏权限管理
设置隐藏权限:chattr
语法:
查看隐藏权限:lsattr
语法:
五、ACL权限
访问控制列表
当文件仅由单个所有者和指定的一组人使用时,标准 Linux文件权限即可满足要求。但是,有些用例要求多个指定的用户和组以不同的文件权限集来访问文件。 访问控制列表(ACL)便提供了这一功能。
借助ACL,可以使用与常规文件权限相同的权限标志 (读取、写入和执行)向由用户名、组名、UID 或 GID 标识的多个用户和组授予权限。除了文件所有者和文件的组从属关系之外,这些额外的用户和组分别被称为指定用户和指定组,因为它们不是在长列表中指定的,而是在ACL中指定的。
查看和解释ACL权限
当一个文件设置了ACL权限后。
ls -l命令查询的是最少的ACL设置。查看ACL权限的命令:
getfacl查看文件ACL
要显示文件上的ACL设置,使用
getfacl file查看目录ACL
要显示文件上的ACL设置,使用
getfacl directoryACL权限优先级
在决定一个进程能否访问文件时,将按如下应用文件权限和ACL。
ACL权限设置
命令:
setfacl语法: