[toc]
一、用户与组介绍
1、什么是用户?
用户时操作系统提供的一种安全机制
用户是权限的化身
2、为何要有用户?
划分权限,增强安全性
每启动一个进程,都会与一个用户关联
进程
3、查看用户相关信息
| 命令 | 用来干啥 |
|---|
| id | 查看当前用户信息 |
| whoami | 查看当前用户是谁 |
| who | 查看所有登录的用户 |
| ps -aux | grep [s]sh | 每一个进程都有其用户 |
[root@manager ~]
uid=0(root) gid=0(root) 组=0(root) 环境=unconfined_u:unconfined_r:unconfined_t:s0-s0:c0.c1023
[root@manager ~]
root
[root@manager ~]
root pts/0 2021-08-21 15:12 (192.168.31.15)
[root@manager ~]
root 1088 0.0 0.1 112900 4312 ? Ss 8月18 0:00 /usr/sbin/sshd -D
root 31110 0.1 0.1 158904 5752 ? Ss 15:12 0:01 sshd: root@pts/0
root 31114 0.0 0.1 158904 5512 ? Ss 15:12 0:00 sshd: root@notty
root 31143 0.0 0.0 72252 2852 ? Ss 15:12 0:00 /usr/libexec/openssh/sftp-server
4、linux系统的用户角色划分
linux系统中用户分为管理员和其他用户
管理员拥有最高权限,其他用户根据管理员的分配拥有不同的权限
uid 与 gid
uid :用户id,唯一标识一个系统用户的账号,uid在系统中是唯一的,uid -》身份证号 用户名-》名字
gid :组id,标识一个组
centos7 系统关于uid的约定:
0 超级管理员,最高权限
1~200 系统用户,用来运行系统自带的进程,默认已创建
201~999 系统用户,用来运行安装的程序,所以此类用户无需登录系统
1000+ 普通用户,可以正常登录到系统的用户,权限较小,能执行的任务有限
5、root用户
默认是root用户,其uid、gid均是0,root用户在每台unix/linux操作系统中都是唯一且真实存在的,通过它可以登录系统,可以操作系统中任何文件和命令,拥有最高的管理权限
6、组的概念
主组:用户本身所在的组
附加组:为用户添加的组
用户与组的关系:
一对一:一个用户默认在自己的主组下
一对多:一个用户可以属于多个组,用户只有一个主组,但可以为用户添加多个附加组
多对多:多个用户可以属于多个组
总结:
linux将权限分为了三类:
属主
属组
其他人
二、用户与组相关文件
与用户和组相关的文件:
/etc/passwd 用户相关
/etc/shadow 用户相关
/etc/group 组相关
/etc/gshadow 组相关
/home/... 默认的用户家目录
/var/spool/mail/... 用户mail文件
/etc/passwd
[root@manager ~]
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
以:为分隔符,分为七列
第一字段 用户名
第二字段 密码(在例子中我们看到x,其实密码被映射到/etc/shadow文件中
第三字段 uid
第四字段 gid
第五字段 描述信息(可为空)
第六字段 用户家目录所在的位置
第七字段 用户登录后第一个启动的程序,通常为shell
/etc/shadow
[root@manager ~]
root:$6$b0GUj/CGVJqRU95Y$nKQhiX/QXUxzLL8
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:!!:19577::::::
dbus:!!:19577::::::
polkitd:!!:19577::::::
sshd:!!:19577::::::
postfix:!!:19577::::::
chrony:!!:19577::::::
以:为分隔符,分为九列(可使用man shadow查看详细信息)
第一字段 用户名
第二字段 密码(密文,!!表示没有密码,x表示这个用户不能登录到系统,这个字段是非空的)
第三字段 上次修改密码的时间(这个时间是从1970-1-1到上次修改口令的天数)
第四字段 两次修改密码的最小间隔天数(若为0则表示禁用此功能)
第五字段 两次修改密码的最大间隔天数(此项能增强用户口令的时效性)
第六字段 提前多少天提醒用户密码即将过期
第七字段 密码过期多少天后禁用此用户
第八字段 用户过期日期(此字段指定了用户作废的天数(从1970-1-1开始的天数)若此项为空,则账户永久可用)
第九字段 保留字段
```
```bash
[root@manager ~]
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:
以:为分隔符,分成四列
第一字段 用户组的名称
第二字段 用户组的密码占位符
第三字段 用户组的gid
第四字段 显示该用户组作为哪些用户的附加组,多个用逗号分隔
```
```bash
[root@manager ~]
root:::
bin:::
daemon:::
sys:::
adm:::
tty:::
disk:::
lp:::
mem:::
kmem:::
wheel:::
cdrom:::
mail:::postfix
man:::
dialout:::
floppy:::
games:::
tape:::
video:::
ftp:::
lock:::
audio:::
nobody:::
users:::
utmp:!::
utempter:!::
input:!::
systemd-journal:!::
systemd-network:!::
dbus:!::
polkitd:!::
ssh_keys:!::
sshd:!::
postdrop:!::
postfix:!::
chrony:!::
以:为分隔符,分成四列
第一字段 用户组的名称
第二字段 用户组密码(可以为空或!,表示没有密码)
第三字段 用户组管理者(可以为空,如果有多个用户组管理者,用,分割)
第四字段 显示该用户组作为哪些用户的附加组,多个用,分割
/etc/skel/...
用户家的模板
/home/...
用户的家目录
/var/spool/mail/...
用户的邮箱文件
三、用户管理命令:
| 命令 | 用来干啥 |
|---|
| useradd | 添加用户 |
| userdel | 删除用户 |
| usermod | 修改用户信息 |
1、创建用户
[root@manager ~]
2、查看用户
[root@manager ~]
uid=1000(devin) gid=1000(devin) 组=1000(devin)
3、删除用户
[root@manager ~]
4、useradd命令详解
| 参数 | 用来干啥 |
|---|
| -u | 指定用户的uid |
| -g | 指定用户所属的主组 |
| -G | 指定用户所属的附加组 |
| -d | 指定用户的家目录 |
| -c | 指定用户的备注信息 |
| -s | 指定用户使用的shell |
| -e | 修改过期时间 |
| -m | 不创建家目录(系统账户一般不配备家目录) |
| -r | 创建系统账户,uid处于系统用户范围内,默认没有家目录 |
5、usermod命令
与useradd命令的参数基本一致,只不过useradd是添加用户,usermod是修改
| 参数 | 用来干啥 |
|---|
| -u | 修改指定用户的uid |
| -g | 修改指定用户的主组 |
| -a | 将用户添加到附加组,仅与-G参数一起使用 |
| -G | 修改指定用户的附加组,多个使用,隔开,覆盖原有附加组 |
| -d | 修改指定用户的家目录 |
| -c | 修改指定用户的注释信息 |
| -s | 修改指定用户的bash shell |
| -m | 将用户的主目录移动到新位置,如果当前主目录不存在,则不创建新的主目录 |
| -l | 修改指定用户的用户名 |
| -L | 锁定指定的用户 |
| -U | 解锁指定的用户 |
6、设置于修改密码
[root@manager ~]
[root@manager ~]
echo "密码" | passwd --stdin 用户名
ps
[root@manager ~]
四、组管理
1、组管理命令
| 命令 | 用来干啥 |
|---|
| groupadd | 添加组 |
| groupmod | 修改组 |
| groupdel | 删除组 |
| gpasswd | 设置组密 |
| newgrp | 切换主组(临时切换到该组下,获取相应的权限) |
2、创建组
[root@manager ~]
3、修改组
[root@manager ~]
4、删除组
如果一个组是用户的主组,那么改组不能被删除,删除用户会默认一起删除他的主组
[root@manager ~]
5、组成员管理
对于用户来说,组分为两类:
1、主组,用户只能又一个主组,可以通过-g指定,如未指定则常见一个默认的主组(于用户名同名)
2、附加组,主组不能满足授权需求,创建附加组,将用户加入该组,用户可以属于多个附加组,加入一个组后就拥有了改组的权限
我们可以为组设置密码,然后让一些非组成员通过newgrp命令临时切换到组内并输入密码获取组用户的权限
五、手动创建用户
需要创建用户请使用 useradd 命令,以下操作纯属没事找事
1、/etc/passwd
[root@manager ~]
devin:x:1000:1000:键落惊风雨 回车泣鬼神:/home/devin:/bin/bash
2、/etc/shadow
[root@manager ~]
Password:
$1$devin-pa$zjeyM21tLlHltHI/wyiLq.
[root@manager ~]
devin:$1$devin-pa$zjeyM21tLlHltHI/wyiLq.::0:99999:7:::
3、/etc/group
[root@manager ~]
devin:x:1000:
4、/etc/gshadow
[root@manager ~]
devin:!::
5、创建用户家目录,并用模板装修一下,注意权限
[root@manager ~]
[root@manager ~]
[root@manager ~]
[root@manager ~]
6、/var/spool/mail/df 用户邮箱文件
[root@manager ~]
[root@manager ~]
[root@manager ~]
7、账户登录测试
嘎嘎好使!
PS:制作密码
openssl passwd 选项 密码
选项:
-1 表示使用的是md5加密算法
-salt 指定salt值,不使用随机产生的salt,(在使用加密算法进行加密时,即使密码一样,salt不一样,所计算出来的hash值也不一样;除非密码一样,salt也一样,计算出来的hash值才一样,salt值为8字节的字符串)