美文网首页
linux用户和用户组

linux用户和用户组

作者: SecondBJ | 来源:发表于2018-07-30 01:28 被阅读0次

    1.用户组和权限管理

    用户分为三类:
    1.1 超级用户:root uid=0,简单来说uid为0的用户就是超级用户。
    1.2 虚拟用户:存在linux中,满足文件或者程序运行的需要,而创建的。不能登录,不能使用。
    uid=1-499,1-999(centos7)
    1.3 普通用户:管理员root创建的用户。uid=500+,1000+(centos7)
    

    用户组就是具有相同特征的用户的集合。一个组可以包含多个用户,每个用户也可以属于不同的组。用户组的目的方便管理员对用户进行集中管理。用户组也分为两类:系统组和普通组。

    用户及用户组配置文件介绍

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


    image.png

    第一列(以冒号为分隔符):用户名
    第二列:密码位
    第三列:UID号 CentOS6 1-499为系统用户,预留
    CentOS7 1-999为系统用户,预留
    第四列:GID号 主组和辅助组
    第五列:用户全名或注释
    第六列:用户的家目录
    第七列:用户默认的shell类型

    /etc/group 组及其属性信息

    image.png
    第一列:用户名
    第二列:密码位 ‘’ 加密方式salt$password
    ‘!!’代表账户被锁定
    第三列:更改密码时间(天数计算)---距离1970年1月1号时间
    第四列:密码最短口令有效期
    第五列:口令过期时间,更改口令往后的时间
    第六列:口令到期前提前多少天提醒
    第七列:口令过期后多少天账户过期
    第八列:帐号的有效期

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


    image.png

    第一列:组名
    第二列:组密码
    第三列:管理员列表,可以更改组密码和成员
    第四列:将该组作为辅助组的成员列表

    2.用户和组管理命令

    用户管理命令
    2.1 useradd
    -u uid 创建用户时指定uid
    -g gid 指明用户所属基本组
    -c 用户的注释信息
    -M 不建家目录
    -s 指定用户的默认shell
    -e 用户过期时间
    -G 为用户指明附加组,组须事先存在
    

    案例1:创建用户gentpp,附加组为bin和root,默认shell为/bin/csh,注释信息为"Gentoo Distribution"。
    [root@centos7 ~]#useradd gentpp -G bin,root -s /bin/csh -c "hello"
    [root@centos7 ~]#cat /etc/passwd|tail -n1 #查看/etc/passwd最后一行
    [root@centos7 ~]#id gentpp
    uid=1007(gentpp) gid=1008(gentpp) groups=1008(gentpp),0(root),1(bin)

    2.2 usermod
    -u  UID: 新UID
    -g GID: 新主组
    -G 新附加组,原来的附加组将会被覆盖;若保留原有,则要同时使用-a选项
    -s 新的默认SHELL
    -c 新的注释信息
    -d HOME: 新家目录不会自动创建;若要创建新家目录并移动原家数据,同时使用-m选项
    -l login_name: 新的名字
    -L: lock指定用户,在/etc/shadow 密码栏的增加!
    -U: unlock指定用户,将/etc/shadow 密码栏取消!centos7不可以解锁
    

    案例:修改gentpp的默认shell和描述信息
    [root@centos7 ~]#cat /etc/passwd | tail -n1
    gentpp:x:1007:1008:Gentoo Distribution:/home/gentpp:/bin/csh
    [root@centos7 ~]#usermod -s /bin/sh gentpp
    [root@centos7 ~]#cat /etc/passwd | tail -n1
    gentpp:x:1007:1008:new world:/home/gentpp:/bin/sh

    2.3 userdel
    -r 删除用户时,连同其家目录一同删除
    
    2.4 passwd命令
    passwd命令用于修改用户密码、过期时间、认证信息等,格式为“passwd [选项] [用户名]”。
    

    普通用户只能使用passwd命令修改自身的系统密码,而root管理员则有权限修改其他所有人的密码。更酷的是,root管理员在Linux系统中修改自己或他人的密码时不需要验证旧密码,这一点特别方便。既然root管理员可以修改其他用户的密码,就表示完全拥有该用户的管理权限。

    passwd命令中的参数以及作用
    参数  作用
    -l  锁定用户,禁止其登录
    -u  解除锁定,允许用户登录
    --stdin 允许通过标准输入修改用户密码,如echo "NewPassWord" | passwd --stdin Username
    -d  使该用户可用空密码登录系统
    -e  强制用户在下次登录时修改密码
    -S  显示用户的密码是否被锁定,以及密码所采用的加密算法名称
    

    假设您有位同事正在度假,而且假期很长,那么可以使用passwd命令禁止该用户登录系统,等假期结束回归工作岗位时,再使用该命令允许用户登录系统,而不是将其删除。这样既保证了这段时间内系统的安全,也避免了频繁添加、删除用户带来的麻烦:
    [root@linuxprobe ~]# passwd -l linuxprobe
    Locking password for user linuxprobe.
    passwd: Success
    [root@linuxprobe ~]# passwd -S linuxprobe
    linuxprobe LK 2017-12-26 0 99999 7 -1 (Password locked.)
    [root@linuxprobe ~]# passwd -u linuxprobe
    Unlocking password for user linuxprobe.
    passwd: Success
    [root@linuxprobe ~]# passwd -S linuxprobe
    linuxprobe PS 2017-12-26 0 99999 7 -1 (Password set, SHA512 crypt.)

    3. 组帐号管理命令

    3.1 创建用户组

    用户和用户组属于多对多关系,一个用户可以同时属于多个用户组,一个用户组可以包含多个不同的用户
    创建用户组使用groupadd命令,其命令用法为:
    groupadd [-r] 用户组名称
    若命令带有-r参数,则创建系统用户组,该类用户组的GID值小于500;若没有-r参数,则创建普通用户组,其GID值大于或等于500.

    image.png
    3.2 修改用户组属性

    用户组创建后,根据需要可对用户组的相关属性进行修改。对用户组属性的修改,主要是修改用户组的名称和用户组的GID值。
    (1)改变用户组的名称
    若要对用户组进行重命名,可使用带-n参数的groupmod命令来实现,其用法为:
    groupmod -n 新用户组名 原用户组名
    对于用户组改名,不会改变其GID的值
    比如,若要将student用户组更名为teacher用户组,则操作命令为:

    [root@localhost ~]# tail -3 /etc/group
    student:x:501:
    lijie:x:502:
    vodup:x:503:
    [root@localhost ~]# groupmod -n teacher student
    [root@localhost ~]# tail -3 /etc/group
    lijie:x:502:
    vodup:x:503:
    teacher:x:501:

    (2)重设用户组的GID
    用户组的GID值可以重新进行设置修改,但不能与已有用户组的GID值重复。对GID进行修改,不会改变用户名的名称。
    要修改用户组的GID,可使用带-g参数的groupmod命令,其用法为:
    groupmod -g new_GID 用户组名称
    例如,若要将teacher组的GID更改为504,则操作命令为:
    [root@localhost ~]# tail -3 /etc/group
    lijie:x:502:
    vodup:x:503:
    teacher:x:501:
    [root@localhost ~]# groupmod -g 504 teacher
    [root@localhost ~]# tail -3 /etc/group
    lijie:x:502:
    vodup:x:503:
    teacher:x:504:

    3.3 删除用户组

    删除用户组使用groupdel命令来实现,其用法为:
    groupdel 用户组名
    在删除用户组时,被删除的用户组不能是某个账户的私有用户组,否则将无法删除,若要删除,则应先删除引用该私有用户组的账户,然后再删除用户组。

    [root@localhost ~]# groupdel teacher
    groupdel: cannot remove the primary group of user 'zhangjie'
    [root@localhost ~]# userdel -r zhangjie
    [root@localhost ~]# groupdel teacher
    [root@localhost ~]# grep teacher /etc/group #没有输出,说明teacher用户组已不存在,删除成功

    3.4添加用户到指定的组/从指定的组中移除用户gpasswd:

    -a user 将user添加至指定组中
    -d user 从指定组中移除用户user

    image.png

    Adding user ma to group zhu #将用户qb2添加到组qian2中
    Removing user ma from group zhu #将用户qb2从组qian2中删除

    3.5. groupmems[options] [action]
    options:
    -g 更改为指定组
    actions:
    -a 指定用户加入组
    -d 从组中删除用户
    -p 从组中清除所有成员
    -l 显示组成员列表
    

    案例:
    [root@centos7 ~]#groupmems -g admins -a ma
    [root@centos7 ~]#groupmems -g admins -a zhu #将ma和zhu用户添加到admins中
    [root@centos7 ~]#groupmems -g admins -l #查看admins中的用户列表
    ma zhu
    [root@centos7 ~]#groupmems -g admins -d ma #将ma从admins中删除
    [root@centos7 ~]#groupmems -g admins -l
    zhu
    [root@centos7 ~]#groupmems -g admins -p #清空admins中的所有组成员
    [root@centos7 ~]#groupmems -g admins -l

    3.5 groups 查看用户所属组列表

    [root@centos7 ~]#groups ma
    ma : ma
    root@centos7 ~]#groups zhu
    zhu : zhu

    4. 修改文件属主和属组
    chown 修改文件的属主(也可以改组)
    用户 文件或者目录     <==仅仅授权用户
    :组 文件活目录     <==仅仅授权组
    用户:组 文件或目录  <==表示授权用户和组
    -R 递归
    --reference=源文件 目标文件
    强调:
    1)其中的冒号“:”可以用点好“.”代替
    2)要授权的用户和组名,必须是linux系统里实际存在的
    

    案例:
    [root@centos7 app]#ll
    -rw-r--r--. 1 root root 0 Jul 29 16:27 f1
    -rw-r--r--. 1 root root 0 Jul 29 16:27 f2
    [root@centos7 app]#chown ma:ma f1
    [root@centos7 app]#chown :zhu f2
    [root@centos7 app]#ll
    -rw-r--r--. 1 ma ma 0 Jul 29 16:27 f1
    -rw-r--r--. 1 root zhu 0 Jul 29 16:27 f2
    [root@centos7 app]#chown --reference=/app/f1 f2 #将f1的用户和属组信息复制给f2
    [root@centos7 app]#ll
    -rw-r--r--. 1 ma ma 0 Jul 29 16:27 f1
    -rw-r--r--. 1 ma ma 0 Jul 29 16:27 f2

    chgrp 修改文件的属组(只能改组)
    ----reference=源文件 目标文件
    -R 递归
    

    案例:
    [root@centos7 app]#chgrp ma f1 <==将f1的属组直接修改成ma
    [root@centos7 app]#ll
    -rw-r--r--. 1 ma ma 0 Jul 29 16:27 f1
    -rw-r--r--. 1 ma ma 0 Jul 29 16:27 f2
    -rw-r--r--. 1 root root 0 Jul 29 16:37 f3
    [root@centos7 app]#chgrp --reference=/app/f3 f1
    [root@centos7 app]#chgrp --reference=/app/f3 f2
    [root@centos7 app]#ll
    -rw-r--r--. 1 ma root 0 Jul 29 16:27 f1
    -rw-r--r--. 1 ma root 0 Jul 29 16:27 f2
    -rw-r--r--. 1 root root 0 Jul 29 16:37 f3

    相关文章

      网友评论

          本文标题:linux用户和用户组

          本文链接:https://www.haomeiwen.com/subject/jpdtvftx.html