Linux系统 用户和用户组的管理

1.1 用户和组介绍

        1.用户
                Linux里用户名是给人看的,为了方便人使用。比如root 用户,真正标识用户的是 UID ,也就是 Linux 只识 别uid。
                身份标识:每个用户都有一个唯一标识,就是 UID(User,identify)
        2.用户组
                人本身是个体,背后是有组织的,被家庭, 学校 , 班级 , 公司。
和人一样, Linux 用户也要属于某个组或多个组。属于最重要的组,叫 主组 ,很多不重要的组织叫做 附加
                同样,组名是为了方便使用者,组标识GID,也是唯一标识,用于计算机识别组。
Linux 里实际上有 用户和用户组 两个对象,用户是个体,组是一个组织,用户被组包含。
系统规则:创建 Linux 用户必须要属于一个组织,用户不能独立存在,但是用户可以同时属于多个组
织。

1.2 用户深入(user

        1.Linux有哪些用户?
        Linux里有 3 类用户:
                a)超级管理员,也就是我们常用的 root 用户。
                b)普通用户,比如 oldboy ,由管理员创建的,权限限于家目录之内 /home/oldboy,/tmp
                c)虚拟用户,本身傀儡,瞒足 进程 启动的需求(必须要有用户)。
        2.Linux用户详细说明
        a)超级用户
        Linux系统管理员,掌握着系统的最高权限,和古代的皇帝一样。
有自己的皇宫,他的皇宫就是家目录 /root ,管理员拥有一切系统的管理权限。
管理员的用户名是 root ,它的 UID 固定为 0
# 换句话:凡是 UID 0 的用户都是管理员 root 。这可以作为渗透提权的一个手段。
b)普通用户
        类似老百姓 ,过着平常的日子, root 管理员授权对应管理权限。
由管理员用户 root 创建而来的,日常登录应该首先登录普通用户,然后再必要的时候切换 root 管理。
        普通用户UID 范围 C7 1000-60000
        特点:权限很低:
        写权限范围,限于家目录 /home/ 用户名和 /tmp
        读权限范围,除了/root ,大部分目录都可以进入,可以读取文件,不能增加修改删除文件。
        登录的shell /bin/bash
普通用户如何管理系统?
        a.oldboy切换 root ,使用 su - root ( 输入 root 密码 ) # 此方法是角色改变,由普通用户 oldboy 变成了 root。
        类似农民起义,把root 皇帝推翻了, oldboy 当皇帝。
        b.oldboy不切换到 root ,但是可以允许 oldboy 使用 root 的权限去做事,管理员 root 按需要按命令给 对应用户的权限,工作时候,普通用户使用sudo 命令 ,执行。 *
        特点:只赋予普通用户一部分命令的权限,普通用户没有办法获得root 权限。
c)虚拟用户
1、虚拟用户存在意义
        1.Linux里面的 文件、进程 必须要有对应用户和组。
文件创建时要有对应用户和组。进程启动时也要有对应用户和组。
        2.为了安全起见,既需要这样的角色,但又不需要他的功能以及登录要求。
        3.虚拟用户存在的目的就是满足文件存在以及进程启动时对用户和组的要求。
用普通用户行不行?行 , 但是权限太大了 . root 行不行,也行,权限更大,危险太大。
## 执行程序启动进程一般都用虚拟用户,不要用普通用户和 root

1、练习:把oldboy用户UID改为0,oldboy就是root

##查看oldboy用户uid
id oldboy
##如果没有oldboy则添加
useradd oldboy
##修改/etc/passwd里面的oldboy用户对应的uid
[root@oldboy data]# vim /etc/passwd
oldboy:x:0:8893::/home/oldboy:/bin/bash #把以冒号分隔第3列改为0,然后保存。
##切换到oldboy用户下,发现还是root.
su - oldboy
[root@oldboyedu ~]# su - oldboy
上一次登录:日 9月 24 08:32:46 CST 2023从 10.0.0.1pts/0 上

