用户和组管理
1、用户和组管理命令
用户管理命令:useradd、usermod、userdel、passwd、id
组账号维护命令:groupadd、groupmod、groupdel、gpasswd、
其他相关命令:groups、groupmems、newusers、chpasswd、chage、newgrp、su、chsh、getent、finger、chfn…
2、useradd
- useradd - 创建新用户或者更改默认新用户的信息
- usage - useradd [options] LOGIN
- 新用户创建时默认家目录模板文件:/etc/skel/*
- 新建用户相关的默认配置文件:/etc/default/useradd
- 新建用户相关的默认配置文件:/etc/login.defs
- newusers 批量创建用户
- chpasswd 批量修改用户口令
1、默认相关配置文件:
[root@centos7 ~]# cat /etc/default/useradd
# useradd defaults file
GROUP=100
useradd -N此时创建用户默认主组为user组(GID100),
不创建与其同名的用户组
HOME=/home
INACTIVE=-1
口令过期活跃天数,默认-1表示不做处理
EXPIRE=
账户有效时长
SHELL=/bin/bash
SKEL=/etc/skel
CREATE_MAIL_SPOOL=yes
创建邮箱
[root@centos7 ~]# cat /etc/login.defs (详请去查阅文档)
[root@centos7 ~]# ll -a /etc/skel/
-rw-r--r--. 1 root root 18 Oct 31 2018 .bash_logout
-rw-r--r--. 1 root root 193 Oct 31 2018 .bash_profile
-rw-r--r--. 1 root root 231 Oct 31 2018 .bashrc
drwxr-xr-x. 4 root root 39 Jul 17 16:52 .mozilla
-rw-r--r--. 1 root root 658 Oct 31 2018 .zshrc
2、要求掌握的选项有:
[root@centos7 ~]# rpm -q --scripts httpd
preinstall scriptlet (using /bin/sh):
# Add the "apache" group and user
/usr/sbin/groupadd -g 48 -r apache 2> /dev/null || :
/usr/sbin/useradd -c "Apache" -u 48 -g apache \
s /sbin/nologin -r -d /usr/share/httpd apache 2> /dev/null...
httpd的安装前执行脚本中,创建apache用户中的选项。
useradd -c|-s|-r|-g|-u|
3、useradd选项:
-c,用户注释
-d, 指定家目录路径;不存在的目录
-g,GID
-G,为用户指明附加组,附加组必须事先存在
-m,创建家目录,用于系统用户
-M,不创建家目录,用于非系统用户
-N,不创建私用组做主组,使用user做主组
-o,配合-u不检查UID的唯一性
-r, 系统用户
-s,shell
-u,UID
示例:
[root@centos7 ~]# useradd -s /bin/zsh -u 1111 \
-G zheng -d /data/xm -c 'xiaoming' xm
(一般使用''表面字符串)
[root@centos7 ~]# getent passwd xm
xm:x:1111:1111:xiaoming:/data/xm:/bin/zsh
[root@centos7 ~]# ll -d /data/xm
drwx------. 3 xm xm 92 Jul 26 19:53 /data/xm
3、newusers | chpasswd
newusers 批量创建用户 | chpasswd批量修改用户口令
newusers userfile(userfile文件格式与/etc/passwd格式保持一致)
chpasswd passwdfile(passwdfile文件格式为 user_name:password)
示例:
newusers:
[root@centos7 tmp]# getent passwd mage
mage:x:1001:1001::/home/mage:/bin/bash
[root@centos7 tmp]# cat newusers.txt
user1:x:1005:1005::/home/user1:/bin/zsh
user2:x:1006:1006::/home/user2:/bin/zsh
[root@centos7 tmp]# newusers newusers.txt
[root@centos7 tmp]# tail -2 /etc/passwd
user1:x:1005:1005::/home/user1:/bin/zsh
user2:x:1006:1006::/home/user2:/bin/zsh
[root@centos7 tmp]# id user1
uid=1005(user1) gid=1005(user1) groups=1005(user1)
chpasswd:
[root@centos7 tmp]# cat password.txt
user1:centos
user2:centos
[root@centos7 tmp]# chpasswd <password.txt
[root@centos7 tmp]#
4、usermod
- usermod - 修改用户属性
- Usage: usermod [options] LOGIN
Options:
-c 'COMMENT',修改注释
-d HOME,新的家目标不会自动创建,若要创建新家目录并且原家目录数据;
同时使用-m选项
-e YY-MM-DD,指明用户账户过期日期
-f INACTIVE,设定非活动期限
-g GID,新主组
-G GROUP1,[GROUP2]...,新附加组(覆盖修改),配个-a使用,新增附加组
-a,配个-G使用
-l login_name,新用户名
-o,不匹配UID的唯一性,与-u连用
-s SHELL,新的默认shell,与chsh命令一样
-u UID,新的UID
-U,unlock 解锁用户
-L,lock 锁定用户
示例:
[root@centos7 tmp]# usermod -aG user1 user2
将user2加入至user1组中
[root@centos7 tmp]# usermod -G '' mage
删除mage的附加组
[root@centos7 tmp]# id user2
uid=1003(user2) gid=1003(user2) groups=1003(user2),1005(user1)
5、userdel
- userdel - 删除用户和相关文件
- Usage: userdel [options] LOGIN
Options:
-r, 删除家目录和邮箱。
6、passwd
- passwd - 更改用户密码
- Usage: passwd [OPTION…]
选项:
-d,删除指定用户口令(root only)
-l,锁定指定用户(root only)
-u,解锁指定用户(root only)
-e,强制要求用户下次用户登录时修改口令(root only)
-f,强制执行
-x,口令最长使用期(root only)
-n,口令最短使用期(root only)
-w,口令过期前多长时间警告(root only)
-i,口令过期后活跃时长(root only)
--stdin,从STDIN中读取口令(root only)
7、id
- id - 显示用户相关信息
- Usage: id [OPTION]… [USER]
选项:
-g,显示GID
-G,显示所属组GID
-n,配合-ugG显示名相应名称
-u,显示UID
示例:
[root@centos7 ~]# id -nu
root
[root@centos7 ~]#
id可用来判断用户是否存在
[root@centos7 ~]# id user1
id: user1: no such user
8、groupadd
- groupadd - 创建新组
- Usage: groupadd [options] GROUP
Options:
-g GID,指定创建组的GID
-r,系统组
9、groupmod
- groupmod修改组属性
- Usage: groupmod [options] GROUP
Options:
-g GID:更改组的GID
-n name:更改组名
10、groupdel
- groupdel - 删除组
- Usage: groupdel [options] GROUP
11、gpasswd
- gpasswd - 管理/etc/group和/etc/gshadow
- Usage: gpasswd [option] GROUP
Options:
-a user,将user添加至指定用户
-d user,从指定组中移除用户
-A user1,user2..设置组管理员
-r,删除组密码
组默认无密码,无密码时由root管理该组
若设置密码,任何人可以凭密码加入该组
12、groups
- groups - 打印用户所在的组
- Usage: groups [OPTION]… [USERNAME]…
示例:
[root@centos7 ~]# gpasswd -a mage user1
Adding user mage to group user1
[root@centos7 ~]# groups mage root
mage : mage user1
root : root
13、groupmems
- groupmems - 管理组成员
- Usage: groupmems [options] [action]
Options:
-g groupname,对指定组名执行action(root only)
Actions:
-a, --add username 指定用户加入该组
-d, --delete username 该组移除指定用户
-l, --list 列出该组成员
Example:
[root@centos7 ~]# groupmems -g user1 -a zheng
[root@centos7 ~]# groupmems -g user1 -l
mage zheng
[root@centos7 ~]#
14、chage
- chage - 更改用户密码的到期信息
- Usage: chage [options] LOGIN
Options:
-d, --lastday LAST_DAY
-E, --expiredate EXPIRE_DATE
-I, --inactive INACTIVE
-l, --list 显示用户到期信息
-m, --mindays MIN_DAYS
-M, --maxdays MAX_DAYS
-W, --warndays WARN_DAYS
Example:
[root@centos7 ~]# chage user1
...
(以下信息回车为默认;默认为[#]表示的信息)
Minimum Password Age [0]:
Maximum Password Age [99999]:
Last Password Change (YYYY-MM-DD) [2019-07-27]:
Password Expiration Warning [7]:
Password Inactive [-1]:
Account Expiration Date (YYYY-MM-DD) [-1]:
15、newgrp
- newgrp - 临时切换主组
- Usage: newgrp [-] [group]
16、su
- su - 切换用户或以其他用户身份执行命令
- Usage : [options] [-] [USER [arg]…]
Options:
-, -l, --login 使shell成为一个登陆shell(完全切换)
-c cmd,su [-] User -c 'COMMAND' 指定用户身份执行命令
登录式切换(完全切换):su - user
不读取切换用户的配置文件,不改变当前工作目录
非登录式切换(不完全切换):su user
读取切换用户的配置文件,切换至用户家目录
17、getent
- getent - get entries from Name Service Switch libraries
- getent - 从名称服务交换机库中获取条目
- Usage: getent [OPTION…] database [key …]
Example:
getent passwd|shadow|group|gshadow[user]
[root@centos7 ~]# getent passwd user1
user1:x:1002:1003::/home/user1:/bin/bash
[root@centos7 ~]# getent group user1
user1:x:1003:mage,zheng
[root@centos7 ~]# getent gshadow user1
user1:!::mage,zheng
[root@centos7 ~]#
18、finger
- finger - 显示用户描述信息
- usage:finger [user …]
Example:
[root@centos7 ~]# finger user1
Login: user1 Name:
Directory: /home/user1 Shell: /bin/bash
Never logged in.
No mail.
No Plan.
[root@centos7 ~]#
19、chfn
- chfn - 更改用户描述信息
- chfn [option] [username]
options:
-f,全名,描述信息
-o,办公室
...
example:
[root@centos7 ~]# chfn user1
Changing finger information for user1.
Name []: xigua
Office []: wu
Office Phone []: wu
Home Phone []: 10086
Finger information changed.
[root@centos7 ~]# finger user1
Login: user1 Name: xigua
Directory: /home/user1 Shell: /bin/bash
Office: wu, wu Home Phone: x1-0086
Never logged in.
No mail.
No Plan.
[root@centos7 ~]# getent passwd user1
user1:x:1002:1003:xigua,wu,wu,10086:/home/user1:/bin/bash