Linux学习之用户和用户组管理-用户管理命令-useradd
时间:2018-12-13 15:03 来源:linux.it.net.cn 作者:IT
三、用户管理命令
1、用户添加命令 useradd
1)
useradd 命令格式:
useradd 【选项】用户名
选项:
-u UID : 手工指定用户的UID号
-d 家目录: 手工指定用户的家目录 directory 默认会在/home下,通过-d可以修改指定的家目录的位置等信息
-c 用户说明:手工指定用户的说明
-g 组名: 手工指定用户的初始值 每个用户只有一个初始组
-G 组名: 指定用户的附加组 每个用户可以通过分号,指定添加到多个组中
-s shell : 手工指定用户的登录shell。默认是 /bin/bash
但是如果使用手工更改某些信息,需要为其手工指定相应的权限等,否则部分功能受限。
2)、添加一个用户,并为其设置密码,之后查询该用户默认添加的其他信息
添加一个用户,但需要root权限才能添加新用户
[root@localhost ~]# useradd sc
为新用户设置密码
[root@localhost ~]# passwd sc
更改用户 sc 的密码 。
新的 密码:
无效的密码: 过于简单化/系统化
无效的密码: 过于简单
重新输入新的 密码:
passwd: 所有的身份验证令牌已经成功更新。
[root@localhost ~]#
[root@localhost ~]#
鉴于已经添加了用户,通过grep命令搜索下,一个普通用户创建完成时,默认会拥有的一些属性特征
比如查看密码 shell脚本启动位置 影子文件 所属组 所属组的shadow文件 家目录 邮箱等
[root@localhost ~]# grep sc /etc/passwd
sc:x:501:501::/home/sc:/bin/bash
[root@localhost ~]# grep sc /etc/sh
shadow shadow- shells
[root@localhost ~]# grep sc /etc/shadow
sc:$6$zq5gkudC$QAdnnhSfvbFnjIfwvlvsOjEvngBva3AOhissNXM.36Ccw.vwcUTERDuMyintbciClI14vPq/1v6Ey1S9fQ.9J0:17867:0:99999:7:::
[root@localhost ~]# grep sc /etc/group
sc:x:501:
[root@localhost ~]# grep sc /etc/gshadow
sc:!::
[root@localhost ~]# ll -d /home/sc/
drwx------. 4 sc sc 4096 12月 2 22:13 /home/sc/
[root@localhost ~]# ll /var/spool/mail/sc
-rw-rw----. 1 sc mail 0 12月 2 22:13 /var/spool/mail/sc
[root@localhost ~]#
3)指定选项添加用户
》useradd -u 550 -G root,bin -d /home/lampl \
-c "test user" -s /bin/bash sc
注意上方命令中,第一行末尾有个 \ ,该符号用于换行所以也可直接写成一行:
》useradd -u 550 -G root,bin -d /home/lampl -c "test user" -s /bin/bash sc
[root@localhost ~]# useradd -u 550 -G root,bin -d /home/lampl -c "test user" -s /bin/bash sc
用法:useradd [选项] 登录
useradd -D
useradd -D [选项]
选项:
-b, --base-dir BASE_DIR 新账户的主目录的基目录
-c, --comment COMMENT 新账户的 GECOS 字段
-d, --home-dir HOME_DIR 新账户的主目录
-D, --defaults 显示或更改默认的 useradd 配置
-e, --expiredate EXPIRE_DATE 新账户的过期日期
-f, --inactive INACTIVE 新账户的密码不活动期
-g, --gid GROUP 新账户主组的名称或 ID
-G, --groups GROUPS 新账户的附加组列表
-h, --help 显示此帮助信息并推出
-k, --skel SKEL_DIR 使用此目录作为骨架目录
-K, --key KEY=VALUE 不使用 /etc/login.defs 中的默认值
-l, --no-log-init 不要将此用户添加到最近登录和登录失败数据库
-m, --create-home 创建用户的主目录
-M, --no-create-home 不创建用户的主目录
-N, --no-user-group 不创建同名的组
-o, --non-unique 允许使用重复的 UID 创建用户
-p, --password PASSWORD 加密后的新账户密码
-r, --system 创建一个系统账户
-R, --root CHROOT_DIR chroot 到的目录
-s, --shell SHELL 新账户的登录 shell
-u, --uid UID 新账户的用户 ID
-U, --user-group 创建与用户同名的组
-Z, --selinux-user SEUSER 为 SELinux 用户映射使用指定 SEUSER
4、用户默认值配置文件
[root@localhost ~]# vim /etc/default/useradd
# useradd defaults file
GROUP=100 #默认用户组
HOME=/home #用户家目录
INACTIVE=-1 #密码过期宽限天数(shadow文件7字段)
EXPIRE= # 密码失效
SHELL=/bin/bash #默认shell
SKEL=/etc/skel #模板目录
CREATE_MAIL_SPOOL=yes #是否建立邮箱
~
~
以上信息只是标记了shadow文件中两项,还有几项是在用户默认信息另一个文件,
[root@localhost home]# vim /etc/lo
localtime login.defs logrotate.conf logrotate.d/
[root@localhost home]# vim /etc/login.defs
#
# Please note that the parameters in this configuration file control the
# behavior of the tools from the shadow-utils component. None of these
# tools uses the PAM mechanism, and the utilities that use PAM (such as the
# passwd command) should therefore be configured elsewhere. Refer to
# /etc/pam.d/system-auth for more information.
#
# *REQUIRED*
# Directory where mailboxes reside, _or_ name of file, relative to the
# home directory. If you _do_ define both, MAIL_DIR takes precedence.
# QMAIL_DIR is for Qmail
#
#QMAIL_DIR Maildir
MAIL_DIR /var/spool/mail
#MAIL_FILE .mail
# Password aging controls:
#
# PASS_MAX_DAYS Maximum number of days a password may be used.
# PASS_MIN_DAYS Minimum number of days allowed between password changes.
# PASS_MIN_LEN Minimum acceptable password length.
# PASS_WARN_AGE Number of days warning given before a password expires.
#
PASS_MAX_DAYS 99999
PASS_MIN_DAYS 0
PASS_MIN_LEN 5
PASS_WARN_AGE 7
#
# Min/max values for automatic uid selection in useradd
#
UID_MIN 500
UID_MAX 60000
#
# Min/max values for automatic gid selection in groupadd
#
GID_MIN 500
GID_MAX 60000
#
# If defined, this command is run when removing a user.
# It should remove any at/cron/print jobs etc. owned by
# the user to be removed (passed as the first argument).
#
#USERDEL_CMD /usr/sbin/userdel_local
#
# If useradd should create home directories for users by default
# On RH systems, we do. This option is overridden with the -m flag on
# useradd command line.
#
CREATE_HOME yes
# The permission mask is initialized to this value. If not specified,
# the permission mask will be initialized to 022.
UMASK 077
# This enables userdel to remove user groups if no members exist.
#
USERGROUPS_ENAB yes
# Use SHA512 to encrypt password.
ENCRYPT_METHOD SHA512
如上中:
》PASS_MAX_DAYS 9999 #密码有效期(5)
》PASS_MIN_DAYS 0 #密码修改间隔(4)
》PASS_MIN_LEN 5 #密码最小5位(PAM)
》PASS_WARN_AGE 7 #密码到期警告(6)
》UID_MIN 500 #最小和最大UID范围
》GID_MAX 60000
》ENCRYPT_METHOD SHA512 #加密模式
以上文件更改后,shadow文件的默认创建的信息值为如上值
2、修改用户密码 passwd
passwd命令格式
passwd 【选项】用户名
选项:
-S 查询用户密码的密码状态。仅root用户可用
-l 暂时锁定用户。仅root用户可用。锁定用户后,用户无法登录。通过查看/etc/shadow文件会发现被锁定的用户密码标志值开头以! 开始。
如果通过手工更改shadow文件的方式解除锁定感觉麻烦,可以通过解锁选项解锁某个用户。
-u 解锁用户。 仅root用户可用
--stdin 可以通过管道符输出的数据作为用户的密码
注意:普通用户的密码必须符合一定的密码规则,即密码复杂一点,以上命令用于特殊情况,常见使用不多。
2)使用字符串作为用户的密码
echo "123" | passwd --stdin sc 即该命令可以把sc用户的密码设置为接收到的输入字符串123
该方法主要用于shell进行编程,用于用户批量添加等。
3、修改用户信息 usermod
修改用户密码状态 chage 特别注意该拼写
注意:useradd 命令等使用的选项usermod也支持,因为useradd和usermod的区别主要是使用的时间不同,useradd用于用户刚添
加时,usermod用于用户已存在时,配置的修改。
useradd 【选项】用户名
选项:
-u UID: 修改用户的UID号
-c 用户说明:修改用户的说明信息
-G 组名 : 临时用户的附加信息
-L : 临时锁定用户(lock)
-U : 解除用户锁定(Unlock)
锁定和解锁用户的命令随便哪个都可。
2)修改用户密码状态chage
chage 【选项】用户名
选项:
-l :列出用户的详细密码状态
-d 日期: 修改密码最后一次更改日期(shadow 3字段)
-m 天数: 两次密码修改间隔(shadow 4字段)
-M天数: 密码有效期(shadow 5字段)
-W天数:密码过期前警告天数(shadow 6字段)
-I 天数 : 密码过后宽限天数(shadow 7字段)
-E 日期 : 账号失效时间 (shadow 8字段)
示例:
chage -d 0 sc
#以上命令其实是把密码修改日期归0了(shadow第三字段),这样用户一登录就要修改密码。
注意:服务器上给普通用户登录密码设置-d选项为0时,要求普通用户一登录就必须更改密码。该命令也是chage最常用的命令。
4、删除用户 userdel
1)userdel 【-r】用户名
选项:
-r 删除用户的同时删除用户家目录
注意:如果删除用户时不删除其家目录,则其家目录将会成为无任何内容指向的垃圾文件
扩展:手工删除用户
vi /etc/passwd 先根据密码,通过加密算法,找到该值,然后删除,但基本很难
vi /etc/shadow
vi /etc/group
vi /etc/gshadow
rm -rf /var/spool/mail/用户名
rm -rf /home/用户名
如何验证某个用户是否已经完全删除?
答:只要再次添加该用户,如果能够添加成功无提示,说明已经完全删除(当然该工作只是练习用)
以上手工删除的方式只是用于熟悉用户信息位置,更好的理解相应内容。
常用删除,就是使用userdel -r 用户名
2)查看用户ID
id命令:
id 用户名
5、用户切换命令 su
切换用户身份su
命令:
su 【选项】用户名
选项:
- :选项只使用“ - ”代表连带用户的环境变量一起切换
-c :仅执行一次命令,而不切换用户身份
[zhouxueli@localhost /]$ su - root
密码:root对应密码
[zhouxueli@localhost /]$
表示完全将该用户的环境为root,如果从普通用户切换为超级用户,或者
切换为其他用户,则必须输入相应密码
如果从超级用户切换为普通用户,则不需要输入普通用户的密码
su 用户名
该命令常用于临时使用root身份,调用某个只有root用户才有权限调用的命令。
6、添加用户组命令
1)groupadd 【选项】 组名
选项:
-g GID: 指定组ID
[zhouxueli@localhost /]$ groupadd tg
-bash: /usr/sbin/groupadd: 权限不够
[zhouxueli@localhost /]$ su groupadd tg
su: 用户groupadd 不存在
[zhouxueli@localhost /]$ su root
密码:
[root@localhost /]# groupadd tg
[root@localhost /]# vim /etc/group #查看用户组信息
2)修改用户组
groupmod 【选项】组名
选项:
-g GID :修改组ID
-n 新组名: 修改组名
示例:
groupmod -n testgrp group1
查看修改后的效果
vim /etc/group
注意:建议不更改用户组,防止对改组不熟悉,造成某些用户等的系统信息丢失等
3)删除用户组
groupdel 组名
以上命令即可删除某个用户组
如 :groupdel tg
万一这个组中有用户,删除时如果该组中有初始组用户,则该组无法删除,因为该初始用户将没有初始用户组,所以不能删除;
如果该组中有附加组用户时,则该组可以删除。即删除某个用户组时,无法删除一个存在初始用户的用户组。
4)把用户添加入组或从组中删除
gpasswd 【选项】组名
选项:
-a 用户名 :把用户加入组
-d 用户名 :把用户从组中删除
(责任编辑:IT)
三、用户管理命令
1、用户添加命令 useradd
1)
useradd 命令格式:
useradd 【选项】用户名
选项:
-u UID : 手工指定用户的UID号
-d 家目录: 手工指定用户的家目录 directory 默认会在/home下,通过-d可以修改指定的家目录的位置等信息
-c 用户说明:手工指定用户的说明
-g 组名: 手工指定用户的初始值 每个用户只有一个初始组
-G 组名: 指定用户的附加组 每个用户可以通过分号,指定添加到多个组中
-s shell : 手工指定用户的登录shell。默认是 /bin/bash
但是如果使用手工更改某些信息,需要为其手工指定相应的权限等,否则部分功能受限。
2)、添加一个用户,并为其设置密码,之后查询该用户默认添加的其他信息
添加一个用户,但需要root权限才能添加新用户
[root@localhost ~]# useradd sc
为新用户设置密码
[root@localhost ~]# passwd sc
更改用户 sc 的密码 。
新的 密码:
无效的密码: 过于简单化/系统化
无效的密码: 过于简单
重新输入新的 密码:
passwd: 所有的身份验证令牌已经成功更新。
[root@localhost ~]#
[root@localhost ~]#
鉴于已经添加了用户,通过grep命令搜索下,一个普通用户创建完成时,默认会拥有的一些属性特征
比如查看密码 shell脚本启动位置 影子文件 所属组 所属组的shadow文件 家目录 邮箱等
[root@localhost ~]# grep sc /etc/passwd
sc:x:501:501::/home/sc:/bin/bash
[root@localhost ~]# grep sc /etc/sh
shadow shadow- shells
[root@localhost ~]# grep sc /etc/shadow
sc:$6$zq5gkudC$QAdnnhSfvbFnjIfwvlvsOjEvngBva3AOhissNXM.36Ccw.vwcUTERDuMyintbciClI14vPq/1v6Ey1S9fQ.9J0:17867:0:99999:7:::
[root@localhost ~]# grep sc /etc/group
sc:x:501:
[root@localhost ~]# grep sc /etc/gshadow
sc:!::
[root@localhost ~]# ll -d /home/sc/
drwx------. 4 sc sc 4096 12月 2 22:13 /home/sc/
[root@localhost ~]# ll /var/spool/mail/sc
-rw-rw----. 1 sc mail 0 12月 2 22:13 /var/spool/mail/sc
[root@localhost ~]#
3)指定选项添加用户
》useradd -u 550 -G root,bin -d /home/lampl \
-c "test user" -s /bin/bash sc
注意上方命令中,第一行末尾有个 \ ,该符号用于换行所以也可直接写成一行:
》useradd -u 550 -G root,bin -d /home/lampl -c "test user" -s /bin/bash sc
[root@localhost ~]# useradd -u 550 -G root,bin -d /home/lampl -c "test user" -s /bin/bash sc
用法:useradd [选项] 登录
useradd -D
useradd -D [选项]
选项:
-b, --base-dir BASE_DIR 新账户的主目录的基目录
-c, --comment COMMENT 新账户的 GECOS 字段
-d, --home-dir HOME_DIR 新账户的主目录
-D, --defaults 显示或更改默认的 useradd 配置
-e, --expiredate EXPIRE_DATE 新账户的过期日期
-f, --inactive INACTIVE 新账户的密码不活动期
-g, --gid GROUP 新账户主组的名称或 ID
-G, --groups GROUPS 新账户的附加组列表
-h, --help 显示此帮助信息并推出
-k, --skel SKEL_DIR 使用此目录作为骨架目录
-K, --key KEY=VALUE 不使用 /etc/login.defs 中的默认值
-l, --no-log-init 不要将此用户添加到最近登录和登录失败数据库
-m, --create-home 创建用户的主目录
-M, --no-create-home 不创建用户的主目录
-N, --no-user-group 不创建同名的组
-o, --non-unique 允许使用重复的 UID 创建用户
-p, --password PASSWORD 加密后的新账户密码
-r, --system 创建一个系统账户
-R, --root CHROOT_DIR chroot 到的目录
-s, --shell SHELL 新账户的登录 shell
-u, --uid UID 新账户的用户 ID
-U, --user-group 创建与用户同名的组
-Z, --selinux-user SEUSER 为 SELinux 用户映射使用指定 SEUSER
4、用户默认值配置文件
[root@localhost ~]# vim /etc/default/useradd
# useradd defaults file
GROUP=100 #默认用户组
HOME=/home #用户家目录
INACTIVE=-1 #密码过期宽限天数(shadow文件7字段)
EXPIRE= # 密码失效
SHELL=/bin/bash #默认shell
SKEL=/etc/skel #模板目录
CREATE_MAIL_SPOOL=yes #是否建立邮箱
~
~
以上信息只是标记了shadow文件中两项,还有几项是在用户默认信息另一个文件,
[root@localhost home]# vim /etc/lo
localtime login.defs logrotate.conf logrotate.d/
[root@localhost home]# vim /etc/login.defs
#
# Please note that the parameters in this configuration file control the
# behavior of the tools from the shadow-utils component. None of these
# tools uses the PAM mechanism, and the utilities that use PAM (such as the
# passwd command) should therefore be configured elsewhere. Refer to
# /etc/pam.d/system-auth for more information.
#
# *REQUIRED*
# Directory where mailboxes reside, _or_ name of file, relative to the
# home directory. If you _do_ define both, MAIL_DIR takes precedence.
# QMAIL_DIR is for Qmail
#
#QMAIL_DIR Maildir
MAIL_DIR /var/spool/mail
#MAIL_FILE .mail
# Password aging controls:
#
# PASS_MAX_DAYS Maximum number of days a password may be used.
# PASS_MIN_DAYS Minimum number of days allowed between password changes.
# PASS_MIN_LEN Minimum acceptable password length.
# PASS_WARN_AGE Number of days warning given before a password expires.
#
PASS_MAX_DAYS 99999
PASS_MIN_DAYS 0
PASS_MIN_LEN 5
PASS_WARN_AGE 7
#
# Min/max values for automatic uid selection in useradd
#
UID_MIN 500
UID_MAX 60000
#
# Min/max values for automatic gid selection in groupadd
#
GID_MIN 500
GID_MAX 60000
#
# If defined, this command is run when removing a user.
# It should remove any at/cron/print jobs etc. owned by
# the user to be removed (passed as the first argument).
#
#USERDEL_CMD /usr/sbin/userdel_local
#
# If useradd should create home directories for users by default
# On RH systems, we do. This option is overridden with the -m flag on
# useradd command line.
#
CREATE_HOME yes
# The permission mask is initialized to this value. If not specified,
# the permission mask will be initialized to 022.
UMASK 077
# This enables userdel to remove user groups if no members exist.
#
USERGROUPS_ENAB yes
# Use SHA512 to encrypt password.
ENCRYPT_METHOD SHA512
如上中:
》PASS_MAX_DAYS 9999 #密码有效期(5)
》PASS_MIN_DAYS 0 #密码修改间隔(4)
》PASS_MIN_LEN 5 #密码最小5位(PAM)
》PASS_WARN_AGE 7 #密码到期警告(6)
》UID_MIN 500 #最小和最大UID范围
》GID_MAX 60000
》ENCRYPT_METHOD SHA512 #加密模式
以上文件更改后,shadow文件的默认创建的信息值为如上值
2、修改用户密码 passwd
passwd命令格式
passwd 【选项】用户名
选项:
-S 查询用户密码的密码状态。仅root用户可用
-l 暂时锁定用户。仅root用户可用。锁定用户后,用户无法登录。通过查看/etc/shadow文件会发现被锁定的用户密码标志值开头以! 开始。
如果通过手工更改shadow文件的方式解除锁定感觉麻烦,可以通过解锁选项解锁某个用户。
-u 解锁用户。 仅root用户可用
--stdin 可以通过管道符输出的数据作为用户的密码
注意:普通用户的密码必须符合一定的密码规则,即密码复杂一点,以上命令用于特殊情况,常见使用不多。
2)使用字符串作为用户的密码
echo "123" | passwd --stdin sc 即该命令可以把sc用户的密码设置为接收到的输入字符串123
该方法主要用于shell进行编程,用于用户批量添加等。
3、修改用户信息 usermod
修改用户密码状态 chage 特别注意该拼写
注意:useradd 命令等使用的选项usermod也支持,因为useradd和usermod的区别主要是使用的时间不同,useradd用于用户刚添
加时,usermod用于用户已存在时,配置的修改。
useradd 【选项】用户名
选项:
-u UID: 修改用户的UID号
-c 用户说明:修改用户的说明信息
-G 组名 : 临时用户的附加信息
-L : 临时锁定用户(lock)
-U : 解除用户锁定(Unlock)
锁定和解锁用户的命令随便哪个都可。
2)修改用户密码状态chage
chage 【选项】用户名
选项:
-l :列出用户的详细密码状态
-d 日期: 修改密码最后一次更改日期(shadow 3字段)
-m 天数: 两次密码修改间隔(shadow 4字段)
-M天数: 密码有效期(shadow 5字段)
-W天数:密码过期前警告天数(shadow 6字段)
-I 天数 : 密码过后宽限天数(shadow 7字段)
-E 日期 : 账号失效时间 (shadow 8字段)
示例:
chage -d 0 sc
#以上命令其实是把密码修改日期归0了(shadow第三字段),这样用户一登录就要修改密码。
注意:服务器上给普通用户登录密码设置-d选项为0时,要求普通用户一登录就必须更改密码。该命令也是chage最常用的命令。
4、删除用户 userdel
1)userdel 【-r】用户名
选项:
-r 删除用户的同时删除用户家目录
注意:如果删除用户时不删除其家目录,则其家目录将会成为无任何内容指向的垃圾文件
扩展:手工删除用户
vi /etc/passwd 先根据密码,通过加密算法,找到该值,然后删除,但基本很难
vi /etc/shadow
vi /etc/group
vi /etc/gshadow
rm -rf /var/spool/mail/用户名
rm -rf /home/用户名
如何验证某个用户是否已经完全删除?
答:只要再次添加该用户,如果能够添加成功无提示,说明已经完全删除(当然该工作只是练习用)
以上手工删除的方式只是用于熟悉用户信息位置,更好的理解相应内容。
常用删除,就是使用userdel -r 用户名
2)查看用户ID
id命令:
id 用户名
5、用户切换命令 su
切换用户身份su
命令:
su 【选项】用户名
选项:
- :选项只使用“ - ”代表连带用户的环境变量一起切换
-c :仅执行一次命令,而不切换用户身份
[zhouxueli@localhost /]$ su - root
密码:root对应密码
[zhouxueli@localhost /]$
表示完全将该用户的环境为root,如果从普通用户切换为超级用户,或者
切换为其他用户,则必须输入相应密码
如果从超级用户切换为普通用户,则不需要输入普通用户的密码
su 用户名
该命令常用于临时使用root身份,调用某个只有root用户才有权限调用的命令。
6、添加用户组命令
1)groupadd 【选项】 组名
选项:
-g GID: 指定组ID
[zhouxueli@localhost /]$ groupadd tg
-bash: /usr/sbin/groupadd: 权限不够
[zhouxueli@localhost /]$ su groupadd tg
su: 用户groupadd 不存在
[zhouxueli@localhost /]$ su root
密码:
[root@localhost /]# groupadd tg
[root@localhost /]# vim /etc/group #查看用户组信息
2)修改用户组
groupmod 【选项】组名
选项:
-g GID :修改组ID
-n 新组名: 修改组名
示例:
groupmod -n testgrp group1
查看修改后的效果
vim /etc/group
注意:建议不更改用户组,防止对改组不熟悉,造成某些用户等的系统信息丢失等
3)删除用户组
groupdel 组名
以上命令即可删除某个用户组
如 :groupdel tg
万一这个组中有用户,删除时如果该组中有初始组用户,则该组无法删除,因为该初始用户将没有初始用户组,所以不能删除;
如果该组中有附加组用户时,则该组可以删除。即删除某个用户组时,无法删除一个存在初始用户的用户组。
4)把用户添加入组或从组中删除
gpasswd 【选项】组名
选项:
-a 用户名 :把用户加入组
-d 用户名 :把用户从组中删除
(责任编辑:IT) |