2.如何确保root登录安全:企业级应用。

        a.配置 ssh 服务,禁用 root 通过 SSH 远程登录,原因 root 权限非常大,并且所有人都知道。
        b.工作中使用普通用户 oldboy 远程登录,然后有需要时候,再 sudo 或者 su 切换到 root 做事。
        c.规范:平时使用普通用户 oldboy 登录以及操作,有必要的时候,执行 root 授权的部分权限 (sudo 命令 )
        d.禁止 SSH 远程链接,通过防火墙封掉 22 连接端口,
网卡监听到【内网 IP 】的 22 端口。通过 VPN 拨号到网内其他机器上。
        e.通过 VPN( 加密隧道 )--- 拨号到跳板机(堡垒)(记录、监控操作) --- 远程连接接 Linux 服务器
--- 普通用户登录 -- 然后切换到 root
2 、虚拟用户特点:
        1.装系统之后就默认存在,但是不能登录。
        2.UID范围往往 1-499
        3.登录 shell /sbin/nologin ,也就是不能登录。
        chrony:x:998:996::/var/lib/chrony:/sbin/nologin

3、企业生产系统安全最小化原则

        1.安装软件最小化
        2.登录安全最小化(用普通用户登录)
        3.进程启动权限最小化(用植物人虚拟用户启动)
        4.文件目录权限最小化
        5.卸载软件最小化(尽量不卸载)
        6.删除文件最小化(尽量不删除)

1.3 用户组介绍(group

        1.用户组概念

         用户的用户组类似于【人】的家庭、学校等组织,
         1个用户可以在多个组里。 1 个组也可以有多个用户。
         用户组唯一标识:GID # 全拼 Group Identify

        2.用户组怎么产生的?

a)创建用户时默认产生
        创建oldboy 普通用户,默认情况就会生成 oldboy 组,默认用户和组同名,且 UID GID 相同。
        b)由 root 用户直接创建 tech
        #添加用户 oldgirl
        [root@oldboyedu ~] # useradd oldgirl
        #查看用户 uid,gid
        [root@oldboyedu ~] # id oldgirl
        uid = 1001 (oldgirl) gid = 1001 (oldgirl) = 1001 (oldgirl)
        #查看用户对应的配置
        [root@oldboyedu ~] # tail -1 /etc/passwd ## 用户的文件
        oldgirl:x:1001:1001::/home/oldgirl:/bin/bash
        #        存放用户组的文件
        root@oldboyedu ~] # tail -1 /etc/group ## 用户组的文件
        oldgirl:x:1001:
        #创建 oldgirl 用户的时候 , 同时创建 oldgirl 用户组 ID

1.4 用户和用户组配置文件

1.直接相关的有4个文件

