首页 > 代码库 > Linux用户、组和权限管理(二)

Linux用户、组和权限管理(二)

上一篇将一些用户和组管理命令写完,接下来是权限管理


权限管理

  每一个目录或文件都有相应的权限位来限制用户是否有权限可以"使用"


  进程安全上下文:

    进程对文件的访问权限应用模型:

      进程的属主与文件的属主是否相同;如果相同,则应用属主权限;

      否则,则检查进程的属主是否属于文件的属组;如果是,则应用属组权限;

      否则,就只能应用other的权限;


    解:当某一个用户访问文件时,会判断用户是否属于文件属主、属组、其它人;依次进行判断,对应某个权限位时,则使用其权限。


  首先看一下文件权限位对应的意义:

  [root@test7_1 sh]# ll test.txt 

  -rwxrwxrwx 1 root root 1186 Apr 16 15:22 test.txt


  rwxrwxrwx:

    左三位:定义user的权限,UID

    中三位:定义group的权限;GID

    右三位:定义other的权限


  权限:

    r:readable, 读

    w:writable, 写

    x:excutable,执行


    目录:

      r:可使用ls命令获取其下的所有文件列表;

      w: 可修改此目录下的文件列表;即创建或删除文件;

      x: 可cd至此目录中,且可使用ls -l来获取所有文件的详细属性信息;


    文件:

      r:可获取文件的数据;

      w: 可修改文件的数据;

      x:可将此文件运行为进程;


    注:目录权限与文件权限是两码事。不是有目录权限后,里面的文件就可以读、改等操作


  权限组合机制:

    --- 000 0

    --x 001 1

    -w- 010 2

    -wx 011 3

    r-- 100 4

    r-x 101 5

    rw- 110 6

    rwx 111 7

    简单的来说:r=4、w=2、x=1,‘-’=0



权限管理命令

  chmod命令:

    chmod [OPTION]... MODE[,MODE]... FILE...

    chmod [OPTION]... OCTAL-MODE FILE...

    chmod [OPTION]... --reference=RFILE FILE...


  三类用户:

    u:代表属主

    g:代表属组

    o:代表其它

    a: 代表所有


  (1)chmod [OPTION]... MODE[,MODE]... FILE...

    MODE表示法:

      赋权表示法:直接操作一类用户的所有权限位rwx;

        u=rwx

        g=rwx

        o=rwx

        a=rwx


      授权表示法:直接操作一类用户的一个权限位r,w,x;

        u+, u-:u+r、u+w、u+x,u-r...

        g+, g-:g+r...,u-r...

        o+, o-:o+r...,o-r...

        a+, a-:a+r...,a-r...


    示例:

       [root@test7_1 sh]# chmod u+w test.txt

       [root@test7_1 sh]# chmod a-w test.txt


  (2)chmod [OPTION]... OCTAL-MODE FILE...

    [root@centos7 ~]# chmod 777 anaconda-ks.cfg


  (3)chmod [OPTION]... --reference=RFILE FILE..(参考anaconda-ks.cfg权限,授权到hello文件上)

    [root@centos7 ~]# chmod --reference=anaconda-ks.cfg hello


  注意:用户仅能修改属主为自己的那些文件的权限;



从属关系管理命令:chown, chgrp


 chown命令:修改所有者和组

    chown [OPTION]... [OWNER][:[GROUP]] FILE...


    两种方式:

      [root@centos7 ~]# chown kwang:kwang hello

      [root@centos7 ~]# chown kwang.kwang hello

    

   chown [OPTION]... --reference=RFILE FILE...

      参考一个文件所有者和组的属性,授权到指定文件上


    选项:

      -R:递归修改


 chgrp命令:修改组属性

    chgrp [OPTION]... GROUP FILE...

    chgrp [OPTION]... --reference=RFILE FILE...

    

  示例:  

    [root@test7_1 sh]# chgrp test2 test.txt


注意:仅管理员可修改文件的属主和属组;

 


umask:文件的权限反向掩码

  当创建文件和目录时,都将有反向掩码和权限位相减为初始权限

  文件:

    666-umask

  目录:

    777-umask

 注意:之所以文件用666去减,表示文件默认不能拥有执行权限;如果减得的结果中有执行权限,则需要将其加1,只能用在文件上;

   umask: 022

      666-023=644

      777-023=755

 

  umask命令:

    umask:查看当前umask

    umask MASK: 设置umask

      [root@centos7 ~]# umask 022

      注意:此类设定仅对当前shell进程有效;



练习:

  1、新建系统组mariadb, 新建系统用户mariadb, 属于mariadb组,要求其没有家目录,且shell为/sbin/nologin;尝试root切换至用户,查看其命令提示符;

  2、新建GID为5000的组mageedu,新建用户gentoo,要求其家目录为/users/gentoo,密码同用户名;

  3、新建用户fedora,其家目录为/users/fedora,密码同用户名;

  4、新建用户www, 其家目录为/users/www;删除www用户,但保留其家目录;

  5、为用户gentoo和fedora新增附加组mageedu; 

  6、复制目录/var/log至/tmp/目录,修改/tmp/log及其内部的所有文件的属组为mageedu,并让属组对目录本身拥有写权限;



额外一个命令,可在复制文件同时设置其权限及属主等

install命令:

  install - copy files and set attributes(复制文件和设置文件属性)


  单源复制:

    install [OPTION]... [-T] SOURCE DEST

  多源复制:

    install [OPTION]... SOURCE... DIRECTORY

    install [OPTION]... -t DIRECTORY SOURCE...

  创建目录:

    install [OPTION]... -d DIRECTORY...


  常用选项:

    -m, --mode=MODE:设定目标文件权限,默认为755;

    -o, --owner=OWNER:设定目标文件属主;

    -g, --group=GROUP:设定目标文件属组;

    -d,:创建目录


  示例:

    [root@centos7 ~]# install -d /sh/install

    drwxr-xr-x 2 root root 6 Mar 20 18:03 /sh/install/

    

    [root@centos7 ~]# install -m 640 -o kwang -g kwang /etc/issue /sh/

    -rw-r----- 1 kwang kwang  23 Mar 20 18:02 issue




本文出自 “变相怪杰” 博客,谢绝转载!

Linux用户、组和权限管理(二)