Linux系统之用户的管理
在进行用户管理操作之前,我们必须要了解到Linux系统中分别有三类用户:
1 root :也被称为超级用户。超级用户对系统有控制权限,可以不受限制的运行任何命令,root 用户可以看作是系统的管理员。
2 系统用户: 系统用户通常是不可登陆的,执行某些服务及进程的帐号。
3 普通用户: 一般用户都是普通用户,这些用户对系统文件的访问受限。
1.查看用户
##查看当前用户——whoami
在不知道自己具体时超级用户,普通用户还是系统用户时,可以在命令行中输入whoami,即可查询到当前所使用的用户.
##查看指定用户——id + 指定用户
名称 | 方法 |
---|---|
-u | 查看用户的uid |
-g | 查看用户的gid |
-G | 查看用户所在的所有组的id |
-nG | 查看用户的所有组的名字 |
登录linux系统时,输入的是我们的帐号,但是linux系统并不会直接识别你的帐号,而是通过建立帐号时系统分配的ID号码;系统会为用户帐号分配至少两个ID,一个用户ID(UserID,简称UID),一个用户组ID(GroupID,简称GID),下面是UID:
名称 | 方法 |
---|---|
系统管理员ID | 0 (root用户ID) |
普通用户ID | 1~65535 |
系统用户ID | 1~499(CentOS 6),1 ~999(CentOS 7) |
登录用户ID | 500~+(CentOS 6),1000~+(CentOS 7) |
下面了解一下GID:
名称 | 方法 |
---|---|
管理员组 | 0 (root组ID) |
普通组 | 1~65535 |
系统组ID | 1~499(CentOS 6),1 ~999(CentOS 7) |
非系统组ID | 500~+(CentOS 6),1000~+(CentOS 7) |
对于一个用户而言,只有唯一个UID,但是可以有多个不同的组,分别为初始组和附加组,主组组名与用户名相同,且只有一个用户。主组以外的组为附加组。
2.用户的切换——su - 用户名
##注销当前用户——gome-session-quit --force
注销当前用户后,在使用其他用户登陆
在切换用户时,使用su - 用户名称
su - 中 “-” 标示在用户身份切换时同时切换当前用户的环境
su - 执行时高级用户切换到低级用户不需要密码,低级用户切换到高级需要,平级用户切换也需要
注意:每次su切换到其他用户操作之后必须退出(exit),然后再次切换到其他用户
3.用户在系统中的存储方式
##/etc/passwd 用户信息文件——用户帐号
查看/etc/passwd文件的后三行
[kiosk@foundation70 ~]$ head -n 3 /etc/passwd
root❌0:0:root:/root:/bin/bash
bin❌1:1:bin:/bin:/sbin/nologin
daemon❌2:2:daemon:/sbin:/sbin/nologi
passwd文件以”:”将信息分为7字段,各字段意义如下:
1字段:用户名称
2字段:用户密码,早期密码就在这个字段,后因安全问题,改放到/etc/shadow
3字段:UID,该帐号是登录用户,UID(CentOS7)分配为1000+
4字段:GID
5字段:对用户的说明信息,(注释)
6字段:用户的家目录
7字段:用户的shell
##/etc/group 用户组信息文件——组帐号
查看/etc/group文件后三行
[kiosk@foundation70 ~]$ head -n 3 /etc/group
root❌0:
bin❌1:
daemon❌2:
group文件以”:”将信息分为4字段,各字段意义如下:
1字段:组名称
2字段:用户组密码,因安全问题,改放到/etc/gshadow
3字段:GID
4字段:以此组为附加组的用户名称
##/etc/shadows 认证信息文件——用户密码
shadow文件以”:”将信息分为4字段,各字段意义如下:
1字段:用户名称
2字段:用户密码,该用户暂未设置密码
3字段:最后一次变更密码的日期,从1970年1月1日开始计算
4字段:密码变更锁定天数,与第3段相比锁定天数过后才可变更密码
5字段:密码使用期限,与第3段相比在此天数内需要重设你的密码
6字段:密码变更前警告期,与第5段相比密码快要到期时,系统会依据这个字段的天数设置发出”警告”
7字段:密码过期宽限时间,在此天数内用户没有登录变更密码,那么该帐号的密码将会”失效”
8字段:帐号失效日期,无论密码是否过期,这个帐号都不能再被使用
9字段:保留字段
##/etc/gshadow: 组密码及相关属性——组密码
gshadow文件以”:”将信息分为4字段,各字段意义如下:
1字段:组名称
2字段:用户组密码,该用户组暂未设置密码
3字段:用户组管理者,缺省代表没有管理者
4字段:组内用户列表,因为这是用户的私有组所以没有其他用户
##/etc/shells:系统中shell文件
其中/sbin/nologin为系统用户的shells,没有界面
4.用户管理命令
在进行用户管理命令练习时,我们可以使用watch来对/etc/passwd和/etc/group文件内容以及/home目录进行监控,这样可以清晰的明确看到用户的变化
[root@localhost Desktop]# watch -n 1 “tail -n 3 /etc/passwd /etc/group; ls -l /home”
watch -n ——每隔一秒变化一次
“tail -n 3 /etc/passwd /etc/group——查看 /etc/passwd /etc/group文件后三行
ls -l /home” ——查看/home目录里面的所有内容
##删除用户——userdel
名称 | 方法 |
---|---|
删除用户但不删除用户配置文件 | userdel+用户名 |
删除用户也删除用户配置文件 | userdel -r +用户名 |
##查看 /etc/passwd /etc/group文件后三行,查看/home目录里面的所有内容
[root@localhost Desktop]# watch -n 1 "tail -n 3 /etc/passwd /etc/group; ls -l /home"
##删除zhima用户
[root@localhost Desktop]# userdel zhima
##删除zhima1用户
[root@localhost Desktop]# userdel -r zhima1
##新建zhima用户失败
[root@localhost Desktop]# userdel zhima
userdel: user 'zhima' does not exist
##新建zhima1用户成功
[root@localhost Desktop]# useradd zhima1
在图中我们可以看出在用userdel删除用户zhima再恢复该用户时无法被恢复,说明该用户的配置文件没有被删除;用userdel -r 删除用户zhima1再恢复该用户时无法被恢复,说明该用户的配置文件被删除
##新建用户——useradd
名称 | 方法 |
---|---|
指定用户uid | useradd -u |
指定用户初始组id | useradd -g |
指定用户的附加组id | useradd -G |
指定用户的说明 | useradd -c |
指定用户的家目录 | useradd -d |
指定用户的默认shell | useradd -s |
在指定用户组ID时,组ID必须存在
##指定upan用户的uid为7777
[root@localhost Desktop]# useradd -u 7777 upan
[root@localhost Desktop]# id upan
uid=7777(upan) gid=7777(upan) groups=7777(upan)
##删除upan用户
[root@localhost Desktop]# userdel -r upan
##指定upan用户的初始组gid为72
[root@localhost Desktop]# useradd -g 72 upan
[root@localhost Desktop]# id upan
uid=1002(upan) gid=72(tcpdump) groups=72(tcpdump)
[root@localhost Desktop]# userdel -r upan
##指定upan用户的附加组id为21
[root@localhost Desktop]# useradd -G 21 upan
[root@localhost Desktop]# id upan
uid=1002(upan) gid=1002(upan) groups=1002(upan),21(slocate)
[root@localhost Desktop]# userdel -r upan
##指定upan用户的说明为cunchushebei
[root@localhost Desktop]# useradd -c "cunchushebei" upan
##显示/etc/passwd文件最后一行
[root@localhost Desktop]# tail -n 1 /etc/passwd
upan:x:1002:1002:cunchushebei:/home/upan:/bin/bash
[root@localhost Desktop]# userdel -r upan
##指定upan用户的家目录为 /home/cunchu
[root@localhost Desktop]# useradd -d /home/cunchu upan
##显示/home中的所有文件
[root@localhost Desktop]# ls -l /home
total 18
drwx------ 4 upan upan 1024 Jul 11 05:08 cunchu
drwx------ 2 root root 12288 May 11 2017 lost+found
drwx------ 4 7777 7777 1024 Jul 11 05:02 shu
drwx------. 5 student student 1024 May 11 2017 student
drwx------ 4 zhima1 zhima1 1024 Jul 11 04:50 zhima
drwx------ 4 zhima1 zhima1 1024 Jul 11 04:52 zhima1
[root@localhost Desktop]# userdel -r upan
##指定upan用户的默认shell为/bin/sh
[root@localhost Desktop]# useradd -s /bin/sh upan
##显示/etc/passwd文件最后一行
[root@localhost Desktop]# tail -n 1 /etc/passwd
upan:x:1002:1002::/home/upan:/bin/sh
在进行新建用户的练习时,必须注意在新建用户后必须删除该用户后再进行下一项练习
##用户组的建立——groupadd
名称 | 方法 |
---|---|
建立用户组 | groupadd |
建立用户组并指定用户组ID | groupadd -g |
删除用户组 | groupdel |
##建立upan用户组id
[root@localhost Desktop]# groupadd upan
##建立并指定upan用户组id为5555
[root@localhost Desktop]# groupadd -g 5555 jianpan
##删除upan用户组id
[root@localhost Desktop]# groupdel upan
##更改用户信息——usermod
名称 | 方法 |
---|---|
更改用户名 | usermod -l |
更改uid | usermod -u |
更改gid | usermod -g |
更改附加组 | usermod -G |
添加附加组 | usermod -aG |
清空附加组 | usermod -G “” |
指定用户说明文字 | usermod -c |
更改用户家目录指向 | usermod -d |
更改用户家目录 | usermod -md |
更改用户shell | usermod -s |
冻结用户 | usermod -L |
解锁用户 | usermod -U |
[root@localhost Desktop]# id shubiao
uid=1001(shubiao) gid=1001(zhima1) groups=1001(zhima1)
##将shabao用户名改为zhima1
[root@localhost Desktop]# usermod -l zhima1 shubiao
[root@localhost Desktop]# id zhima1
uid=1001(zhima1) gid=1001(zhima1) groups=1001(zhima1)
##将zhima1用户的uid改为8888
[root@localhost Desktop]# usermod -u 8888 zhima1
[root@localhost Desktop]# id zhima1
uid=8888(zhima1) gid=1001(zhima1) groups=1001(zhima1)
##将zhima1用户的组id改为21
[root@localhost Desktop]# usermod -g 21 zhima1
[root@localhost Desktop]# id zhima1
uid=8888(zhima1) gid=21(slocate) groups=21(slocate)
##将zhima1用户的附加组id改为72
[root@localhost Desktop]# usermod -G 72 zhima1
[root@localhost Desktop]# id zhima1
uid=8888(zhima1) gid=21(slocate) groups=21(slocate),72(tcpdump)
##zhima1用户的附加组id添加一个72
[root@localhost Desktop]# usermod -aG 5555 zhima1
[root@localhost Desktop]# id zhima1
uid=8888(zhima1) gid=21(slocate) groups=21(slocate),72(tcpdump),5555(jianpan)
##清空zhima1用户的附加组id
[root@localhost Desktop]# usermod -G "" zhima1
[root@localhost Desktop]# id zhima1
uid=8888(zhima1) gid=21(slocate) groups=21(slocate)
##为zhima1用户添加hahaha说明
[root@localhost Desktop]# usermod -c "hahaha" zhima1
[root@localhost Desktop]# tail -n 1 /etc/passwd
zhima1:x:8888:21:hahaha:/home/zhima1:/bin/bash
##更改zhima1用户家目录指向
[root@localhost Desktop]# usermod -d /home/cai zhima1
[root@localhost Desktop]# tail -n 1 /etc/passwd
zhima1:x:8888:21:hahaha:/home/cai:/bin/bash
[root@localhost Desktop]# ls -l /home
total 17
drwx------ 2 root root 12288 May 11 2017 lost+found
drwx------ 4 7777 7777 1024 Jul 11 05:02 shu
drwx------. 5 student student 1024 May 11 2017 student
drwx------ 4 1001 zhima1 1024 Jul 11 04:50 zhima
drwx------ 4 zhima1 slocate 1024 Jul 11 04:52 zhima1
##添加chaye用户
[root@localhost Desktop]# useradd chaye
##更改chaye用户的家目录
[root@localhost Desktop]# usermod -md /home/cha chaye
[root@localhost Desktop]# tail -n 1 /etc/passwd
chaye:x:1001:5556::/home/cha:/bin/bash
[root@localhost Desktop]# ls -l /home
total 18
drwx------ 4 chaye chaye 1024 Jul 11 05:47 cha
drwx------ 2 root root 12288 May 11 2017 lost+found
drwx------ 4 7777 7777 1024 Jul 11 05:02 shu
drwx------. 5 student student 1024 May 11 2017 student
drwx------ 4 chaye zhima1 1024 Jul 11 04:50 zhima
drwx------ 4 8888 slocate 1024 Jul 11 04:52 zhima1
##更改chaye用户shell
[root@localhost Desktop]# usermod -s /bin/sh chaye
[root@localhost Desktop]# tail -n 1 /etc/passwd
chaye:x:1001:5556::/home/cha:/bin/sh
上文并未练习usermod -u和usermod -l 在下文中作对比写出
##用户密码——passwd
名称 | 方法 |
---|---|
更改密码 | passwd |
查看用户密码信息 | passwd -S |
冻结用户 | passwd -l |
解锁用户 | passwd -u |
清空密码 | passwd -d |
##给chaye用户添加密码
[root@localhost Desktop]# passwd chaye
Changing password for user chaye.
New password:
BAD PASSWORD: The password is shorter than 8 characters
Retype new password:
passwd: all authentication tokens updated successfully.
##锁定用户chaye
[root@localhost Desktop]# passwd -l chaye
Locking password for user chaye.
passwd: Success
##查看用户chaye密码状态
[root@localhost Desktop]# passwd -S chaye
chaye LK 2019-07-10 0 99999 7 -1 (Password locked.)
##解冻用户chaye
[root@localhost Desktop]# passwd -u chaye
Unlocking password for user chaye.
passwd: Success
[root@localhost Desktop]# passwd -S chaye
chaye PS 2019-07-10 0 99999 7 -1 (Password set, SHA512 crypt.)
##锁定用户chaye
[root@localhost Desktop]# usermod -L chaye
[root@localhost Desktop]# passwd -S chaye
chaye LK 2019-07-10 0 99999 7 -1 (Password locked.)
##解冻用户chaye
[root@localhost Desktop]# usermod -U chaye
[root@localhost Desktop]# passwd -S chaye
chaye PS 2019-07-10 0 99999 7 -1 (Password set, SHA512 crypt.)
注意:
passwd锁定用户比usedmod锁定要深;
用usermod锁定时使用passwd可以解锁;
用passwd锁定时使用usermod解锁时必须解锁两次;
用passwd锁定时使用usermod不能解锁;
##关于passwd的其他用法
##用户在登陆前强制更改密码
passwd -e 用户名==chage -d 0 用户名
改变用户最后一次密码时间为0
##用户1天之内不能更改密码passwd -n 1 用户名==chage -m 1 用户名
用户密码最短有效期
##用户30天之内必须更改密码passwd -x 30 用户名==chage -M 30 用户名
用户密码最长有效期
##用户密码过期前n天有警告passwd -w 3 用户名==chage -W 3 用户名
用户密码警告期限
##用户过期后仍然可以登陆的天数passwd -i 1 用户名==chage -I 1 用户名
用户非活跃天数
##用户在2019年1月1日到期chage -E 2019-1-1用户名
用户到期日
##用户授权——权力的下放
权力下放文件为/etc/sudoers
此文件可以使用vim直接编辑,但vim不提供语法检测故我们使用visudo直接编辑visudo提供语法编辑
下放格式
visuso 100行左右(为了整齐规范化)
##tom用户可以在localhost主机以root用户身份执行useradd命令
用户 主机名称=(得到的用户身份) 命令
tom localhost=(root) /usr/sbin/useradd
##tom用户可以在localhost主机以 root用户身份免密执行useradd
用户 主机名称=(得到的用户身份) 命令
tom localhost=(root) NOPASSWD: /usr/sbin/useradd
测试
我们可以使用hostname命令来获取主机名称
-bash后面的路径为被拒绝的命令路径
visudo中配置haha和tian两个用户的权限
其中在haha’用户设置新建用户不需要加密码;tian用户设置新用户需要加密码。
在下面的代码中可以看到结果
## 添加用户tian
[root@localhost Desktop]# useradd tian
##给tian用户添加密码
[root@localhost Desktop]# passwd tian
Changing password for user tian.
New password:
BAD PASSWORD: The password is shorter than 8 characters
Retype new password:
passwd: all authentication tokens updated successfully.
## 添加用户haha
[root@localhost Desktop]# useradd haha
##给haha用户添加密码
[root@localhost Desktop]# passwd haha
Changing password for user haha.
New password:
BAD PASSWORD: The password is shorter than 8 characters
Retype new password:
passwd: all authentication tokens updated successfully.
##切换用户tian
[root@localhost Desktop]# su - tian
##查询tian的主机用户名
[tian@localhost ~]$ hostname
localhost
##建立cai用户失败,没有权限
[tian@localhost ~]$ useradd cai
-bash: /usr/sbin/useradd: Permission denied
##退出登陆
[tian@localhost ~]$ exit
logout
[root@localhost Desktop]# su - haha
[haha@localhost ~]$ hostname
localhost
[haha@localhost ~]$ useradd cai1
-bash: /usr/sbin/useradd: Permission denied
[haha@localhost ~]$ exit
logout
##切换到root用户下设置权限
[root@localhost Desktop]# visudo
[root@localhost Desktop]# su - tian
Last login: Thu Jul 11 10:32:26 EDT 2019 on pts/0
##添加失败,使用命令错误,少加sudo
[tian@localhost ~]$ useradd cai
-bash: /usr/sbin/useradd: Permission denied
[tian@localhost ~]$ sudo useradd cai
##tian用户设置权限时未设置不需要密码
[sudo] password for tian:
[tian@localhost ~]$ id cai
uid=1005(cai) gid=1005(cai) groups=1005(cai)
[tian@localhost ~]$ exit
logout
[root@localhost Desktop]# su - haha
Last login: Thu Jul 11 10:33:04 EDT 2019 on pts/0
[haha@localhost ~]$ useradd cai1
-bash: /usr/sbin/useradd: Permission denied
##直接建立成功,设置权限时设置了不需要密码
[haha@localhost ~]$ sudo useradd cai1
[haha@localhost ~]$ id cai1
uid=1006(cai1) gid=1006(cai1) groups=1006(cai1)
注意在设置权限后建立新用户时要加sudo