文件名及作用 作用细节
        1 、/etc/passwd 用户属性主文件* 用户各种属性(UID,GID, 家目录,登录 SHELL
        2 、/etc/shadow 用户密码属性主文件 存放密码及密码的属性(失效时间,修改密码
时间等)
        3 、/etc/group 用户组属性主文件 存放用户组及属性。
        4 、/etc/gshadow 用户组密码属性文件 (废弃) 用户组密码及属性

1.5 用户命令

        1.命令列表

                添加用户 useradd
                修改用户 usermod
                删除用户 userdel
                查看用户 id
                #1.由root 用户直接创建用户组 tech
                [root@oldboy ~] # groupadd tech
                #2.查看存放用户组的文件
                [root@oldboyedu ~] # tail -1 /etc/group
                tech:x:1002:
                #3.添加一个littleboy 用户属于 tech .
                [root@oldboyedu ~] # useradd littleboy -g tech
                #4.查看littleboy 用户信息
                [root@oldboyedu ~] # id littleboy
                uid = 1002 (littleboy) gid = 1002 (tech) = 1002 (tech)
                [root@oldboy ~] # tail -1 /etc/passwd
                littleboy: x: 1002 :1002: :/home/littleboy :/bin/bash
                用户 密码位 UID GID 说明 家目录 登录解释器 2. 添加用户 useradd
                例1:添加 test 用户
                例2:添加 test1 用户设置 UID 9999 -u 选项 指定 uid
                例3:添加一个虚拟用户 test2(-s 选项 指定解释器 )
                例4:添加一个用户 test3 ,属于 root 用户组 (-g 选项指定属于的主组 )
                例5:添加一个用户 test4 ,不能登录,且不创建家目录

        useradd选项

                -u 指定UID 创建用户
                -g 指定属于的新组
                -s 指定登录解释器
                -M 不创建家目录
                [root@oldboyedu ~] # useradd test
                [root@oldboyedu ~] # id test
                uid = 1003 (test) gid = 1003 (test) = 1003 (test)
                [root@oldboyedu ~] # useradd -u 9999 test1
                [root@oldboyedu ~] # id test1
                uid = 9999 (test1) gid = 9999 (test1) = 9999 (test1)
                [root@oldboyedu ~] # useradd test2 -s /sbin/nologin
                ##检查解释器是否修改为/sbin/nologin
                [root@oldboyedu ~] # tail -1 /etc/passwd
                test2:x:10000:10000::/home/test2:/sbin/nologin
                ##尝试登录test2 ,看看是否可行
                [root@oldboyedu ~] # su - test2
                This account is currently not available.
                [root@oldboyedu ~] # useradd -g root test3
                [root@oldboyedu ~] # id test3
                uid = 10001 (test3) gid = 0 (root) = 0 (root)
                [root@oldboyedu ~] # useradd -s /sbin/nologin -M test4
                [root@oldboyedu ~] # id test4
                uid = 10002 (test4) gid = 10002 (test4) = 10002 (test4)
                [root@oldboyedu ~] # tail -1 /etc/passwd
                test4:x:10002:10002::/home/test4:/sbin/nologin
                [root@oldboyedu ~] # ls -l /home 3. 修改用户 usermod
        a.选项
                -u 指定UID
                -g 指定属于的组
                -s 指定解释器
        b.练习
                例1:修改 test1 用户的 UID 8888 -u 选项 指定 uid
                例2:修改用户 test3 ,属于 oldboy 用户组 (-g 选项指定属于的主组 )
                例3:修改用户 test4 ,使其可以登录
                [root@oldboyedu ~] # id test1
                uid = 9999 (test1) gid = 9999 (test1) = 9999 (test1)
                [root@oldboyedu ~] # usermod -u 8888 test1
                [root@oldboyedu ~] # id test1
                uid = 8888 (test1) gid = 9999 (test1) = 9999 (test1) ##uid 已改为 8888
                #说明也可以用vim /etc/passwd 命令修改。
                ##1.查看用户
                [root@oldboyedu ~] # id test3
                uid = 10001 (test3) gid = 0 (root) = 0 (root)
                ##2.查看用户组oldboy
                [root@oldboyedu ~] # grep oldboy /etc/group
                oldboy:x:1000:
                ##3.修改用户test3 ,属于 oldboy 用户组
                [root@oldboyedu ~] # usermod -g oldboy test3
                ##4.检查结果
                [root@oldboyedu ~] # id test3
                uid = 10001 (test3) gid = 1000 (oldboy) = 1000 (oldboy)
                ##1.查看test4 用户
                [root@oldboyedu ~] # id test4
                uid = 10002 (test4) gid = 10002 (test4) = 10002 (test4)
                ##2.尝试切换test4, 结果无法切换
                [root@oldboyedu ~] # su - test4
                su : 警告:无法更改到 /home/test4 目录 : 没有那个文件或目录
                This account is currently not available.
                ##3.修改test4 的登录解释器为 /bin/bash
                [root@oldboyedu ~] # usermod -s /bin/bash test4
                ##4.切换测试
                [root@oldboyedu ~] # su - test4
                上一次登录:日 9 24 11 :24:48 CST 2023pts/0
                su : 警告:无法更改到 /home/test4 目录 : 没有那个文件或目录 ##5. 执行 whoami 查看当前用户
                -bash-4 .2 $ whoami
                test4
                例4:创建 test4 的家目录,使其可以登录 (不会没关系)
                -bash-4.2$ 提示符出现问题如何解决,下面234 解决答案。
                ##1.在指定位置/home 下创建 test4 家目录
                [root@oldboyedu ~] # mkdir /home/test4
                ##2.拷贝用户环境变量文件到/home/test4
                [root@oldboyedu ~] # ls /home/test -a ## 正常的用户文件多了 3 个隐藏的环境变量文件
                . .. .bash_logout .bash_profile .bashrc
                [root@oldboyedu ~] # ls /home/test4 -a ## 新建的文件里面是空的
                . ..
                ##将环境变量文件拷贝到/home/test4 下面
                [root@oldboyedu ~] # cp /etc/skel/.bash* /home/test4/
                [root@oldboyedu ~] # ls -a /home/test4/
                . .. .bash_logout .bash_profile .bashrc
                ##3.调整权限为700 ,让用户 test4 的家更安全
                chmod -R 700 /home/test4
                ##4.调用户和组为test4
                ##授权test4 用户和组管理 /home/test4
                [root@oldboyedu ~] # chown -R test4.test4 /home/test4
                ##检查结果
                [root@oldboyedu ~] # ls -l /home/test4 -d
                drwx------ 2 test4 test4 62 9 24 11 :30 /home/test4
                ##检查隐藏的环境变量文件
                [root@oldboyedu ~] # ls -l /home/test1 -a
                总用量 16
                drwx------ 2 test1 test1 83 9 24 10 :43 .
                drwxr-xr-x. 10 root root 116 9 24 11 :28 ..
                -rw------- 1 test1 test1 17 9 24 10 :43 .bash_history
                -rw-r--r-- 1 test1 test1 18 4 1 2020 .bash_logout
                -rw-r--r-- 1 test1 test1 193 4 1 2020 .bash_profile
                -rw-r--r-- 1 test1 test1 231 4 1 2020 .bashrc
                ##5.切换到test4 检查家目录是否可用
                ##查看test4 对应的家目录 /home/test4
                [root@oldboyedu ~] # grep -w test4 /etc/passwd
                test4:x:10002:10002::/home/test4:/bin/bash
                ##切换到test4 检查家目录是否可用
                [root@oldboyedu ~] # su - test4
                上一次登录:日 9 24 11 :25:14 CST 2023pts/0
                [test4@oldboyedu ~] $ ## 成功修复
                修改用户5:无法修改用户的情况
                [root@oldboyedu ~] # su - oldboy01 4.

删除用户userdel

                例1:删除 test 用户
                例2:连带家目录删除用户 test1 -r 连带家目录删除)
                [oldboy01@oldboyedu ~] $ su - oldboy02
                密码:
                [oldboy02@oldboyedu ~] $ su - oldboy03
                密码:
                [oldboy03@oldboyedu ~] $ su - root
                密码:
                上一次登录:一 12 11 08 :42:25 CST 2023 10 .0.0.1pts/0
                [root@oldboyedu ~] # usermod -u 999 oldboy01
                usermod:UID “999” 已经存在 ## 提示 999 已存在,身份证号不能重复。
                [root@oldboyedu ~] # usermod -u 9992 oldboy01
                usermod: user oldboy01 is currently used by process 2855 ## 正在登录状态,不能删。
                [root@oldboyedu ~] # 登出 ctrl+d
                [oldboy03@oldboyedu ~] $ 登出 ctrl + d
                [oldboy02@oldboyedu ~] $ 登出 ctrl + d
                [oldboy01@oldboyedu ~] $ 登出 ctrl + d
                [root@oldboyedu ~] # usermod -u 9992 oldboy01
                [root@oldboyedu ~] # id oldboy01
                uid = 9992 (oldboy01) gid = 10003 (oldboy01) = 10003 (oldboy01)
                ##1.确认是否有删除的用户
                [root@oldboyedu ~] # id test
                uid = 1003 (test) gid = 1003 (test) = 1003 (test)
                ##2.删除
                [root@oldboyedu ~] # userdel test
                ##3.检查删除情况
                [root@oldboyedu ~] # id test
                id: test: no such user
                ##看下家目录是否被删
                [root@oldboyedu ~] # ls /home/
                test
                ##查看当前目录是否有test1 目录
                [root@oldboyedu ~] # ls /home/
                littleboy oldboy oldgirl test test1 test2 test3 test4
                ##查看是否有test1 用户
                [root@oldboyedu ~] # id test1
                uid = 8888 (test1) gid = 9999 (test1) = 9999 (test1)
                ##使用-r 连带家目录删除
                [root@oldboyedu ~] # userdel -r test1
                ##检查删除结果
                [root@oldboyedu ~] # ls /home/
                生产场景:
                1.不用userdel -r ,容易误删文件,很多公司的程序员,把他的文件放在了家目录下。
                2.使用vim /etc/passwd ,采用注释的方式临时暂停用户的使用,过了一个阶段没用了在慢慢删除。
                3.把用户改为虚拟用户,临时暂停用户的使用,过了一个阶段在慢慢删除。

