Linux系统下保障数据安全的最佳用户管理与权限配置方案

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命令提权。

声明: 本站所有文章,如无特殊说明或标注,均为本站原创发布。任何个人或组织,在未征得本站同意时,禁止复制、盗用、采集、发布本站内容到任何网站、书籍等各类媒体平台。如若本站内容侵犯了原著者的合法权益,可联系我们进行处理。

给TA打赏
共{{data.count}}人
人已打赏
Linux

Linux系统管理之时区和时间修改

2024-11-22 14:17:22

Linux

高效存储管理:利用Linux fio进行硬盘读写性能评估

2024-11-22 21:43:24

0 条回复 A文章作者 M管理员
    暂无讨论,说说你的看法吧
个人中心
购物车
优惠劵
今日签到
有新私信 私信列表
搜索