基本权限

权限: 表示用户对文件的操作

[root@localhost ~]# ls -l /root/anaconda-ks.cfg

-rw-------. 1 root root 1647 12月 19 18:03 /root/anaconda-ks.cfg

rwx | rwx | rwx

拥有者权限 所属组权限 其他人权限

u g o

对于文件

r ------ read (读权限)------ cat head tail more less

w ------- write(写权限) ----- vim gedit > >>

x ------ execute (执行权限)--- 绝对路径执行 相对路径执行 ./ root账号x即可执行 普通账号rx可执行

 

对于目录

r ----- read (可读取目录文件)------- ls r 只能查看文件名 rx可以查看文件的详细信息

w ----- write (可使用目录文件)------ touch mkdir rm wx能删除已知文件名文件 rwx可以删除所有文件

x ------ exec (可操作目录文件) ------ cd

修改权限 chmod

chmod u+rwx file/dir 使拥有者具有读写执行权限

chmod u+r,g+w,o-x file/dir 使拥有者具有读权限,使所属组有写权限,使其它人没有执行权限

chmod ug+rw,o-r file/dir 使拥有者和所属组有读写权限,使其他人没有读权限

chmod ugo+rwx file/dir 使所有人有读写执行权限

chmod a+rwx file/dir 使所有人有读写执行权限

chmod u=rwx file/dir 使拥有者的权限改为读写执行

chmod u=r,g=w,o=x file/dir 使拥有者只有读、所属组只有写、其他人只有执行权限

chmod ug=rwx,o= file/dir 使拥有者和所属组的权限改为读写执行,其他人没有任何权限

chmod ugo=rwx file/dir 使所有人的权限改为读、写、执行权限

chmod a=rwx file/dir 使所有人的权限改为读、写、执行权限

一个文件能不能被删除不取决于自身权限,而是取决于所在目录权限

数字表示法

r ------------ 4

w ----------- 2

x ------------ 1

如将所有人对/tmp/目录文件的权限改为读写执行:

chmod -R 777 /tmp/

常见目录权限

/ r-xr-xr-x 555

/tmp rwxrwxrwt 1777

/etc rwxr-xr-x 755

/usr rwxr-xr-x 755

/root r-xr-x--- 550

/etc/passwd rw-r--r-- 644

/etc/shadow --------- 000

/home/qqzj rwx------ 700 (用户的家目录)

root用户创建文件的默认权限 rw-r--r-- 644

root用户创建目录的默认权限 rwxr-xr-x 755

普通用户创建文件的默认权限 rw-rw-r-- 664

普通用户创建目录的默认权限 rwxrwxr-x 775

umask (权限反掩码)

权限反掩码为设置用户创建文件时文件所拥有的默认权限,一般在/etc/profile、$ [HOME]/.bash_profile或$[HOME]/.profile中设置umask值。

一般情况下 root 的权限反掩码为0022,普通用户的权限反掩码为0002

查看umask值:

umask.png文件的原始权限是666,目录的原始权限是777.

root用户文件的默认权限是644,目录文件的默认权限是755

默认权限(文件或目录创建出来后的权限) =原始权限+umask(反掩码)

计算方法是:umask 取反 后与原始权限 相与 得出结果.

计算过程:022----000 010 010   ---取反---111 101  101 

 666 ----110 110 110       777 ---111 111 111

              111 101  101                  111 101  101 

---------------------------------------------------------------------------

              110 100 100  (644)  111 101  101(755)

上面的计算过程可能不太清楚,用下面的一个例子来演示一下:

我当前的用户为root,umask为0022

umask1.pngumask2.png上面两幅图可以看到root创建的目录文件和普通文件的权限分别为:目录权限755,普通文件644

更改一下root的umask值为0011:

umask3.png再查看创建的目录文件和普通文件的默认权限:

umask4.png修改umaks后发现普通文件默认权限是666,目录文件默认权限时755

算法:011   ----000 001 001  --取反-- 111 110 110

 666 ----110 110 110      777 ---111 111 111

           111 110 110           111 110 110

----------------------------------------------------

       110 110 110  (666)  111 110 110(755)

拥有者所属组的修改

[root@localhost tmp]# chown robin /tmp/aa.txt

[root@localhost tmp]# chgrp east /tmp/aa.txt

