zoukankan      html  css  js  c++  java
  • Linux用户组与权限管理

    一、用户与组

    1、用户

     管理员:root,UID为0

     普通用户:1-60000 自动分配

      系统用户:1-499,1-999(Centos7),对守护进程分配获取资源进行权限分配

      登录用户:500+,1000+(Centos7),交互式登录

    2、组

     管理员组:root,GID为0

     普通组:

      系统组:1-499,1-999(Centos7)

      普通组:500+,1000+(Centos7)

     注意:用户必须属于一个且只有一个主组;一个用户可以属于0个或多个附加组

    3、用户和组的主要配置文件

      /etc/passwd:用户及其属性信息

      /etc/group:组及其属性信息

      /etc/shadow:用户密码及其相关属性

      /etc/gshadow:组密码及其相关属性

      passwd文件的格式:

        root:x:0:0::/root:/bin/bash

        登录名:密码:UID:GID:用户全名或注释:家目录:shell

      shadow文件的格式:

        root:$1$TCVDVaiT$JC7TbKjvIZpIprdehWFH/1:15157:0:99999:7:::

        第一字段:登录名

        第二字段:用户密码

        第三字段:密码最近一次的修改时间(从1970年1月1日起)

        第四字段:密码再过几天可以被更改(0表示随时可以更改)

        第五字段:密码再过几天必需被变更(99999表示永不过期)

        第六字段:密码过期前几天系统提醒用户(默认为一周)

        第七字段:密码过期几天后账号会被锁定

        第八字段:从1970年1月1日算起,多少天后账号失效

        第九字段:保留字段

      group文件的格式:

        root:x:0:root

        组名称:组密码:GID:以当前组为附加组的用户列表

      gshadow文件的格式:

        root:::root

        组名称:组密码:组管理员的列表:以当前组为附加组的用户列表

    4、用户与组的管理命令

    (1) useradd  用户创建

      useradd [options] loginname

        -u  指定用户的UID

        -g  指定用户的GID

        -o  配合 -u 选项,不检查UID的唯一性

        -c "COMMENT"  用户的注释信息

        -d HOME_DIR   以指定的路径为用户的家目录

        -s SHELL  指定用户的默认shell,可用列表在 /etc/shells 文件中

        -G GROUP1[,GROUP2...]  指定用户的附加组,组须事先存在

        -N  不创建私有组为主组,使用 users 组作为主组

        -r   创建系统用户

        -m  创建家目录,用于系统用户

        -M  不创建家目录,用于非系统用户

        -D  显示与更改创建用户时的默认选项,如useradd -D -s SHELL,默认值的设定在文件 /etc/default/useradd 中

      新建用户的相关文件:

        /etc/default/useradd  新建用户时的一些默认选项

        /etc/skel/*  新建用户的家目录中的默认生成的文件信息

        /etc/login.defs  登录用户的一些选项设置

    (2) userdel  用户删除

      -r  删除用户同时删除家目录

    (3) id  查看用户相关的ID信息

      -u  显示UID

      -g  显示GID

      -G  显示用户所属的ID(包括主组与附加组)

      -n  显示名称,配合ugG使用

    (4) usermod  用户属性修改

      usermod [options] loginname

        -u UID  新UID

        -g GID  新GID

        -G GROUP1[,GROUP2...]  新附加组,原来的附加组会被覆盖,如要保留原有的,则要同时使用 -a 选项,表示追加

        -s SHELL  新的默认SHELL

        -c "COMMENT"  新的注释信息

        -d HOME   新家目录不会自动创建,若要创建新家目录并移动原家数据,则同时使用 -m 选项

        -l login_name  新的登录名

        -L  锁定用户(在 /etc/shadow 文件密码栏填加 !)

        -U  解锁用户

        -e YYYY-MM-DD  指明用户账号的过期时间(用于修改 /etc/shadow 中第八字段信息)

        -f INACTIVE  设定非活动期限(密码过期后的宽限时间)

    (5) passwd  设置密码

      -d  删除指定用户密码

      -l  锁定用户

      -u  解锁用户

      -e  强制用户下次登录修改密码

      -f  强制删除

      -n mindays  指定用户密码最短使用期限

      -x maxdays  指定用户密码最大使用期限

      -w warndays  提前多少天开始警告

      -i inactivedays  非活动期限(密码过期后的宽带天数)

      --stdin  从标准输入接收用户密码

    (6) chage  修改用户密码策略

      -d last_day  修改上次密码修改时间

      -E expire_date  修改密码过期时间

      -I inactive  修改密码过期后的宽限天数,超过天数,帐号将不可用

      -m min_days  修改密码最短使用时间

      -M max_days  修改密码最长使用时间

      -W warn_days  修改密码过期前的警告天数

      -l  显示密码策略

     示例:

      chage -d 0 tom  下次登录强制修改密码

      chage -m 0 -M 42 -W 14 -I 7 

    [root@linuxde ~]# chage -l root
    最近一次密码修改时间                    : 3月 12, 2013
    密码过期时间                            :从不
    密码失效时间                           :从不
    帐户过期时间                           :从不
    两次改变密码之间相距的最小天数          :0
    两次改变密码之间相距的最大天数          :99999
    在密码过期之前警告的天数                :7

    (7) su  切换用户或以其他用户身份执行命令  

      切换用户的方式:
        su UserName:非登录式切换,即不会读取目标用户的配置文件,不改变当前工作目录
        su - UserName:登录式切换,会读取目标用户的配置文件,切换至家目录,完全切换

    (8) groupadd  创建组

      groupadd [OPTION]... group_name

        -g GID 指明GID号

        -r  创建系统组;CentOS 6: GID<500,CentOS 7 GID<1000

    (9) groupdel  删除组

      groupdel GROUP

    (10) groupmod  组属性修改

       -n group_name  指定新的组名

       -g GID  指定新的GID

    (11) gpasswd  更改组密码

      gpasswd [OPTION] GROUP

        -a user  将指定用户添加至指定组中

        -d user  从指定组中移除某用户

        -A user1,user2...  设置有管理权限的用户列表

    (12) newgrp  临时切换主组

      如果用户本不属于此组,则需要组密码

    (13) groupmems  更改组成员

      groupmems [options] [action]

      optinos:

        -g, --group groupname 更改为指定组 (只有root)

      action:

        -a, --add username 指定用户加入组

        -d, --delete username 从组中删除用户

        -p, --purge 从组中清除所有成员

        -l, --list 显示组成员列表

    (14) groups  查看组成员

      groups [OPTION] [USERNAME]... 查看用户所属组列表

    二、权限相关

    1、文件权限

    (1) 文件属性

      文件的权限主要针对三类对象用户定义:user,所有者,u;group,所属组,g;other,其他人,o;

      每个文件针对每类访问者都定义了三种权限:r(读),w(写),x(执行)

      权限对应的操作:

       对于文件:

         r:可使用文件查看类工具获取其内容

         w:可以修改其内容

         x:可以把此文件提给内核启动为一个进程

       对于目录:

         r:可以使用ls查看此目录中文件列表

         w:可以在此目录中创建文件,也可删除此目录中的文件

         x:可以使用ls -l查看此目录中文件元数据(须配合r),可以cd进入此目录

         X 只给目录x权限,不给文件x权限

    (2) 文件相关命令

      chown  修改文件的属主与属组

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

         -R  递归

       示例:

        chown root file.txt  修改文件属主为root

        chown root:root file.txt   修改文件属主为root属组也为root(冒号:也可以用点 . 代替)

        chown :root file.txt  修改文件属组为root 

      chgrp  修改文件的属组

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

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

          -R  递归

      chmod  文件权限操作

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

          -R  递归修改权限

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

          MODE:

            修改一类用户的所有权限:u= g= o= ug= a= u=,g=

            修改一类用户某位或某些位权限 u+ u- g+ g- o+ o- a+ a- + - 

        chmod [OPTION]... --reference=RFILE FILE...  参考RFILE文件的权限,将FILE的修改为同RFILE

        示例:

          chmod u+wx,g-r,o=rx file

          chmod -R g+rwX /testdir

          chmod 600 file

    (3) umask值

      umask值可以用来保留在创建文件的权限

       新建文件的默认权限: 666-umask,如果所得结果某位存在执行(奇数)权限,则将其权限+1

       新建目录的默认权限: 777-umask

      非特权用户的umask为002,root用户的umask为022

      umask # 设定umask的值  如 umask 002  或 umask u=rw,g=r,o=;全局设置:/etc/bashrc 或 ~/.bashrc

      umask -S  模式方法显示umask值

      umask -p   输出可被调用  

    [root@Centos7 ~]# umask -p
    umask 0027
    [root@Centos7 ~]# umask -S
    u=rwx,g=rx,o=

    (4) 文件系统上的特殊权限

      SUID权限:只对二进制可执行程序有效,对目录设置无意义

        权限设定:chmod u+s file 或 chmod 4xxx file

             chmod u-s file

      SGID权限:

        对文件来说:只针对二进制可执行文件,当文件上有sgid时,不管任何人执行此文件的进程都属于文件的组

        对目录来说:当目录上有sgid时,不管任何人在此目录中建立的文件都属于目录的所有组,但是用户还是创建的用户

        权限设定:chmod g+s file 或 chmod 2xxx file

             chmod g-s file

      STICKY权限:只针对目录生效,当一个目录上有sticky权限时,那么这个目录中的文件只能被文件的所有者删除

        权限设定:chmod o+t file 或 chmod 1xxx file

             chmod o-t file

      权限位映射:

       SUID: user,占据属主的执行权限位

        s:属主拥有x权限

        S:属主没有x权限

       SGID: group,占据属组的执行权限位

        s: group拥有x权限

        S:group没有x权限

       Sticky: other,占据other的执行权限位

        t:other拥有x权限

        T:other没有x权限

    (5) 设定文件的特殊属性

      chattr +i  不能删除,改名,更改

      chattr +a  只能追加内容

      lsattr  显示特定属性

    (6) 访问控制列表(ACL)

      getfacl  acl列表查看

      setfacl -m  更改文件或目录的ACL规则

      setfacl -x   删除文件或目录指定的ACL规则

      示例:

        setfacl -m u:wang:rw file

        setfacl -m g:wang:rx file

        setfacl -x u:wang file

        setfacl -x g:wang file

        setfacl -m d:u:student:rwx dir  ACL默认权限,只针对目录设定

        setfack -k dir  删除默认ACL权限

        setfack -b file  清除所有ACL权限

      mask值:在权限列表中mask表示能生效的权力值

    [root@Centos7 mnt]# setfacl -m mask::r file1
    [root@Centos7  mnt]# getfacl file1
    # file: file1
    # owner: root
    # group: root
    user::rw-
    user:testu1:rwx                 #effective:r--
    group::r--
    group:testg1:r--
    mask::r--
    other::r--
    
    [root@Centos7  mnt]# ls -l file1
    -rw-r--r--+ 1 root root 7 Dec 11 00:28 file1
  • 相关阅读:
    cz_health_day07
    cz_health_day06
    mysql索引底层原理
    cz_health_day05
    redis无法获取连接原因分析
    cz_health_day04
    cz_health_day03
    cz_health_day02
    cz_health_day01
    Spring学习
  • 原文地址:https://www.cnblogs.com/hovin/p/11608784.html
Copyright © 2011-2022 走看看