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
原文地址:https://www.cnblogs.com/hovin/p/11608784.html