一、查看文件的属性
输入命令:ls -l
输出结果:-rw-r--r--. 1 root root 0 Oct 28 04:52 file
a b c d e f g h
a.文件的类型:-:普通文件;d:目录文件;c:字符设备;s:套接字;p:管道;b:块设备;l:链接文件
b.文件的权限(读 写 执行):r:可读;w:可写;x:可执行;-没有权限
c.
对文件来说:文件内容被系统记录的次数(链接数)(新建一个文件,那么该处就默认为1)
对目录来说:目录中文件属性的字节数(新建一个目录,那么该处就默认为2,如果在该目录中继续新建1个目录那么
该处就加1,新建两个目录,该处就加2)
d.文件的拥有者
e.文件的所属组
f.文件的内容大小(单位为bb---字节)
g.文件最后一次被修改的时间
h.文件名
二、文件拥有者和所属组的管理
1.对文件来说
(1)chown username file 更改文件的拥有者
(2)chgrp groupname file 更改文件的所属组
(3)chown username.groupname file 更改文件的拥有者及所属组
2.对目录来说
(1)chmod username dir 更改目录本身的拥有者
(2)chown -R username dir 更该目录本身及其内部的拥有者
(3)chgrp groupname dir 更改目录本身的所属组
(4)chgrp -R groupname dir 更改目录本身及其内部的所属组
(5)chown username.groupname dir 更改目录本身的拥有者和所属组
(6)chown -R username.groupname dir 更改目录本身及其内部的拥有者和所属组(-R表示递归)
三、文件的普通权限
rw-|r--|r--
u g o
其中:u指拥有者;g指所属组;o指其他用户
1.r:可读 对文件:可以查看文件的字符(内容); 对目录:可以查看目录中文件的信息
2.w:可写 对文件:可以更改文件内的字符;对目录:可以在目录中添加或者删除文件或目录
3.x:可执行 对文件:可以运行文件内记录的程序的动作;对目录:可以进入目录
四、字符方式修改文件或目录的权限
chmod [-R] <u|g|o><+|-><r|w|x> filename |dir
示例:
1.对文件来说
(1)chmod u-x filename filename文件的拥有者去掉可执行的权限
(2)chmod g+w,o+x filename filename文件的所属组加上可写的权限,其他用户加上可执行的权限
(3)chmod ugo-r filename filename文件的拥有者,所属组和其他用户,都去掉可读的权限
2.对目录来说
(1)chmod g+w dir dir目录的所属组加上可读的权限
(2)chmod u-r,g+w dir dir目录的拥有者去掉可读的权限,所属组加上可写的权限
(3)chmod ugo+rwx dir dir目录的拥有者,所属组,其他用户都加上可读,可写,可执行的权限
(4)chmod -R ugo+rwx dir目录本身及其内部的拥有者,所属组,其他用户都加上可读,可写,可执行的权限
五、数字的方式修改文件或目录的权限
1.rwx: r表示4 w表示2 x表示1
2.文件权限数字表示
rw-|r--|r--
u g o
u的权限为rw- = 4+2+0 = 6;g的权限为r-- = 4+0+0 = 4;o的权限为r-- = 4+0+0 = 4
所以该文件的权限为644
3.chmod 修改后的权限值 filename|dir
(1)对文件来说
chmod 776 file 修改文件的权限为776
(2)对目录来说
chmod 666 dir 修改目录本身的权限为666
chmod -R 777 dir 修改目录本身及其内部的权限为777
4.7=rwx 6=rw- 5=r-x 4=r-- 3=-wx 2=-w- 1=--x 0=---
注意:所以设定的权限单个数字不能超过7,同理umask值也是一样不能超过7。
六、系统默认权限设定
1.文件系统默认的满权限为666;目录系统默认的满权限为777
2.系统默认权限的设定方法
(1)临时设定方式
umask 查看系统保留权限默认为022;umask 要设定的数字
示例:umask 077 将系统默认保留的权限设为055,这个设定为临时设定,只在当前的shell中生效
(2)永久设定方式
修改/etc/bashrc文件(在第70行)及/etc/profile文件(在第59行)
第一步:vim /etc/bashrc
70 if [ $UID -gt 199 ] && [ "`/usr/bin/id -gn`" = "`/usr/bin/id -un`" ]; th en
71 umask 002 普通用户的默认保留权限
72 else
73 umask 022 超级管理用户root的默认保留权限
74 fi
第二步:vim /etc/profile
59 if [ $UID -gt 199 ] && [ "`/usr/bin/id -gn`" = "`/usr/bin/id -un`" ]; then
60 umask 002 普通用户的默认保留权限
61 else
62 umask 022 超级管理用户root的默认保留权限
63 fi
注意:
/etc/bashrc和/etc/profile这两个文件必须都进行修改,并且修改必须一致。
第三步:修改之后
source /etc/bashrc
source /etc/profile
注意:在777-umask值的时候是先写成rwx的形式,然后在一位一位的相减,如果是负数代表没有权限。示例:666-055即为rw-|rw-x|rw- - ---|r-x|r-x = rw-|-w-|-w- 换算为二进制为622而并非611。因此要特别注意,是换算为rwx再进行相减的操作。
七、acl访问控制列表
1.acl相当于access control]:指定特殊用户对特殊文件有特殊权限
2.acl列表的设定,删除和关闭
(1)对文件来说
1.acl列表的设定:setfacl -m <u|g>:<username|groupname>:权限 filename
其中-m指设定,u表示用户,g表示组
示例:setfacl -m u:student:rwx file
2.acl列表的查看:getfacl filename
3.删除acl列表中的 username|groupname
setfacl -x <u|g>:<username|groupname> filename
注意:对于删除目录的acl列表不需要加d
4.acl列表的关闭
setfacl -b filename
(2)对目录来说
1.acl列表的设定:setfacl -m d:<u|g>:<username|groupname>:权限 filename(与文件不同的是要加d;并且默认权限只对新建的文件或目录生效,对已经建立的文件无效,对目录本身也无效)
其中-m指设定,u表示用户,g表示组,d表示目录
2.acl列表的查看:getfacl filename
3.删除acl列表中的 username|groupname
setfacl -x <u|g>:<username|groupname> dir(同文件)
4.acl列表的关闭
setfacl -b filename(同文件)
八、特殊权限位
1.suid冒险位
(1)只针对二进制可执行文件(一段代码),可执行文件的查看 which 命令;示例:which touch
(2)文件内记录的程序产生的进程的拥有人是这个二进制可执行文件的拥有人,和进程的发起人身份无关(例如:touch这个命令的拥有者是root用户,如果不加冒险位,那么,在普通用户student用户下touch的文件的拥有者是普通用户student用户,而不是touch命令的拥有者root用户;但是一旦加了冒险位,那么在普通用户student用户下touch的文件的拥有者不再是普通用户student用户,而是touch命令的拥有者root用户。)
(3)设定方式
设定方式1:chmod u+s filename(二进制可执行文件);
设定方式2:chmod 4xxx filename(利用suid的值来设定(suid的值为4))
2.sgid强制位
(1)对文件而言:
只针对二进制可执行文件,任何人运行二进制可执行文件程序时程序所产生的进程的所属组都是这个二进制文件的所属组,和进程的发起人的组没有关系(例如:touch这个命令的所属组是root用户,如果不加冒险位,那么,在普通用户student用户下touch的文件的所属组是普通用户student用户,而不是touch命令的所属组root用户;但是一旦加了冒险位,那么在普通用户student用户下touch的文件的所属组不再是普通用户student用户,而是touch命令的所属组root用户。)
(2)对目录而言:
当目录拥有sgid权限后,目录中新建的所有文件的所属组都自动归到该目录的所属组中,和文件的建立者所在的组无关(例如:在root用户下mkdir的目录的所属组是root用户,如果不加冒险位,那么,在普通用户student用户下进入该目录touch的文件或者mkdir的目录的所属组是普通用户student用户,而不是mkdir的目录的的所属组root用户;但是一旦加了冒险位,那么在普通用户student用户下进入该目录touch的文件或者mkdir的目录的所属组不再是普通用户student用户,而是touch命令该目录的所属组root用户。)
(3)设定方式:
设定方式1:chmod g+s filename(二进制可执行文件)|dir
设定方式2:chmod 2xxx filename|dir(利用sgid的值来设定(sgid的值为2))
3.sticky粘贴位
(1)只针对目录(例如:在root用户下mkdir的目录的所属组是root用户,如果不加粘贴位,那么,在普通用户student用户下进入该目录touch的文件或者mkdir的目录可以被其他能够进入该目录的普通用户删除;但是一旦加了粘贴位,那么在普通用户student用户下进入该目录touch的文件或者mkdir的目录不可以被其他能够进入该目录的普通用户删除,只能有touch文件或者mkdir目录的用户撒谎年初。)即当一个目录有t的权限,那么目录中的文件只能被文件的拥有者删除
(2)设定方式
设定方式1:chmod o+t dir
设定方式2:chmod 1xxx dir(利用t的值来设定(t的值为1))
九、练习题
1.
2.
3.
4.
5.