zoukankan      html  css  js  c++  java
  • 【Linux命令】用户身份(useradd,groupadd,usermod,passwd,userdel)

     目录

    用户身份

      在linux系统中和windows一样有用户之分。root用户为linux的超级管理员用户,权限最大。

      再RHEL7系统中,用户身份有如下:

    • 管理员UID为0:系统的管理用用户
    • 系统用户UID为1~999:为了避免某个服务程序出现漏洞而被黑客获得权限。默认服务器会有独立的系统用户负责运行,进而有效控制被破坏的范围。
    • 普通用户 UID为1000开始:有管理员用户创建且用户日常工作的用户。

      PS:UID是唯一,管理员创建普通用户,UID默认从1000开始。

      另外为了方便管理,linux系统还引入了用户组。听你刚刚使用用户组,可以将多个用户加入统一个组中,方便为组中的用户统一制定权限和任务。创建用户时会自动创建默认和用户同名的用户组,如果该用户需要加入其它组中,则这个组为附属组(扩展组)。

      此处推荐我的另一篇博客,有记录相关的命令:https://www.cnblogs.com/HeiDi-BoKe/p/11671367.html

    useradd命令

      useradd命令用于创建系统新用户。默认会创建家目录/home/用户名。默认shell解释器/bin/bash。useradd和adduser命令相同。

    格式:

    useradd [选项] 用户名

    选项:

    -c:加上备注文字,备注文字保存在passwd的备注栏中。
    -d:指定用户登入时的主目录,替换系统默认值/home/<用户名>
    -D:变更预设值。
    -e:指定账号的失效日期,日期格式为MM/DD/YY,例如06/30/12。缺省表示永久有效。也可以为YYYY-MM-DD。
    -f:指定在密码过期后多少天即关闭该账号。如果为0账号立即被停用;如果为-1则账号一直可用。默认值为-1.
    -g:指定用户所属的群组。值可以使组名也可以是GID。用户组必须已经存在的,期默认值为100,即users。
    -G:指定用户所属的附加群组。
    -m:自动建立用户的登入目录。
    -M:不要自动建立用户的登入目录。
    -N:取消建立以用户名称为名的群组。
    -r:建立系统账号。
    -s:指定用户登入后所使用的shell。默认值为/bin/bash。如果禁止用户登录为/sbin/nologin
    -u:指定用户ID号。该值在系统中必须是唯一的。

    shell解释器:

    [root@tourby ~]# cat /etc/shells 
    /bin/sh
    /bin/bash
    /usr/bin/sh
    /usr/bin/bash

    /etc/passwd文件:

    用户名:口令:用户标识号:组标识号:注释性描述:主目录:登录Shell

    实例:

    这里指定的家目录的根目录必须存在。

    # 创建用户账户为testuser1,并设置UID为544,主目录为/usr/testuser1,属于users组:(这里注意是属于users组,不是附加到users组,所以是使用-g,而不是-G)
    [root@VM_0_10_centos ~]# cat /etc/group | grep users
    users:x:100:
    [root@VM_0_10_centos ~]#useradd -u 544 -d /usr/testuser1 -g users -m testuser1
    
    # 使用管理员账号登陆系统,建立用户tmp_1 密码qrty2b3
    [root@VM_0_10_centos ~]# useradd tmp_1
    [root@VM_0_10_centos ~]# passwd tmp_1
    或
    [root@VM_0_10_centos ~]# echo "qrty2b3" | passwd --stdin tmp_1
    
    # 批量添加用户(参考我另一篇博客哈:https://www.cnblogs.com/HeiDi-BoKe/p/11643283.html第四点)
    # 我这里也再实现下,这里的方法和我另一篇博客方法不相同。步骤如下:
    # 1.建立用户名列表文件username.txt 
    # 2.创建用户密码对应文件 secret.txt,格式为username:password (注意文件的格式)  
    # 3.批量添加的脚本文件addusers.sh
    [root@VM_0_10_centos shell]# cat username.txt 
    test1
    test2
    test3
    test4
    test5
    [root@VM_0_10_centos shell]# cat secret.txt 
    test1:tt1
    test2:tt2
    test3:tt3
    test4:tt4
    test5:tt5
    [root@VM_0_10_centos shell]# cat addusers.sh 
    #!/bin/bash
    # author:thy
    # Read from the file and create accounts in bulk
    # 1.add accounts
    cat < username.txt | xargs -n 1 useradd
    # 2. set passwd(将密码转换到密码文件和族文件)
    chpasswd < secret.txt
    # 结束验证信息
    pwconv
    echo "OK"
    [root@VM_0_10_centos shell]# ./addusers.sh 
    OK
    # PS:此处注意-n参数,按空格分批(参考:https://www.cnblogs.com/f-ck-need-u/p/5925923.html#blog171)
    
    # 新创建一个tmp_2用户,这初始属于users组,且同时让他也属于tmpg组。
    [root@VM_0_10_centos shell]# groupadd tmpg
    [root@VM_0_10_centos shell]# useradd -g users -G tmpg tmp_2
    
    # 无法使用shell,且其用户目录至/tmp/tmp_3
    [root@VM_0_10_centos shell]# useradd -d /tmp/tmp_3 -s /sbin/nologin tmp_4
    
    # 创建用户mary和 larry,要求harry的uid为3000,shell设置为不可登陆shell(两种方法)
    # 方法一
    useradd mary
    useradd  harry
    usermod  -u 3000 harry
    usermod  –s  /sbin/nologin   harry
    # 方法二
    useradd mary
    useradd -u 3000 -s  /sbin/nologin harry

    usermod命令

      参考:https://www.cnblogs.com/HeiDi-BoKe/p/11671367.html第二点

    userdel命令

      userdel命令用于删除用户。在执行删除用户时,如果没有加参数-r,则家目录会被保留。

    格式:

    userdel [选项] 用户名

    选项:

    -f 强制删除用户
    -r 删除用户的同事删除用户家目录

    实例:

    # 删除用户及用户家目录
    [root@VM_0_10_centos shell]# userdel -r tmp_1
    #PS:如果用户还在登陆的话,会提示,用户正在登陆无法删除。此时可能需要先强制用户退出。
    [root@VM_0_10_centos shell]# userdel -f tmp_1
    
    # 查看当前登录的用户
    [root@VM_0_10_centos shell]# w
    
    # 强制退出用户登录
    [root@VM_0_10_centos shell]# pkill -kill -t pts1

    groupadd命令

      groupadd用于创建用户组。方便将用户加入到组,并设置权限。每个在系统上运行的进程都是属于一个组的集合(gids)

    格式:

    groupadd [选项] 组名

    选项:

    -f,--force 如果指定的组已经存在,此选项将失明了仅以成功状态退出。当与-g一起使用,并且指定的GID_MIN已经存在时,选择另一个唯一的GID(即-g关闭)。
    -g,--gid GID 这个值必须是唯一的,除非使用-o选项。但必须是非负的。默认值是使用大于或等于GID_MIN的最小值,并且大于每个其他组。
    -K,--key KEY=VALUE 重写/etc/login.defs默认值(GID_MIN,GID_MAX和其他)。可以指定多个K选项。示例:-K GID_MIN=100 –KGID_MAX=499。注意:-K GID_MIN=10,GID_MAX=499不能工作。
    -o,--non-unique 此选项允许添加一个非唯一的GID值。
    -p,--password PASSWORD 为新组使用此加密过的密码。默认为禁用密码。注意:不推荐使用这个选项,因为密码(或加密过的密码)会被用户通过列出这个过程而看到。您应该确保密码符合系统的密码政策。
    -r,--system 创建一个系统组。新的系统组数字标识符在SYS_GID_MIN到SYS_GID_MAX范围内选择,定义在login.defs中而不是GID_MIN到GID_MAX。
    -R,--root CHROOT_DIR 将修改应用到CHROOT_DIR目录,并使用配置。

    配置文件:

    /etc/group 组账户信息。(组名称:组密码:组ID:组成员)
    /etc/gshadow 安全组账户信息。
    /etc/login.defs Shadow密码套件配置。

    实例:

    # 创建组群tg,并且设置该组群GID为800
    [root@VM_0_10_centos shell]# groupadd -g 800 tg
    
    # 创建系组群
    [root@VM_0_10_centos shell]# groupadd -r tsg

    groupdel命令

      groupdel命令用于删除指定的工作组,本命令要修改的系统文件包括/ect/group和/ect/gshadow。若该群组中仍包括某些用户,则必须先删除这些用户后,方能删除群组。

    格式:

    groupdel 组名

    实例:

    # 删除组
    [root@VM_0_10_centos shell]# groupdel tsg

    gpasswd命令

      组成员管理。用于修改组的密码操作。/etc/group,/etc/gshadow。

    gpasswd 【选项】 组名
    常见选项:
    -a        添加用户到组
    -d        从组中删除成员
    -A        指定管理员
    -M        指定组成员,可以批量添加用户到组中
    -r        删除密码
    
    gpasswd 组名    给组设置密码

    添加用户到组:

     

    批量添加用户到组(原来的组会被覆盖):

    [root@tanbaobao ~]# gpasswd -M stu1,stu2 author

    从组中删除用户:

    passwd命令

      passwd命令用于修改用户密码,过期时间,认证信息等。passwd作为普通用户或超级用户都可以使用。但作为普通用户只能更改自己的用户密码,前提是没有被root用户锁定;且密码要符合安全要求。root用户运行passwd ,可以设置或修改任何用户的密码。

    格式:

    passwd [选项] 用户名

    PS:passwd后面不接任何用户和参数,表示修改当前用户密码。

    选项:

    -d 删除密码(仅root权限)
    -f 强制执行
    -k 保留即将过期的用户在期满后能仍能使用;
    -l 停止账号使用(锁定账户)
    -u 启用已被停止的账户(解除锁定)
    -S 显示密码状态 
    -x 设置密码的有效期(两次密码修正的最大天数,后面接数字;仅能root权限操作;)
    -n 两次密码修改的最小天数,后面接数字,仅能root权限操作;
    -g 修改群组密码
    -i 过期后停止用户账号(在密码过期后多少天,用户被禁掉,仅能以root操作;)
    -w 在距多少天提醒用户修改密码;仅能root权限操作;
    --stdin 

    实例:

    # 非交互式修改密码
    [root@tourby ~]# echo 'stu1' | passwd --stdin stu1

    #
    锁定密码,让某用户不能修改密码 [root@VM_0_10_centos shell]# passwd -l tmp_2 Locking password for user tmp_2. passwd: Success # 清除用户密码 [root@VM_0_10_centos shell]# passwd -d tmp_2 Removing password for user tmp_2. passwd: Success # 查看密码状态 [root@VM_0_10_centos shell]# passwd -S tmp_2 tmp_2 NP 2019-11-25 0 99999 7 -1 (Empty password.) # 解锁密码 [root@VM_0_10_centos shell]# passwd -u tmp_2

     

    chage命令

      chage命令用于修改密码的有效期

    格式:

    chage [<选项>] <用户名>

    选项:

    -m days: 密码可更改的最小天数。为零时代表任何时候都可以更改密码。
    -M days: 指定口令有效的最多天数。当该选项指定的天数加上-d选项指定的天数小于当前的日期时,用户在使用该帐号前就必须改变口令。
    -d days: 指定从1970年1月1日起,口令被改变的天数。
    -I days: 指定口令过期后,帐号被锁前不活跃的天数。如果值为0,帐号在口令过期后就不会被锁。
    -E date: 指定帐号被锁的日期。日期格式YYYY-MM-DD。若不用日期,也可以使用自1970年1月1日后经过的天数。
    -W days: 指定口令过期前要警告用户的天数。
    -l: 列出指定用户当前的口令时效信息,以确定帐号何时过期。

    实例:

    # 要求用户tmp_3两天内不能更改口令,并且口令最长的存活期为30天,并且口令过期前5天通知用户
    [root@VM_0_10_centos shell]# chage -m 2 -M 30 -W 5 tmp_3
    [root@VM_0_10_centos shell]# chage -l tmp_3
    Last password change                    : Nov 25, 2019
    Password expires                    : Dec 25, 2019
    Password inactive                    : never
    Account expires                        : never
    Minimum number of days between password change        : 2
    Maximum number of days between password change        : 30
    Number of days of warning before password expires    : 5
    #设置密码过期时间
    [root@tourby ~]# chage -E $(date +%F -d '+30days' ) stu1
    [root@tourby ~]# chage -l stu1
    最近一次密码修改时间                    :密码必须更改
    密码过期时间                    :密码必须更改
    密码失效时间                    :密码必须更改
    帐户过期时间                        :7月 02, 2020
    两次改变密码之间相距的最小天数        :0
    两次改变密码之间相距的最大天数        :99999
    在密码过期之前警告的天数    :7
  • 相关阅读:
    URLEncode解决url中有特殊字符的问题
    监控系统概览
    SpringBoot 上传文件夹
    关于postgresql报 ERROR: XXX does not exist
    postgresql学习
    git学习
    学习博客
    面试准备
    jvm
    线程池面试题
  • 原文地址:https://www.cnblogs.com/HeiDi-BoKe/p/11927907.html
Copyright © 2011-2022 走看看