1.6查看用户信息

​​​​​​​a.命令列表
id
whoami
w
last
lastlog
cat /etc/passwd
b.命令实践
test test2 test3 test4
[root@oldboyedu ~] # id test1
id: test1: no such user
[root@oldboyedu ~] # id oldboy
uid = 1000 (oldboy) gid = 1000 (oldboy) = 1000 (oldboy)
## 查看当前用户
[root@oldboyedu ~] # whoami
root
##w 显示哪些用户登录,以及他们正在干什么
[root@oldboyedu ~] # w
12 :12:46 up 3 :40, 2 users, load average: 0 .00, 0 .01, 0 .05
USER TTY FROM LOGIN@ IDLE JCPU PCPU WHAT
root tty1 09 :15 2 :56m 0 .06s 0 .06s -bash
oldboy pts/0 10 .0.0.1 11 :34 6 .00s 0 .16s 0 .05s sshd: oldboy
[priv]
##last 显示登录的用户信息列表
[root@oldboyedu ~] # last
oldboy pts/0 10 .0.0.1 Sun Sep 24 11 :34 still logged in
oldboy pts/0 10 .0.0.1 Sun Sep 24 09 :54 - 11 :34 (01:39)
oldboy pts/0 10 .0.0.1 Sun Sep 24 09 :17 - 09 :54 (00:37)
root tty1 Sun Sep 24 09 :15 still logged in
root pts/0 10 .0.0.1 Sun Sep 24 09 :14 - 09 :15 (00:00)
root pts/0 10 .0.0.1 Sun Sep 24 08 :32 - 09 :14 (00:42)
## 查看用户登录情况
[root@oldboyedu ~] # lastlog
用户名 端口 来自 最后登陆时间
root pts/0 9 24 11 :34:58 + 0800 2023
bin pts/0 9 24 10 :04:44 + 0800 2023
daemon ** 从未登录过 **
adm ** 从未登录过 **
lp ** 从未登录过 **
增加用户组 groupadd
删除用户组 groupdel

