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_uunconfined_tc0.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 hhhh1802:
“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 sie2004:ysq robot2005:ysq mysql27: qf011014: qf11015: hh2006:qf2,qf3 hhh2007:qf3,qf4 qf21016: qf31017: qf41018:
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 hhhh1802: [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命令提权。
全部0条评论
快来发表一下你的评论吧 !