Linux运维之权限设定

一、查看文件的属性
输入命令: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.

猜你喜欢

转载自blog.csdn.net/qq_42303254/article/details/83721673