linux_权限管理

linux一切皆文件,所以此处所说的权限为文件权限:
  权限类别:
    r,w,x,-

文件系统的三组权限,每组权限由三个权限组成,分别是属主权限,属组权限,other权限

  文件:
    r: 可读,可以使用类似cat等命令查看文件内容;
    w: 可写,可以编辑或删除此文件;
    x: 可执行,eXacutable,可以命令提示符下当做命令提交给内核运行;

  目录:
    r: 可以对此目录执行ls以列出内部的所有文件;
    w: 可以在此目录中创建文件;
    x: 可以使用cd切换进此目录,也可以使用ls -l 查看内部文件的详细信息;
 
  mode:
    r = 100 -> 4
    w = 010 -> 2
    x = 001 -> 1

  三类用户:
    u: 属主 owner
    g: 属组 group
    o: 其他用户 other

  chown: 改变文件属主(只有管理员可以使用此命令)
    chown username filename,…
       -R:--修改目录及其内部文件的属主,递归
       --reference=/path/to/somefile file,…   (将文件属主属组设置为参考对象一致)
 
  可以使用chown 同时更改文件的属主和属组:
    chown ownername:groupname filename,…
 
 
  chgrp: 改变文件属组
    chgrp groupname file,…
       -R:
       --reference=/tmp/test filename,…

  chmod: 修改文件的权限
    chmod mode filename,…
       -R
       --reference=/tmp/test

       修改某类或某些类用户权限:
       u,g,o,a
         chmod <u|g|o|a> = mode filename,…
                +
                -
umask:
    /etc/bashrc
    用户创建的文件及目录的默认权限:
       文件: = 666-umask
       目录: = 777-umask
    umask 023
       文件:666-023 = 643 => 644   文件默认不能具有执行权限,如果算得的结果中有执行权限,则将其权限+1
       目录:777-023 = 754


特殊权限:
  SUID: 运行某程序时,相应进程的属主是程序文件自身的属主,而不是执行用户
    给文件添加SUID权限: chmod u+s file_name
                         chmod u-s file_name
       如果文件本来具有x权限,则执行权限位显示为"s";否则显示为"S"

  SGID: 运行某程序时,相应的进程的属组是程序文件自身的属组,而不是执行用户的属组
    添加SGID权限:chmod g+s file_name
                  chmod g-s file_name

     SGID的一个应用场景:
         一个目录下,所有用户都能访问编辑任意用户创建的文件:
       1.给所有需要访问的用户添加共同的附加组
       2.修改该目录的属组为用户的共同附加组
       3.给该目录增加SGID权限; chmod g+s dir_name
          注意:此种方式下,所有用户都能对任意用户的文件进行所有操作,包括删除

  Sticky: 在一个公共目录,每个都可以创建文件,删除自己的文件,但不能删除别人的文件
    chmod o+t dir_name
     chmod 0-t dir_name
 
  001 : Sticky -->t  -->1
  010 : SGID   -->s  -->2
  100 : SUID   -->s  -->4
 
  chmod 5755 /tmp/test/  ==> chmod u=rwxs,g=rx,o=rxt /tmp/test

  umask : 0022


posted @ 2016-01-04 20:50  Mr.hale  阅读(158)  评论(0编辑  收藏  举报