基本权限
权限: 表示用户对文件的操作
[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值:
文件的原始权限是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
上面两幅图可以看到root创建的目录文件和普通文件的权限分别为:目录权限755,普通文件644
更改一下root的umask值为0011:
再查看创建的目录文件和普通文件的默认权限:
修改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
设置mask值
[root@localhost tmp]# setfacl -m m:r /tmp/aa.txt
[root@localhost tmp]# getfacl /tmp/aa.txt
mask值可以控制所有额外的用户或者组的权限
删除额外用户权限
[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/
文件系统属性
[root@localhost tmp]# chattr +i /tmp/aa.txt
[root@localhost tmp]# lsattr /tmp/aa.txt
i 属性
文件: 任何用户都不可以删除,移动,修改权限,修改所属组,修改时间,修改内容. 只能复制和查看
目录: 目录本身 任何用户都不可以删除,创建,移动,重命名,修改权限,修改所属组,修改时间 只能复制和查看
目录下的文件: 任何用户都不可以删除,移动,重命名, 可以修改权限,所属组,修改时间 修改内容
a属性
文件: 任何用户都不可以删除,移动,修改权限,修改所属组,修改时间,修改内容. 只能追加内容 复制和查看
目录: 目录本身 任何用户都不可以删除,移动,重命名,修改权限,修改所属组,修改时间 只能创建,复制和查看
目录下的文件: 任何用户都不可以删除,移动,重命名, 可以修改权限,所属组,修改时间 修改内容