【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
原文地址:https://www.cnblogs.com/HeiDi-BoKe/p/11927907.html