详解 Linux 用户与用户组关系及 useradd 等用户、用户组命令详解
在 Linux 系统里面,用户信息,用户组信息,用户账号,用户密码,用户组密码等都是放在不同配置文件当中。本文就带你熟悉这些配置文件。
实验平台:CentOS 7.7.1908
一、存放文件介绍
1./etc/passwd
用户信息存放文件
$ cat /etc/passwd
root:x:0:0:root:/root:/bin/bash
bin:x:1:1:bin:/bin:/sbin/nologin
daemon:x:2:2:daemon:/sbin:/sbin/nologin
adm:x:3:4:adm:/var/adm:/sbin/nologin
lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin
sync:x:5:0:sync:/sbin:/bin/sync
shutdown:x:6:0:shutdown:/sbin:/sbin/shutdown
halt:x:7:0:halt:/sbin:/sbin/halt
mail:x:8:12:mail:/var/spool/mail:/sbin/nologin
operator:x:11:0:operator:/root:/sbin/nologin
games:x:12:100:games:/usr/games:/sbin/nologin
ftp:x:14:50:FTP User:/var/ftp:/sbin/nologin
nobody:x:99:99:Nobody:/:/sbin/nologin
systemd-network:x:192:192:systemd Network Management:/:/sbin/nologin
dbus:x:81:81:System message bus:/:/sbin/nologin
polkitd:x:999:998:User for polkitd:/:/sbin/nologin
sshd:x:74:74:Privilege-separated SSH:/var/empty/sshd:/sbin/nologin
postfix:x:89:89::/var/spool/postfix:/sbin/nologin
chrony:x:998:996::/var/lib/chrony:/sbin/nologin
ntp:x:38:38::/etc/ntp:/sbin/nologin
zabbix:x:997:995:Zabbix Monitoring System:/usr/local/zabbix-agent/:/sbin/nologin
mysql:x:1001:1001::/home/mysql:/sbin/nologin
nginx:x:1002:1002:Nginx Users:/home/nginx:/sbin/nologin
#虽是 passwd 文件,但是这里面没有存放用户的任何密码信息。一行代表一个用户,各字段间用 ":"分割
/etc/passwd
内容详解
nginx:x:1002:1002::/home/nginx:/sbin/nologin
nginx #用户账号
x #用户密码,由于不保存密码信息,所以使用 x 占位
1002 #用户ID,使用 -u 指定
1002 #用户组ID,使用 -g 指定
Nginx Users #用户信息,使用 -c 指定
/home/nginx #用户家目录,使用 -d 指定
/sbin/nologin #用户所使用的 shell ,使用 -s 指定,nologin 代表不允许登录系统。
可配置选项:
/bin/true 允许登录
/bin/sh
/bin/bash
/bin/flase #false 什么也不做只是返回一个错误状态,然后立即退出
/sbin/nologin #nologin 会礼貌的向用户显示一条信息,并拒绝用户登录
2./etc/shadow
用户密码存放文件
$ cat /etc/shadow
root:$6$hm7GL3Lh$Vsav5f0671/4bLoItibzv7Dpj7gj6L5LOOWm4VrB1v4Ab.Kmeg7qu4YN/0areWRvEaLZaMfCC5.4ezZ9krlZj1:18494:0:99999:7:::
bin:*:18353:0:99999:7:::
daemon:*:18353:0:99999:7:::
adm:*:18353:0:99999:7:::
lp:*:18353:0:99999:7:::
sync:*:18353:0:99999:7:::
shutdown:*:18353:0:99999:7:::
halt:*:18353:0:99999:7:::
mail:*:18353:0:99999:7:::
operator:*:18353:0:99999:7:::
games:*:18353:0:99999:7:::
ftp:*:18353:0:99999:7:::
nobody:*:18353:0:99999:7:::
systemd-network:!!:18373::::::
dbus:!!:18373::::::
polkitd:!!:18373::::::
sshd:!!:18373::::::
postfix:!!:18373::::::
chrony:!!:18373::::::
ntp:!!:18489::::::
zabbix:!!:18489::::::
mysql:!!:18490:0:99999:7:::
nginx:!!:18495:0:99999:7:::
#全使用 MD5 加密算法加密,只允许 root 账号读取。
/etc/shadow
内容详解
root:$6$hm7GL3Lh$Vsav5f0671/4bLoItibzv7Dpj7gj6L5LOOWm4VrB1v4Ab.Kmeg7qu4YN/0areWRvEaLZaMfCC5.4ezZ9krlZj1:18494:0:99999:7:::
root #用户名
$6$hm7GL3Lh$Vsav5f0671/4bLoItibzv7Dpj7gj6L5LOOWm4VrB1v4Ab.Kmeg7qu4YN/0areWRvEaLZaMfCC5.4ezZ9krlZj1 #加密后的密码
18494 #密码最后一次修改日期
0 #两次密码的修改时间间隔
99999 #密码有效期
7 #密码修改到期到的警告天数
密码过期之后的宽限天数:账号失效时间:保留
3./etc/group
用户组信息存放文件
$ cat /etc/group
root:x:0:
bin:x:1:
daemon:x:2:
sys:x:3:
adm:x:4:
tty:x:5:
disk:x:6:
lp:x:7:
mem:x:8:
kmem:x:9:
wheel:x:10:
cdrom:x:11:
mail:x:12:postfix
man:x:15:
dialout:x:18:
floppy:x:19:
games:x:20:
tape:x:33:
video:x:39:
ftp:x:50:
lock:x:54:
audio:x:63:
nobody:x:99:
users:x:100:
utmp:x:22:
utempter:x:35:
input:x:999:
systemd-journal:x:190:
systemd-network:x:192:
dbus:x:81:
polkitd:x:998:
ssh_keys:x:997:
sshd:x:74:
postdrop:x:90:
postfix:x:89:
chrony:x:996:
ntp:x:38:
zabbix:x:995:
mysql:x:1001:mysql
nginx:x:1002:nginx
cgred:x:994:
docker:x:993:
screen:x:84:
#和 /etc/passwd 文件一致,没有存放用户组密码信息
/etc/group
内容详解
nginx:x:1002:
nginx #用户组名称
x #用户组密码,由于不保存密码信息,所以使用 x 占位
1002 #用户组 ID 号
nginx #该用户组的用户成员列表,各用户名间用逗号分隔
4./etc/gshadow
用户密码存放文件,与 /etc/shadow
一致
二、用法示例
1.useradd
命令详解
useradd -h
-c #指定注释
-d #指定家目录
-D #打印或更改默认用户添加配置
-e #指定账户过期的日期。日期格式为 MM/DD/YY; eg: useradd -e 2020-10-14 user
-f #指定在密码过期后多少天即关闭该账号。如果为0账号立即被停用;如果为-1则账号一直可用。默认值为-1
-g #指定用户组 id
-G #指定用户所属的附加群组
-h #打印 help 信息
-m #若主目录不存在,则创建它; 指定 -r -m 可以为系统用户创建家目录
-M #不为用户创建家目录
-N #不创建与用户同名的用户组
-o #允许创建具有重复(非唯一)UID的用户; eg:useradd -u 0 -o user
-p #指定登陆密码
-r #创建一个用户 ID 小于 500 的系统账户,默认不创建对应的主目录
-s #指定用户登录时使用的 shell,默认为 /bin/bash
-u #指定用户 ID
-U #创建与用户同名的组
1.1 创建一个 zabbix
用户
$ useradd -g zabbix -G zabbix -d /usr/local/zabbix-agent/ -s /sbin/nologin -c "Zabbix Monitoring System" -p zabbix123 zabbix
#需要先用 groupadd zabbix 创建用户组
1.2 查看 useradd
创建用户的默认参数
/etc/default/useradd
#文件存放路径
$ cat /etc/default/useradd
# useradd defaults file
GROUP=100
#默认组 ID 为100,在 CentOS 中不生效,CentOS 添加用户时会自动建立和用户名相同的组作为此用户的初始组
HOME=/home
#家目录
INACTIVE=-1
#密码过期后的宽限天数,默认为 -1 代表永远不失效
EXPIRE=
#密码失效时间
SHELL=/bin/bash
#指定用户登录 shell
SKEL=/etc/skel
#在创建一个新用户后,你会发现,该用户主目录并不是空目录,而是有 .bash_profile、.bashrc 等文件,这些文件都是从 /etc/skel 目录中自动复制过来的。因此,更改 /etc/skel 目录下的内容就可以改变新建用户默认主目录中的配置文件信息。
CREATE_MAIL_SPOOL=yes
#指的是给新建用户建立邮箱,默认是创建。也就是说,对于所有的新建用户,系统都会新建一个邮箱,放在 /var/spool/mail/ 目录下,和用户名相同
也可以使用 useradd -D 来打印
$ useradd -D
GROUP=100
HOME=/home
INACTIVE=-1
EXPIRE=
SHELL=/bin/bash
SKEL=/etc/skel
CREATE_MAIL_SPOOL=yes
2.删除用户命令 userdel
详解
$ userdel -h
-f #强制删除
-h #打印帮助信息
-r #删除主目录和邮件信息
2.1 删除 zabbix
用户
$ userdel -r zabbix
3.修改用户命令 usermod
详解
$ usermod -h
-c #修改注释
-d #修改家目录
-e #修改账户过期的日期
-f #修改密码过期后多少天即关闭该账号
-g #修改用户组 id
-G #修改用户所属的附加群组
-h #打印 help 信息
-l #修改用户帐号名称
-L #锁定用户密码,使密码无效
-m #将主目录的内容移动到新位置(仅与-d一起使用)
-o #允许创建具有重复(非唯一)UID的用户
-s #修改用户登录时使用的 shell
-u #修改用户 ID
-U #解除密码锁定
3.1 修改 zabbix
为 zabbixs
$ usermod -l zabbix zabbixs
4.passwd
命令详解
$ passwd --help
-k, --keep-tokens #保留未过期的密码,更新只能在过期之后
-d, --delete #删除指定用户的密码,(仅 root 用户可用)
-l, --lock #锁定指定用户,(仅 root 用户可用)
-u, --unlock #解锁指定用户,(仅 root 用户可用))
-e, --expire #指定用户密码过期,(仅 root 用户可用)
-f, --force #强制指定用户下次登录时必须修改密码
-x, --maximum=DAYS #指定用户密码最长可用时间,(仅 root 用户可用)
-n, --minimum=DAYS #指定用户密码最小可用时间,(仅 root 用户可用)
-w, --warning=DAYS #密码到期前警告用户的天数,(仅 root 用户可用)
-i, --inactive=DAYS #密码过期后帐号被禁用的天数,(仅 root 用户可用)
-S, --status #报告指定帐户的密码状态信息,(仅 root 用户可用)
--stdin #从指定的 stdin 中读取新的密码,(仅 root 用户可用)
Help options:
-?, --help #打印帮助信息
--usage #打印常用的参数
5.gpasswd
命令详解
$ gpasswd -h
Options:
-a, --add USER #将用户添加到一个组(gpasswd -a user1 user 将 user1 添加至 user 组)
-d, --delete USER #将用户从一个组中删除(gpasswd -a user user1 将 user1 从 user 组)删除
-h, --help #打印帮助信息
-Q, --root CHROOT_DIR #从 chroot 目录进入
-r, --delete-password #删除一个组的密码
-R, --restrict #限制成员对组的访问
-M, --members USER,... #设置群组成员列表
-A, --administrators ADMIN,...#设置组的管理员列表
#除-A和-M选项外,其他选项不能组合
5.1 添加组员
$ cat /etc/group
···
jarbo:x:1000:
nginx:x:996:
$ sudo gpasswd -a jarbo nginx
Adding user jarbo to group nginx
#将 jarbo 用户加入到 nginx 组中
$ cat /etc/group
···
jarbo:x:1000:
nginx:x:996:jarbo
5.2 删除组员
$ cat /etc/group
···
jarbo:x:1000:
nginx:x:996:jarbo
$ sudo gpasswd -d jarbo nginx
Removing user jarbo from group nginx
$ cat /etc/group
···
jarbo:x:1000:
nginx:x:996:
Over~
版权协议须知!
本篇文章来源于 Uambiguous ,如本文章侵犯到任何版权问题,请立即告知本站,本站将及时予与删除并致以最深的歉意
1419 0 2020-10-06
博主卡片
运维时间
搭建这个平台,只为分享及记载自己所遇之事和难题。
现在时间 2024-12-28
今日天气
随机推荐
站点统计
- 文章总数:241篇
- 分类总数:29个
- 评论总数:12条
- 本站总访问量 353816 次
@xiaozi 最后的分享的镜像下载地址打不开 服务器没有开机吗?
@yuanyuan 为什么我的4b安装centos7.9 插上tf卡 显示不兼...
@Wong arrhenius 牛比
@MakerFace 厉害了!
@TongSir 老哥 更新下我的友链链接 https://blog.ton...