用户及用户组存在的意义
用户是操作者在系统中的身份标识
用户名称是我们在登陆系统需要使用到的身份表示,这个身份标识决定了我们的用户家目录在系统的哪个位置和哪个具体的目录内。
组是逻辑概念,是用户的集合
用户的存在为了限制权限
不同用户身份有不同的含义,例如超级用户可以享有系统内的任意操作,再者我建立一个aaa用户和bbb用户,同样可以登入系统,但是这两个改密码时只能操作自己本身,超级用户没有下放权力时他们都无法触及其他用户的操作。就像windows系统,一般登入系统我们都是访客身份,很多设定都需要使用管理员身份打开。
组的存在为了归类用户便于管理权限
用户在系统中的存储方式
用户在系统中就是文件中的字符串
每个字符串映射了该用户所用到的系统资源
例:这是系统的中的用户 aaa: x :1001:1001: :/home/aaa:/bin/bash
aaa | 用户名称 |
---|---|
x | 用户密码 |
1001 | 用户id |
1001 | 用户组id |
: : | 用户说明 |
/home/aaa | 用户家目录所在的目录 |
/bin/bash | 用户所使用的shell类型 |
这就是用户在系统中储存的内容
用户涉及到的配置文件及内容
用户的配置文件都储存在系统的什么位置,怎么查看到这些内容呢?
如下所示就是用户的各类配置信息的位置
/etc/passwd ---------------------------------------------#用户信息库
/etc/group ------------------------------------------------#组信息库
/home/用户同名目录 ---------------------------------#默认用户家目录
/etc/skel/所有文件 -------------------------------------#用户环境配置文件模板
/etc/shadow----------------------------------------------#用户认证信息
/etc/gshadow -------------------------------------------#组认证信息
可用less 来查看文见内容,例:less /etc/passwd
用户信息查看方法
id 用户名 ,例 id aaa
[root@workstation Desktop]# id aaa
uid=1001(aaa) gid=1001(aaa) groups=1001(aaa),1002(westos)
查看到
uid | 用户的id |
---|---|
gid | 用户所在主组的id及组名称 |
groups | 用户的所有存在的组的id及名称,包括主组和副组 |
其他的查看参数还有
-u | 查看用户uid |
---|---|
-g | 查看用户gid |
-G | 查看用户所有组的id |
-n | 显示名称,不显示id数字 ,例 id -Gn aaa |
[root@workstation Desktop]# id -u aaa
1001
[root@workstation Desktop]# id -g aaa
1001
[root@workstation Desktop]# id -G aaa
1001 1002
[root@workstation Desktop]# id -Gn aaa
aaa westos
用户身份的切换方式
1、图形中的注销命令
2、gnome-session-quit --force
##注销当前用户
[root@workstation Desktop]#gnome-session-quit --force
会直接切换到用户选择的界面
3、su 和 su -
su | 只切换用户身份,不切换用户环境 |
---|---|
su - | 切换用户身份及用户环境 |
[root@workstation Desktop]# su aaa
(process:7710): dconf-CRITICAL **: 00:09:58.978: unable to create directory '/run/user/0/dconf': Permission denied. dconf will not work properly.
(process:7710): dconf-CRITICAL **: 00:09:58.979: unable to create directory '/run/user/0/dconf': Permission denied. dconf will not work properly.
(process:7710): dconf-WARNING **: 00:09:58.981: failed to commit changes to dconf: Could not connect: Permission denied
[aaa@workstation Desktop]$ touch asd
touch: cannot touch 'asd': Permission denied
su 切换用户后可以看到系统给出的提示,并且切换的用户不能去创建文件,推出需要用 exit 命令。
[aaa@workstation Desktop]$ exit
exit
[root@workstation Desktop]#
su - 切换用户后,没有任何警示,根据命令行提示符可以看到到我们的位置是在aaa用的家目录下,我们可以创建文件,可以执行该用户权力内的任何操作,完成后使用 logout 命令退出。
[root@workstation Desktop]# su - aaa
Last login: Thu Jan 2 00:09:58 EST 2020 on pts/0
[aaa@workstation ~]$ touch asd
[aaa@workstation ~]$ logout
[root@workstation Desktop]#
注意:
每次su切换到其他用户操作之后必须退出,然后再次切换到其他用户
执行时高级用户切换到低级用户不需要密码,低级用户切换到高级需要
平级用户切换切换也需要
用户及用户组建立及删除
用户建立及删除(超级用户下操作)
useradd 用户建立
[root@workstation Desktop]# useradd aaa
[root@workstation Desktop]# tail -n5 /etc/passwd
colord:x:977:977:User for colord:/var/lib/colord:/sbin/nologin
gdm:x:42:42::/var/lib/gdm:/sbin/nologin
gnome-initial-setup:x:976:976::/run/gnome-initial-setup/:/sbin/nologin
avahi:x:70:70:Avahi mDNS/DNS-SD Stack:/var/run/avahi-daemon:/sbin/nologin
aaa:x:1001:1001::/home/aaa:/bin/bash
这样我们就建立了一个用户,在passwd里也可以查看到这个用户
常用参数
-u | 指定uid |
---|---|
-g | 添加到制定gid |
-G | 指定副组id添加 |
-c | 说明添加 |
-M | 不创建家目录 |
-d | 指定家目录 |
-s | 指定shell类型 |
例:指定创建aaa用户的uid为666
[root@workstation Desktop]# useradd -u 666 aaa
Creating mailbox file: File exists
[root@workstation Desktop]# tail -n5 /etc/passwd
colord:x:977:977:User for colord:/var/lib/colord:/sbin/nologin
gdm:x:42:42::/var/lib/gdm:/sbin/nologin
gnome-initial-setup:x:976:976::/run/gnome-initial-setup/:/sbin/nologin
avahi:x:70:70:Avahi mDNS/DNS-SD Stack:/var/run/avahi-daemon:/sbin/nologin
aaa:x:666:1003::/home/aaa:/bin/bash
其他的参数应用都为一个形式
userdel 用户删除
[root@workstation Desktop]# userdel -r aaa
[root@workstation Desktop]# tail -n5 /etc/passwd
clevis:x:978:978:Clevis Decryption Framework unprivileged user:/var/cache/clevis
:/sbin/nologin
colord:x:977:977:User for colord:/var/lib/colord:/sbin/nologin
gdm:x:42:42::/var/lib/gdm:/sbin/nologin
gnome-initial-setup:x:976:976::/run/gnome-initial-setup/:/sbin/nologin
avahi:x:70:70:Avahi mDNS/DNS-SD Stack:/var/run/avahi-daemon:/sbin/nologin
直接把创建的用户删除,删除用户时家目录是不会自动删除的,所以需要加 -r 参数同时删除用户家目录下的文件。
用户组建立及删除(超级用户下操作)
groupadd
[root@workstation Desktop]# groupadd -g888 asd
[root@workstation Desktop]# tail -n5 /etc/group
avahi:x:70:
slocate:x:21:
dip:x:40:
westos:x:1002:
asd:x:888:
组也可以用参数 -g 来指定组id,不加会生成默认id
groupdel
[root@workstation Desktop]# groupdel asd
[root@workstation Desktop]# tail -n5 /etc/group
gnome-initial-setup:x:976:
avahi:x:70:
slocate:x:21:
dip:x:40:
westos:x:1002:
用户及用户组的信息管理
用户的信息管理
usermod
参数
-l | 更改用户名 |
---|---|
-u | 更改uid |
-g | 更改gid,更改组id,该组必须是真实存在的 |
-G | 更改副组,id该组必须是真实存在的 |
-aG | 添加副组,id该组必须是真实存在的 |
-c | 更改说明 |
-s | 更改shell |
-d | 更改家目录地址 |
-md | 更改家目录地址,并改变真实家目录名称 |
例:如何使用 -l 参数
[root@workstation Desktop]# useradd aaa
[root@workstation Desktop]# tail -n1 /etc/passwd
aaa:x:1001:1001::/home/aaa:/bin/bash
[root@workstation Desktop]# usermod -l westos aaa
[root@workstation Desktop]# usermod -l westos aaa
-G ,-aG 这两个参数如何使用:
[root@workstation Desktop]# id aaa
uid=1001(aaa) gid=1001(aaa) groups=1001(aaa)
首先查看aaa用户所在的组有哪些,显示只有主组一个,下来我们更改副组看看结果
[root@workstation Desktop]# usermod -G westos aaa
[root@workstation Desktop]# id aaa
uid=1001(aaa) gid=1001(aaa) groups=1001(aaa),888(westos)
可以看到我们给aaa用户加了一个副组westos,但是这个参数 -G 只能更改现有的副组,如果我们换一个副组,那当前的westos副组集就会消失
[root@workstation Desktop]# usermod -G 1002 aaa
[root@workstation Desktop]# id aaa
uid=1001(aaa) gid=1001(aaa) groups=1001(aaa),1002(heyaunxiang)
实验发现新的组顶替了之前的westos,如何同时加入两个副组呢,我们用到 -aG
[root@workstation Desktop]# usermod -aG 888 aaa
[root@workstation Desktop]# id aaa
uid=1001(aaa) gid=1001(aaa) groups=1001(aaa),888(westos),1002(heyaunxiang)
这样就把aaa用户,同时放入两个副组内,参数后加组名称时,名字和组id都是可以的
-d -md 参数用法说明
[root@workstation Desktop]# usermod -d /home/qqq aaa
[root@workstation Desktop]# tail -n1 /etc/passwd
aaa:x:1001:1001::/home/qqq:/bin/bash
[root@workstation Desktop]# ls -l /home/
total 4
drwx------. 4 aaa aaa 93 Jan 2 01:01 aaa
drwx------. 15 student student 4096 Dec 31 03:12 student
这样就改了aaa用户的家目录,但我们发现这个文件并没有被建立,只是在用户的字符串内修改了,如果我们想修改,用户的家目录和真实存在的家目录名称就需要用到 -md
[root@workstation Desktop]# usermod -md /home/qqq aaa
[root@workstation Desktop]# tail -n1 /etc/passwd
aaa:x:1001:1001::/home/qqq:/bin/bash
[root@workstation Desktop]# ls -l /home/
total 4
drwx------. 4 aaa aaa 93 Jan 2 01:01 qqq
drwx------. 15 student student 4096 Dec 31 03:12 student
用户组的信息管理
groupmod
参数
-g | 修改组id |
---|
[root@workstation Desktop]# groupmod -g 888 westos
[root@workstation Desktop]# tail -n5 /etc/group
gnome-initial-setup:x:976:
avahi:x:70:
slocate:x:21:
dip:x:40:
westos:x:888:
用户认证文件的内容分析、管理
在 目录/etc/shadow 查看用户认证信息文件
[root@workstation Desktop]# tail -n5 /etc/shadow
colord:!!:18038::::::
gdm:!!:18038::::::
gnome-initial-setup:!!:18038::::::
avahi:!!:18038::::::
aaa:!!:18263:0:99999:7:::
每个冒号为一个信息的分隔
例:
aaa:!!:18263:0:99999: 7 : : :
1 2 3 4 5 6 7 8
1 | 用户名称 |
---|---|
2 | 用户密码 |
3 | 用户最后一次修改密码的日期(从1970年1.1至今的时间) |
4 | 密码最短有效期 |
5 | 密码最长有效期 |
6 | 密码到期前警告 |
7 | 密码非活跃天数 |
8 | 密码到期时间 |
如何多这些用户信息进行管理呢?
passwd | 直接修改密码,普通用户仅可以修改个人密码 |
---|---|
passwd 用户名 | 超级用户可任意修改指定用户密码 |
passwd -d | 删除用户密码 |
passwd -n | 设置密码最小有效期 |
passwd -x | 设置密码最大有效期 |
passwd -l | 用户锁定(!!表示) |
passwd -u | 用户解锁 |
passwd -e | 清除密码日期(0)启动后强制修改 |
passwd -S | 查看用户密码属性 |
passwd -w | 设置密码到期警告天数,密码到期前警告 |
passwd -i | 设置非活跃天数 |
设置密码后会密码位出现加密字符来表示密码:
[root@workstation Desktop]# passwd aaa
Changing password for user aaa.
New password:
BAD PASSWORD: The password is a palindrome
Retype new password:
passwd: all authentication tokens updated successfully.
[root@workstation Desktop]# tail -n1 /etc/shadow
aaa:$6$70ApWUvzpE6lSudc$vrQ4zMwn3zTRvpOeLX3ZN0jSSE44P6Tmeg1Rb.OC3H/gdAOFLoQzRAxi
IoDaqsaJgZb9QMDLsCbKxuJ1SSQMM/:18263:0:99999:7:::
密码最小有效期修改,将最小值修改为20,表示aaa用户至少20天后才可以修改密码:
aaa:!!:18263:0:99999:7:::
[root@workstation Desktop]# passwd -n 20 aaa
Adjusting aging data for user aaa.
passwd: Success
aaa:!!:18263:20:99999:7:::
另一类修改命令 chage
参数
chage -m | 设置密码最小有效期 |
---|---|
chage -M | 设置密码最大有效期 |
chage -d | 设置用户最后一次修改密码的日期 |
chage -W | 设置密码到期警告天数 |
chage -I | 设置非活跃天数 |
chage -E | 设置密码的修改天数 |
用法与passwd命令类似
chage -d 修改密码最后一次修改的时间
aaa::18263:20:99999:7::20:
[root@workstation Desktop]# chage -d 20 aaa
aaa::20:20:99999:7::20:
另外 usermod也可以锁定和解锁用户
usermod -L | 用户锁定 |
---|---|
usermod -U | 用户解锁 |
特殊非交互的命令 “echo 内容 | passwd --stdin root” 直接可修改root用户密码
[root@workstation Desktop]# echo haha | passwd --stdin root
Changing password for user root.
passwd: all authentication tokens updated successfully.
用户权力下放
在权限管理中,我们需要给部分的普通用户下放一些使用权力,如创建用户,删除用户,修改其他用户密码等权限,如何来实现呢
在shell中输入visudo,我们进入设定界面,按照行业规范,我们在100后输入设定
101
102 ## Allows members of the 'sys' group to run networking, software,
103 ## service management apps and more.
104 # %sys ALL = NETWORKING, SOFTWARE, SERVICES, STORAGE, DELEGATING, PROCES SES, LOCATE, DRIVERS
105
106 ## Allows people in group wheel to run all commands
107 %wheel ALL=(ALL) ALL
这里是截取的一部分设定,##表示的设定的说明
我们也来写一个设定,下放创建用户权力给aaa用户
westos workstation.lab.example.com=(root) NOPASSWD:/usr/sbin/useradd
westos | 下放权力的用户名 |
---|---|
workstation.lab.example.com | 主机地址(可以用 hostname 查看) |
=(root) | 新执行身份 |
NOPASSWD: | 免密操作 |
/usr/sbin/useradd | 下放的权限(which useradd可查看权限的真实目录) |
写完后:wq退出保存,切换至westos用户我们来测试
westos workstation.lab.example.com=(root) NOPASSWD:/usr/sbin/useradd
切换后在westos用户shell中添加用户qqq,然后id qqq 我们可以看到qqq用户被成功建立出来了
[westos@workstation ~]$ sudo useradd qqq
[westos@workstation ~]$ id qqq
uid=1003(qqq) gid=1003(qqq) groups=1003(qqq)
以上就是Linux中,用户管理,包括了用户和用户组的建立和删除,修改用户认证文件,还有就是用户的权力下放。本节内容较多,掌握还需要勤加联系。