Linux学习——用户管理
1用户/组概览
Linux系统是多用户、多任务的分时操作系统,系统上每一个进程都有一个特定的文件,每个文件都被一个特定的用户所拥有。如果需要使用系统资源,首先必须向系统超级用户申请成为普通用户,然后以普通用户的身份进入系统。超级用户可以对普通用户进行跟踪,并设置他们的访问权限,这样可以保证系统的安全。
每个用户都属于一个用户组或者多个组,系统可以对—个用户组中的所有用户进行集中管理。组与组的控制权限是不同的,系统根据不同的需求,把用户分别放在不同的组中,
3.1.1 用户标识 :UID与GID
每个用户都有唯一的系统可识别的UID,它类似与居民身份证编号。
” id “ ——查看当前用户登录信息,UID为用户的ID,GID为用户所属组的ID,groups为用户所属于的所有组的ID
[root@localhost ~]# id
uid=0(root) gid=0(root) 组=0(root) 环境=unconfined_u:unconfined_r:unconfined_t:s0-s0:c0.c1023
” ll “——查看文件的所有者
[root@localhost ~]# ll /home
总用量 12
drwxrwxrwx. 2 root root 31 10月 18 15:21 dir01
drwxr-sr-x. 2 root hr 19 10月 18 15:11 hr
drwx------. 3 linux linux 78 11月 1 15:19 linux
drwx------. 3 linux01 linux01 78 11月 1 15:22 linux01
drwx------. 3 linux02 linux02 78 11月 1 15:22 linux02
drwx------. 3 linux03S linux03S 78 11月 1 15:22 linux03S
drwx------. 17 none none 4096 11月 15 15:19 none
drwx------. 5 qf01 qf01 123 10月 18 14:50 qf01
drwx------. 3 qf02 qf02 78 10月 11 14:15 qf02
drwx------. 15 siso siso 4096 11月 8 14:50 siso
drwx------. 3 tom tom 78 10月 18 14:05 tom
drwx------. 3 1003 user06 78 9月 27 14:34 user03
drwx------. 15 user05 user05 4096 9月 27 15:19 user05
drwx------. 6 user06 user06 120 9月 27 15:21 user06
drwx------. 3 ysq ysq 78 11月 14 22:22 ysq
” ps aux |less “ 查看进程
USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND
root 1 0.0 0.1 193908 7060 ? Ss 12:00 0:26 /usr/lib/systemd/systemd --switched-root --system --deserialize 22
root 2 0.0 0.0 0 0 ? S 12:00 0:00 [kthreadd]
root 4 0.0 0.0 0 0 ? S< 12:00 0:00 [kworker/0:0H]
root 6 0.0 0.0 0 0 ? S 12:00 0:00 [ksoftirqd/0]
root 7 0.0 0.0 0 0 ? S 12:00 0:00 [migration/0]
root 8 0.0 0.0 0 0 ? S 12:00 0:00 [rcu_bh]
root 9 0.0 0.0 0 0 ? S 12:00 0:20 [rcu_sched]
root 10 0.0 0.0 0 0 ? S< 12:00 0:00 [lru-add-drain]
root 11 0.0 0.0 0 0 ? S 12:00 0:00 [watchdog/0]
root 12 0.0 0.0 0 0 ? S 12:00 0:00 [watchdog/1]
root 13 0.0 0.0 0 0 ? S 12:00 0:00 [migration/1]
root 14 0.0 0.0 0 0 ? S 12:00 0:00 [ksoftirqd/1]
root 16 0.0 0.0 0 0 ? S< 12:00 0:00 [kworker/1:0H]
root 17 0.0 0.0 0 0 ? S 12:00 0:00 [watchdog/2]
root 18 0.0 0.0 0 0 ? S 12:00 0:00 [migration/2]
root 19 0.0 0.0 0 0 ? S 12:00 0:00 [ksoftirqd/2]
root 21 0.0 0.0 0 0 ? S< 12:00 0:00 [kworker/2:0H]
root 22 0.0 0.0 0 0 ? S 12:00 0:02 [watchdog/3]
root 23 0.0 0.0 0 0 ? S 12:00 0:00 [migration/3]
root 24 0.0 0.0 0 0 ? S 12:00 0:00 [ksoftirqd/3]
安装Apache服务器,重启服务后,使用”ps aux “命令可以查看运行的http进程的用户名
[root@localhost ~]# yum -y install httpd //安装软件包
[root@localhost ~]# systemctl start httpd //重启服务
[root@localhost ~]# ps aux | grep httpd
root 43382 0.0 0.0 112824 988 pts/1 S+ 21:56 0:00 grep --color=auto httpd
3.1.2 用户/组相关文件
在Linux系统中,所有用户的用户名和密码都存放在/etc/passw和/etc/shadow这两个文件中。
在/etc/passwd文件中,一行记录对应一个用户,每行记录又被冒号(:)分隔为7个字段, 依次为用户名称、密码占位符、用户UID、主组GID、注释性描述、用户主目录、用户的Shell,具体如下所示。
[root@localhost ~]# 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
在/etc/shadow 文件中,每行记录也由冒号分隔为9个字段, 依次为用户名称、加密后的密码、最近改动密码时间、密码不可变更时间(99999 为没有限制)、密码重新变更时间、密码过期时间、密码过期宽恕时间、用户失效时间、保留,具体如下所示。
[root@localhost ~]# cat /etc/shadow
root:$6$B5PGgwIX$1O51A5REbQ7GGaD71YI/vNEUNQIRebdO3cRWSLwt7Ezt91JEKiYo3uu8ATKETRYfV99YzIa/jjvzCZZ./K51x1:19655: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:::
第 2个字段又分为三部分: $6 表示加密算法的$id, $id 包括$1(MD5)、$5(SHA-256)、$6(SHA-512), $id号越大加密程度越高; $iXOPTKmyXMvd/uDJ表示 salt值(这个值是由系统随机生成的,若两个用户使用同一个密码,由于系统为它们生成的 salt值不同,哈希值也是不同的); 最后一个$后的内容是系统产生的哈希值。$id+salt值+哈希值就是最终的加密密码。
例如,创建密码一样的两个用户,查看哈希值,具体如下所示。
qf1:$6$8FtewMfM$RPD0aIuDGmpE. rAMt7GKCWP8jNs2TtG3nmxbRFqdwm/r3T91R7A4jfTimRj/qbEH
PbXQ6ncIcZtryXV2E5MPK.:
qf2:$6$FRsRAaAa$WJuDA0I8w7aM5t. L8484mVRd/defTv44xi. PNjxv1G7XpKJQGCvH8R492ZDs6Bdo
PIMjoMTpn18f15c5Ipwtt0:
注意,从CentOS 6开始, UID为0是特权用户, UID为1~499是系统用户, UID为500 以上是普通用户。
3.1.3 用户管理类型
1.超级管理员用户
超级管理员主要识别是否是root和#这两个必备的条件来确定当前状态下是否为管理员用户
超级管理员用户的权限的特点是可以使用所有系统及程序命令在Linux操作系统中,UID是指用户ID(User ID),是Linux系统中用来标识用户的数字ID。每个用户在Linux系统中都有一个唯一的UID,这个UID是系统内部用来识别不同用户的数字编号,系统管理员可以用这个UID来对不同用户进行管理和授权。
在Linux中,UID为0的用户是超级管理员(也就是root用户),其余用户通常是从1000开始分配的非特权用户。当一个用户创建了一个文件或目录时,该文件或目录的所有者UID就会设置为该用户的UID。UID也用于系统安全性方面的考虑,因为只有UID为0的超级管理员才能进行关键系统操作,其他用户只能按照分配给他们的权限执行相应的操作。因此,使用UID和权限机制可以保证系统的安全性和稳定性。
2.普通用户
普通用户主要是以#标识来参考当前状态下是否为普通用户,与超级管理员不同的是普通用户只可以使用有限的系统命令和具有使用权限的程序命令。
在Linux系统中,UID从0到999是保留给系统内部特定用户(例如,root用户)和特殊组的,因此,普通用户的UID通常从1000开始。在大多数Linux发行版中,普通用户的UID编号范围通常是1000到65535。
3.程序用户
程序用户是比较特殊的一种用户、程序用户可以运行指令但不允许登录系统和创建家目录
UID编号范围也与普通用户和超级管理员用户大不相同,程序用户的UID编号范围通常是1到999。
3.2 管理用户/组
管理用户与用户组主要是创建、更改、删除等操作
3.2.1 创建用户/组
“useradd”——创建用户
[root@localhost ~]# useradd qf1
[root@localhost ~]# grep "qf1" /etc/passwd /etc/passwd /etc/group
/etc/passwd:qf1:x:1015:1015::/home/qf1:/bin/bash
/etc/passwd:qf1:x:1015:1015::/home/qf1:/bin/bash
/etc/group:qf1:x:1015:
[root@localhost ~]# ls /home/
dir01 linux linux02 none qf02 siso user03 user06
hr linux01 linux03S qf01 qf1 tom user05 ysq
[root@localhost ~]# ls /var/spool/mail/
linux linux02 none qf02 root siso user03 user06
linux01 linux03S qf01 qf1 rpc tom user05 ysq
useradd命令中的参数
参数说明-d指定用户的主目录-u指定用户特定的UID(整数)-g指定用户主组的名称或UID-G指定用户的附加组列表-s指定用户的登录shell
“ groupadd ”——创建用户组
“useradd -G”——创建用户,并指定已存在的附加组
[root@localhost ~]# groupadd hh
[root@localhost ~]# groupadd hhh
[root@localhost ~]# useradd qf2 -G hh
[root@localhost ~]# useradd qf3 -G hh,hhh
[root@localhost ~]# id qf2
uid=1016(qf2) gid=1016(qf2) 组=1016(qf2),2006(hh)
[root@localhost ~]# id qf3
uid=1017(qf3) gid=1017(qf3) 组=1017(qf3),2006(hh),2007(hhh)
“groupadd -g/gid”——指定组的GID
[root@localhost ~]# groupadd hhhh -g 2000
groupadd:GID “2000”已经存在
[root@localhost ~]# groupadd hhhh -g 1802
[root@localhost ~]# grep "hhhh" /etc/group
hhhh:x:1802:
“usermod/gpasswd” ——修改一些错误的设置数据
[root@localhost ~]# useradd qf4 -G hh
[root@localhost ~]# id qf4
uid=1018(qf4) gid=1018(qf4) 组=1018(qf4),2006(hh)
[root@localhost ~]# gpasswd -d qf4 hh
正在将用户“qf4”从“hh”组中删除
[root@localhost ~]# id qf4
uid=1018(qf4) gid=1018(qf4) 组=1018(qf4)
[root@localhost ~]# gpasswd -a qf4 hhh
正在将用户“qf4”加入到“hhh”组中
[root@localhost ~]# id qf4
uid=1018(qf4) gid=1018(qf4) 组=1018(qf4),2007(hhh)
用户组的信息存在/etc/group文件中
[root@localhost ~]# tail /etc/group
sie:x:2004:ysq
robot:x:2005:ysq
mysql:x:27:
qf01:x:1014:
qf1:x:1015:
hh:x:2006:qf2,qf3
hhh:x:2007:qf3,qf4
qf2:x:1016:
qf3:x:1017:
qf4:x:1018:
3.2.2 删除用户/组
“userdel” ——删除用户
“userdel -r”——同时在/home目录与mail spool中删除用户
“userdel rm -rf ”——用户不存在,手动删除
root@localhost ~]# id qf4
uid=1018(qf4) gid=1018(qf4) 组=1018(qf4),2007(hhh)
[root@localhost ~]# userdel qf4
[root@localhost ~]# id qf4
id: qf4: no such user
[root@localhost ~]# ls /home
dir01 linux linux02 none qf02 qf2 qf4 tom user05 ysq
hr linux01 linux03S qf01 qf1 qf3 siso user03 user06
[root@localhost ~]# ls /var/spool/mail
linux linux02 none qf02 qf2 qf4 rpc tom user05 ysq
linux01 linux03S qf01 qf1 qf3 root siso user03 user06
[root@localhost ~]# userdel -r qf3
[root@localhost ~]# ls /home
dir01 linux linux02 none qf02 qf2 siso user03 user06
hr linux01 linux03S qf01 qf1 qf4 tom user05 ysq
[root@localhost ~]# ls /var/spool/mail
linux linux02 none qf02 qf2 root siso user03 user06
linux01 linux03S qf01 qf1 qf4 rpc tom user05 ysq
“groupdel”——删除用户组,如果某个初始用户正在使用该用户组,则无法删除,此时需要修改该用户的GID或者直接删除该用户
[root@localhost ~]# grep "hhhh" /etc/group
hhhh:x:1802:
[root@localhost ~]# groupdel hhhh
[root@localhost ~]# grep "hhhh" /etc/group
3.2.3 修改用户密码
任何用户都可以通过 passwd 命令修改自己的密码。只有root 用户可以修改其他用户的密码。普通用户修改密码需要提供原密码,对新密码要求也比较苛刻,root 用户修政普通用户的密码则不需要提供原密码。当新密码个足 8位时,系统给予警告。
[root@localhost ~]# passwd qf1
3.2.4 安全用户
“ userdd -s ”——指定用户的登录Shell为sbin/nologin,可以将其设置为安全用户
[root@localhost ~]# useradd qf8 -s /sbin/nologin
[root@localhost ~]# tail -2 /etc/passwd
qf2:x:1016:1016::/home/qf2:/bin/bash
qf8:x:1017:1017::/home/qf8:/sbin/nologin
查看可登录当前系统的用户
[root@localhost ~]# grep "bash$" /etc/passwd
root:x:0:0:root:/root:/bin/bash
none:x:1000:1000:None:/home/none:/bin/bash
user05:x:1004:1006::/home/user05:/bin/bash
qf02:x:1006:2002::/home/qf02:/bin/bash
tom:x:1007:1007::/home/tom:/bin/bash
linux:x:1008:1008::/home/linux:/bin/bash
linux01:x:1009:1009::/home/linux01:/bin/bash
linux02:x:1010:1010::/home/linux02:/bin/bash
linux03S:x:1011:1011::/home/linux03S:/bin/bash
siso:x:1012:1012::/home/siso:/bin/bash
ysq:x:1013:1013::/home/ysq:/bin/bash
qf01:x:1014:1014::/home/qf01:/bin/bash
qf1:x:1015:1015::/home/qf1:/bin/bash
qf2:x:1016:1016::/home/qf2:/bin/bash
“which reboot ”——查看reboot命令的绝对路径
[root@localhost ~]# which reboot
/usr/sbin/reboot
[root@localhost ~]# cat /etc/passwd
root:x:0:0:root:/root:/bin/bash
[root@localhost ~]# setenforce 0 //临时关闭Selinux
[root@localhost ~]# getenforce //查看Selinux状态
Permissive
3.2.5 配置文件
/etc/login.defs与/etc/default/useradd是命令useradd的配置文件,决定useradd创建用户默认的数,文件中的配置对root用户无效。
第15行为邮件目录
#QMAIL_DIR Maildir
MAIL_DIR /var/spool/mail
#MAIL_FILE .mail
# Password aging controls:
第25~28行为密码相关配置
PASS_MAX_DAYS 99999
PASS_MIN_DAYS 0
PASS_MIN_LEN 5
PASS_WARN_AGE 7
第71行为密码加密算法配置
# Use SHA512 to encrypt password.
ENCRYPT_METHOD SHA512
/etc/default/useradd文件:
# useradd defaults file
GROUP=100
HOME=/home
INACTIVE=-1
EXPIRE=
SHELL=/bin/bash
SKEL=/etc/skel
CREATE_MAIL_SPOOL=yes
3.2.6 su/sudo 命令
” su “——切换用户
[none@localhost ~]$ whoami
none
[none@localhost ~]$ su -
密码:
上一次登录:五 11月 24 23:29:31 CST 2023pts/2 上
[root@localhost ~]# su none
[none@localhost root]$
“ sudo ”——只有加入wheel组才可以使用此命令,用户在使用sudo时,必须先输入密码,之后有五分钟的有效时间,超过时限必须重新输入密码。
[root@localhost ~]# useradd qf9 -G wheel
[root@localhost ~]# id qf9
uid=1018(qf9) gid=1018(qf9) 组=1018(qf9),10(wheel)
[root@localhost ~]# su none
[none@localhost root]$ useradd qf10
useradd: Permission denied.
useradd:无法锁定 /etc/passwd,请稍后再试。
[none@localhost root]$ sudo useradd qf10
[sudo] none 的密码:
[none@localhost root]$ sudo id qf10
uid=1019(qf10) gid=1019(qf10) 组=1019(qf10)
3.3 本章小结
本章首先介绍了用户与用户组标识符的意义,用户的shell作用以及如何对用户/用户组进行增、删、改、查等操作;其次,讲解了如何设置/etc/passwd与/etc/shadow这两个重要文件以及useadd的文件配置;最后演示了用户如何使用su命令进行身份切换,普通用户如何使用sudo命令提权。