[root@localhost tmp]# chown .root /tmp/aa.txt

或者

[root@localhost tmp]# chown :root /tmp/aa.txt

[root@localhost tmp]# chown zorror:east /tmp/aa.txt .和: 都可以

[root@localhost tmp]# chown -R zorro.east /tmp/test/

高级权限

suid set uid

作用: 任何用户在运行拥有suid权限的二进制可执行文件(命令)时,都以改文件拥有者(root)的权限去执行意思就是当一个文件拥有了uid权限时,所有用户都可以被文件当作文件拥有者去使用这个文件。

suid只能作用于拥有者位置

添加权限: chmod u+s file

[root@localhost ~]# chmod u+s /bin/cat

[root@localhost ~]# chmod u-s /bin/cat

sgid set gid

作用: 任何用户在拥有sgid权限的目录下创建的文件,都继承该目录的组意思是当一个目录文件拥有了gid权限时,所有用户再这个目录下创建文件时,被创建的文件的默认所属组会成为这个目录文件的所属组

sgid只能作用于所属组位置 并且只能作用到目录上

添加权限: chmod g+s dir

sticky(粘贴位 冒险位)

作用: 任何用户在拥有sticky权限的目录下创建文件只属于自己,其他人无权删除

sticky只能作用于其他人位置

添加权限: chmod o+t dir

数字表示方法

suid ----------- 4

sgid ----------- 2

sticky ----------- 1

1777

4777

2777

3777

源文件是否有执行权限(通过大小写字母判断)

[root@localhost tmp]# chmod 7777 /tmp/aa.txt

[root@localhost tmp]# ll /tmp/aa.txt

-rwsrwsrwt 1 robin root 0 12月 21 16:02 aa.txt

[root@localhost tmp]# ll /tmp/aa.txt

-rwSrwSrwT 1 robin root 0 12月 21 16:02 /tmp/aa.txt

facl文件访问控制列表

facl: 可以给每个用户或者组单独设置权限,不用考虑其他用户的权限设置

[root@localhost tmp]# setfacl -m u:robin:rwx /tmp/aa.txt

[root@localhost tmp]# ll

-rw-rwxr--+ 1 root root 0 12月 22 14:05 aa.txt

 

[root@localhost tmp]# getfacl /tmp/aa.txt

facl.png设置mask值

[root@localhost tmp]# setfacl -m m:r /tmp/aa.txt

[root@localhost tmp]# getfacl /tmp/aa.txt

mask.pngmask值可以控制所有额外的用户或者组的权限

删除额外用户权限

[root@localhost tmp]# setfacl -x u:zorro /tmp/aa.txt

取消facl(包括用户和组)

[root@localhost tmp]# setfacl -b /tmp/aa.txt # -b 删除当前所有的额外权限并且取消facl的+

设置组

[root@localhost tmp]# setfacl -m g:east:rwx /tmp/aa.txt

[root@localhost tmp]# setfacl -x g:east /tmp/aa.txt

设置继承默认权限(目录)

[root@localhost tmp]# setfacl -m u:robin:rwx /tmp/test/

[root@localhost tmp]# setfacl -d -m u:robin:rwx /tmp/test/

-d 设置后 该目录下的所有文件或者目录都会继承 robin的额外权限

[root@localhost tmp]# getfacl test/

facl-tqtv.png文件系统属性

[root@localhost tmp]# chattr +i /tmp/aa.txt

[root@localhost tmp]# lsattr /tmp/aa.txt

 

i 属性

文件: 任何用户都不可以删除,移动,修改权限,修改所属组,修改时间,修改内容. 只能复制和查看

目录: 目录本身 任何用户都不可以删除,创建,移动,重命名,修改权限,修改所属组,修改时间 只能复制和查看

目录下的文件: 任何用户都不可以删除,移动,重命名, 可以修改权限,所属组,修改时间 修改内容

 

a属性

文件: 任何用户都不可以删除,移动,修改权限,修改所属组,修改时间,修改内容. 只能追加内容 复制和查看

目录: 目录本身 任何用户都不可以删除,移动,重命名,修改权限,修改所属组,修改时间 只能创建,复制和查看

目录下的文件: 任何用户都不可以删除,移动,重命名, 可以修改权限,所属组,修改时间 修改内容