1.6 用户密码管理

1.修改密码passwd
a. 修改管理员 root 密码
sync ** 从未登录过 **
dbus ** 从未登录过 **
oldboy pts/0 10 .0.0.1 9 24 11 :34:52 + 0800 2023
ntp ** 从未登录过 **
oldgirl pts/0 9 24 12 :09:31 + 0800 2023
littleboy ** 从未登录过 **
test2 pts/0 9 24 10 :44:14 + 0800 2023
test3 ** 从未登录过 **
test4 pts/0 9 24 11 :34:24 + 0800 2023
# 黑客毁尸灭迹:
last -u oldboy -C
[root@oldboyedu ~] # lastlog -u oldboy -C
[root@oldboyedu ~] # lastlog
用户名 端口 来自 最后登陆时间
root pts/0 9 24 11 :34:58 + 0800 2023
bin pts/0 9 24 10 :04:44 + 0800 2023
daemon ** 从未登录过 **
adm ** 从未登录过 **
nobody ** 从未登录过 **
systemd-network ** 从未登录过 **
dbus ** 从未登录过 **
polkitd ** 从未登录过 **
tss ** 从未登录过 **
abrt ** 从未登录过 **
sshd ** 从未登录过 **
postfix ** 从未登录过 **
chrony ** 从未登录过 **
oldboy ** 从未登录过 ** ## 看起来没来过
[root@oldboyedu ~] # groupadd sa ## 空的 sa
[root@oldboyedu ~] # tail -1 /etc/group
sa:x:10003:
[root@oldboyedu ~] # groupdel sa
[root@oldboyedu ~] # grep ^sa /etc/group b. 改其他用户密码
需要管理员 root 身份
c. 普通用户修改自己的密码
d. 非交互式修改密码( --stdin
2.批量修改密码chpasswd(了解)
从标准输入接收内容或文件修改密码。
接收修改密码的内容语法:
用户名 1 :密码
用户名 2 :密码
实践 1:
[root@oldboyedu ~] # passwd
更改用户 root 的密码 。
新的 密码: ## 输入新密码
无效的密码: 密码是一个回文 ## 如果密码简单,会提示。
重新输入新的 密码: ## 重复输入新密码
passwd :所有的身份验证令牌已经成功更新。
[root@oldboyedu ~] # passwd oldboy
更改用户 oldboy 的密码 。
新的 密码: ## 输入新密码
无效的密码: 密码是一个回文 ## 如果密码简单,会提示。
重新输入新的 密码: ## 重复输入新密码
passwd :所有的身份验证令牌已经成功更新。
[root@oldboyedu ~] # su - oldboy
[oldboy@oldboyedu ~] $ passwd
更改用户 oldboy 的密码 。
oldboy 更改 STRESS 密码。
(当前) UNIX 密码:
新的 密码:
无效的密码: 密码少于 8 个字符 ## 不合要求无法建立密码
新的 密码:
无效的密码: 密码少于 8 个字符
新的 密码:
重新输入新的 密码:
passwd :所有的身份验证令牌已经成功更新。
[oldboy@oldboyedu ~] $ exit
## oldboy 用户的密码设置为 1
[root@oldboyedu ~] # echo 1|passwd --stdin oldboy
更改用户 oldboy 的密码 。
passwd :所有的身份验证令牌已经成功更新。
##0. 添加 5 个用户
[root@oldboyedu ~] # useradd oldboy01
[root@oldboyedu ~] # useradd oldboy02

7.Centos7忘记root密码重置

[root@oldboyedu ~] # useradd oldboy03
[root@oldboyedu ~] # useradd oldboy04
[root@oldboyedu ~] # useradd oldboy05
[root@oldboyedu ~] # tail -5 /etc/passwd
oldboy01:x:10003:10003::/home/oldboy01:/bin/bash
oldboy02:x:10004:10004::/home/oldboy02:/bin/bash
oldboy03:x:10005:10005::/home/oldboy03:/bin/bash
oldboy04:x:10006:10006::/home/oldboy04:/bin/bash
oldboy05:x:10007:10007::/home/oldboy05:/bin/bash
##1. 编辑好内容,用户要存在
[root@oldboyedu ~] # cat a.txt
oldboy01:1
oldboy02:2
oldboy03:3
oldboy04:4
oldboy05:5
##2. 批量设置
[root@oldboyedu ~] # chpasswd <a.txt ## 方法 2 cat a.txt|chpasswd
[root@oldboyedu ~] # cat a.txt |chpasswd
##3. 测试
[root@oldboyedu ~] # su - oldboy01
[oldboy01@oldboyedu ~] $ su - oldboy02
密码:
[oldboy02@oldboyedu ~] $ ## 如果进入到这里表示密码设置成功。
##1. 重启 Linux
##2. 在启动 grub 菜单时,即在 VM 中点击启动后出现第一个界面是 grub 菜单界面,快速按键盘 e 键,来进入编辑
界面
##3. 找到 Linux16 的那一行,将里面的 ro 改为 rw ,同时增加 init=/sysroot/bin/sh
##4. 然后按 ctrl+x 快捷键 ,使用单用户模式启动进入命令行
##5. 进入系统输入 chroot /sysroot
##6. 执行 passwd root 修改 root 密码,这个时候可能提示会乱,直接修改即可。
##7. 执行下面命令更新系统信息
touch /.autorelabel
##8. 执行 exit 退出,然后,再执行 reboot 重启。
##9. 最后在登录芥麦面,用新密码登录。
  • 20
    点赞
  • 16
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值