用户管理
创建用户的执行过程:
- 第一步: 创建用户 useradd ahui 会自动创建家目录/home/ahui
- 第二步: 系统会把 /etc/skel/下的所有隐藏的文件复制到/home/ahui目录
- 第三步: 复制到家目录后 会自动的修改属主属组为普通用户ahui
系统用户分类
系统通过UID的方式来识别不同的用户
UID: user id 身份证号码
三类系统用户:
系统用户 UID 权限作用 企业中拥有者
第一类用户: root 0 最高统治者 管理员 运维人员
第二类用户: 虚拟用户、傀儡用户 1-999 用来允许进程(不登陆系统) 运维人员可以根据需求创建
第三类用户: zhangsan、lisi 1000+ 登陆系统管理自身的文件 运维 开发 测试...
系统用户相关文件/etc/passwd
作用: 登陆操作系统验证passwd中的用户名密码信息
root:x :0:0:root:/root:/bin/bash
以冒号分隔:
第一列: root 用户名称 系统中的用户名称都会在第一列进行显示(如果用户前面加注释 则用户无法登陆)
第二列: x 用户密码 所有用户的密码都是x表示 如果没有x 使用root用户无法远程登陆系统 普通用户可以直接su - root 免秘切换到root用户
第三列: 0 用户的UID编号 系统默认的UID 可以自己修改(可以创建一个1-999之间的普通用户)
第四列: 0 用户的组ID 属于几组
第五列: root 用户的描述信息 可有可无(自己创建的普通用户没有描述信息)
第六列: /root 用户的家目录 默认登陆系统用户所在的路径 root默认的家目录/root 普通用户/home/用户名命名的目录
第七列: /bin/bash 命令解释器 解释用户输入的命令 管理和普通用户都是/bin/bash运行登陆可执行命令
虚拟用户显示/sbin/nologin 不允许登陆操作系统
案例:统计用户的类型
普通用户多少个
虚拟用户多少个
管理员多少个
普通用户:
grep
[root@ahui ~]#grep '/bin/bash' /etc/passwd
root::0:0:root:/root:/bin/bash
www:x:1000:1000::/home/www:/bin/bash
test:x:1001:1001::/home/test:/bin/bash
sed 模糊过滤 sed -n ‘//p’ 替换 sed ‘s###g’
[root@ahui ~]#sed -n '/\/bin\/bash/p' /etc/passwd
root::0:0:root:/root:/bin/bash
www:x:1000:1000::/home/www:/bin/bash
test:x:1001:1001::/home/test:/bin/bash
awk
[root@ahui ~]#awk '/\/bin\/bash/' /etc/passwd
root::0:0:root:/root:/bin/bash
www:x:1000:1000::/home/www:/bin/bash
test:x:1001:1001::/home/test:/bin/bash
通过 awk取最后一列 进行排序去重统计
[root@ahui ~]#awk -F: '{print $NF}' /etc/passwd|sort|uniq -c
3 /bin/bash
1 /bin/sync
1 /sbin/halt
23 /sbin/nologin
1 /sbin/shutdown
去重统计后进行第一列数字的逆序排序
[root@ahui ~]#awk -F: '{print $NF}' /etc/passwd|sort|uniq -c|sort -rn
23 /sbin/nologin
3 /bin/bash
1 /sbin/shutdown
1 /sbin/halt
1 /bin/sync
通过UID进行统计
[root@ahui ~]#awk -F: '$3==0' /etc/passwd #查看管理员
root::0:0:root:/root:/bin/bash
[root@ahui ~]#awk -F: '$3>0 && $3<1000' /etc/passwd #查看虚拟用户
[root@ahui ~]#awk -F: '$3>1000' /etc/passwd #查看普通用户
test:x:1001:1001::/home/test:/bin/bash
用户相关的目录/etc/skel
作用: 所有用户家的模板目录
[root@ahui ~]#ll -a /etc/skel
total 24
drwxr-xr-x. 2 root root 62 Apr 27 11:14 .
drwxr-xr-x. 80 root root 8192 May 18 16:16 ..
-rw-r--r--. 1 root root 18 Apr 1 2020 .bash_logout
-rw-r--r--. 1 root root 193 Apr 1 2020 .bash_profile
-rw-r--r--. 1 root root 231 Apr 1 2020 .bashrc
案例: 登陆操作系统后发现只显示bash的版本号信息 没有命令提示符(误删当前用户家目录下隐藏文件导致)
第一步: 在/etc/profile 中将PS1变量注释 (没有错误也要制造错误)
第二步: 使用普通用户test远程登陆
或者通过root用户 su - test 切换到test用户
第三步: 执行删除的动作 rm -rf /*
删除后查看
[test@ahui ~]$ ll -a
total 0
drwx------ 2 test test 6 May 18 10:43 .
drwxr-xr-x. 4 root root 29 May 17 12:23 ..
第四步: 退出当前用户重新登陆 (出现错误)
[test@ahui ~]$ exit
logout
[root@ahui ~]# su - test
Last login: Wed May 18 10:43:20 CST 2022 on pts/1
-bash-4.2$ # 显示bash的版本号
-bash-4.2$
-bash-4.2$
第五步: 解决方法 复制/etc/skel/下的隐藏文件到当前家目录
-bash-4.2$ cp /etc/skel/.* . # 将/etc/skel/隐藏文件拷贝到当前家目录
cp: omitting directory ‘/etc/skel/.’ # 忽略目录
cp: omitting directory ‘/etc/skel/..’ # 忽略目录
-bash-4.2$ ll -a
total 16
drwx------ 2 test test 96 May 18 10:46 .
drwxr-xr-x. 4 root root 29 May 17 12:23 ..
-rw-rw-r-- 1 test test 0 May 18 10:44 1.txt
-rw------- 1 test test 21 May 18 10:44 .bash_history
-rw-r--r-- 1 test test 18 May 18 10:46 .bash_logout
-rw-r--r-- 1 test test 193 May 18 10:46 .bash_profile
-rw-r--r-- 1 test test 231 May 18 10:46 .bashrc
第六步: 退出重新登陆 或者 使用source .bash_profile 解决
-bash-4.2$ source .bash_profile
[test@ahui ~]$
[test@ahui ~]$
useradd 创建用户
语法格式:
- useradd [参数选项] 用户名 # 一条命令只能创建一个用户
useradd ahui1 ahui2 # 错误的创建方式
useradd ahui1 # 正确
useradd ahui2 # 正确
参数选项:
- -u 指定UID UID在系统中是惟一的 身份证 一个号码对应一个用户
- -s 指定登陆的解释器 普通用户 /bin/bash表示可以登陆系统 虚拟用户/sbin/nologin 不允许登陆系统
- -M 不创建家目录 创建用户默认是自动创建家目录
- -g 指定属组 了解 张三属于 test组
- -G 指定附属组 了解 张三还属于 root 组 ahui组
案例: 创建虚拟用户ahui 指定UID为666(确保666没有被其他用户使用) 禁止用户登陆系统 不创建家目录
判断文件中是否有666
[root@ahui ~]#grep '666' /etc/passwd
[root@ahui ~]#
[root@ahui ~]#
[root@ahui ~]#useradd -u666 -s /sbin/nologin -M ahui
查看用户: id
[root@ahui ~]#id ahui
uid=666(ahui) gid=1002(ahui) groups=1002(ahui)
测试是否能登陆:
[root@ahui ~]#su - ahui
su: warning: cannot change directory to /home/ahui: No such file or directory
This account is currently not available.
查看是否有家目录: 密码文件中显示 实际不存在
[root@ahui ~]#grep ahui /etc/passwd
ahui:x:666:1002::/home/ahui:/sbin/nologin
[root@ahui ~]#
[root@ahui ~]#ll /home/
total 0
drwx------ 3 test test 52 May 18 10:54 test
drwx------ 3 www www 74 Dec 1 21:22 www
案例: 创建一个普通用户ahui1 uid 888 允许登陆 并且创建家目录
[root@ahui ~]#useradd -u 888 -s /bin/bash ahui1
[root@ahui ~]#id ahui1
uid=888(ahui1) gid=1003(ahui1) groups=1003(ahui1)
[root@ahui ~]#grep ahui1 /etc/passwd
ahui1:x:888:1003::/home/ahui1:/bin/bash
[root@ahui ~]#
[root@ahui ~]#ll /home/
total 0
drwx------ 2 ahui1 ahui1 62 May 18 11:11 ahui1
userdel 删除用户
语法结构:
userdel -r 用户名称
-r 删除用户所有相关的信息 包括家目录 邮箱等信息 类似株连九族
[root@ahui ~]#userdel -r ahui2
usermod 修改用户 对已存在的用户进行修改 # 了解
语法格式:
usermod [参数选项] 用户名称
参数:
-u 修改uid
-g 修改gid
-s 修改登录方式 /sbin/nologin /bin/bash
案例:修改uid
[root@ahui ~]#grep ahui /etc/passwd
ahui:x:666:1002::/home/ahui:/sbin/nologin
#ahui1:x:888:1003::/home/ahui1:/bin/bash
[root@ahui ~]#usermod -u 777 ahui
[root@ahui ~]#grep ahui /etc/passwd
ahui:x:777:1002::/home/ahui:/sbin/nologin
案例:修改登录方式:
[root@ahui ~]#grep ahui /etc/passwd
ahui:x:777:1002::/home/ahui:/sbin/nologin
#ahui1:x:888:1003::/home/ahui1:/bin/bash
[root@ahui ~]#
[root@ahui ~]#usermod -s /bin/bash ahui
[root@ahui ~]#grep ahui /etc/passwd
ahui:x:777:1002::/home/ahui:/bin/bash
passwd 修改密码
语法格式:
交互式
- passwd 直接回车 # 修改的是当前登陆系统用户的密码
passwd 用户名 # 修改用户的密码
非交互式修改密码
- echo 1|passwd --stdin 用户名 #
案例:修改密码
[root@ahui ~]#passwd
Changing password for user root.
New password: # 系统提示 然后用户输入 交互
BAD PASSWORD: The password is a palindrome
Retype new password:
passwd: all authentication tokens updated successfully.
[root@ahui ~]#echo 1|passwd --stdin ahui # 系统不提示 直接成功 非交互式
Changing password for user ahui.
passwd: all authentication tokens updated successfully.
企业服务器:
密码复杂度要求:
字母数字特殊符号组合12位以上
I-am,Lizhenya%Iam&18*!~<>
root 1
aEí’I?+¨[?~k?Wò2Qaùü
案例:批量用户操作
1.批量创建10个用户 stu1 stu2… stu10
2.并且给每个用户设置123456密码
3.将123456更换成随机密码
将屏幕上输出的内容交给bash bash会把它当做命令来执行
创建多个用户: 每一行只能创建一个用户
要以下列的方式显示到屏幕上然后交给bash去执行即可:
useradd stu1
useradd stu2
useradd stu3
useradd stu4
…
useradd stu10
[root@ahui ~]#echo -e "useradd stu"{1..10}"\n"|bash #批量创建10个用户 stu1 stu2.. stu10
[root@ahui ~]#echo -e "id stu"{1..10}"\n"|bash
uid=1002(stu1) gid=1002(stu1) groups=1002(stu1)
uid=1003(stu2) gid=1003(stu2) groups=1003(stu2)
uid=1004(stu3) gid=1004(stu3) groups=1004(stu3)
uid=1005(stu4) gid=1005(stu4) groups=1005(stu4)
uid=1006(stu5) gid=1006(stu5) groups=1006(stu5)
uid=1007(stu6) gid=1007(stu6) groups=1007(stu6)
uid=1008(stu7) gid=1008(stu7) groups=1008(stu7)
uid=1009(stu8) gid=1009(stu8) groups=1009(stu8)
uid=1010(stu9) gid=1010(stu9) groups=1010(stu9)
uid=1011(stu10) gid=1011(stu10) groups=1011(stu10)
[root@ahui ~]#echo -e "echo 123456|passwd --stdin stu"{1..10}"\n"|bash#并且给每个用户设置123456密码
Changing password for user stu1.
passwd: all authentication tokens updated successfully.
Changing password for user stu2.
passwd: all authentication tokens updated successfully.
Changing password for user stu3.
passwd: all authentication tokens updated successfully.
Changing password for user stu4.
passwd: all authentication tokens updated successfully.
Changing password for user stu5.
passwd: all authentication tokens updated successfully.
Changing password for user stu6.
passwd: all authentication tokens updated successfully.
Changing password for user stu7.
passwd: all authentication tokens updated successfully.
Changing password for user stu8.
passwd: all authentication tokens updated successfully.
Changing password for user stu9.
passwd: all authentication tokens updated successfully.
Changing password for user stu10.
passwd: all authentication tokens updated successfully.
[root@ahui ~]#echo -e "echo $RANDOM|passwd --stdin stu"{1..10}"\n"|bash #$RANDOM取随机数
Changing password for user stu1.
passwd: all authentication tokens updated successfully.
Changing password for user stu2.
passwd: all authentication tokens updated successfully.
Changing password for user stu3.
passwd: all authentication tokens updated successfully.
Changing password for user stu4.
passwd: all authentication tokens updated successfully.
Changing password for user stu5.
passwd: all authentication tokens updated successfully.
Changing password for user stu6.
passwd: all authentication tokens updated successfully.
Changing password for user stu7.
passwd: all authentication tokens updated successfully.
Changing password for user stu8.
passwd: all authentication tokens updated successfully.
Changing password for user stu9.
passwd: all authentication tokens updated successfully.
Changing password for user stu10.
passwd: all authentication tokens updated successfully.
[root@ahui ~]#echo stu{1..10}@"`mkpasswd -l 8`"|sed "s# #\n#g"|awk -F"@" '{print "echo ""\""$2"\"""|passwd --stdin "$1}'|bash
Changing password for user stu1.
passwd: all authentication tokens updated successfully.
Changing password for user stu2.
passwd: all authentication tokens updated successfully.
Changing password for user stu3.
passwd: all authentication tokens updated successfully.
Changing password for user stu4.
passwd: all authentication tokens updated successfully.
Changing password for user stu5.
passwd: all authentication tokens updated successfully.
Changing password for user stu6.
passwd: all authentication tokens updated successfully.
Changing password for user stu7.
passwd: all authentication tokens updated successfully.
Changing password for user stu8.
passwd: all authentication tokens updated successfully.
Changing password for user stu9.
passwd: all authentication tokens updated successfully.
Changing password for user stu10.
passwd: all authentication tokens updated successfully.
如何让系统更安全:
(1).最小化安装操作系统 按照服务软件越少 漏洞越少
(2).保护好root 禁止使用root登陆 创建普通用户 通过普通用户su - root进行管理
(3).修改SSH远程登陆的默认端口 22 修改大于1万 不能超过1-65535
[root@ahui ~]#vim /etc/ssh/sshd_config
[root@ahui ~]#grep 2222 /etc/ssh/sshd_config
Port 2222
重启让配置文件生效
[root@ahui ~]#systemctl restart sshd
然后在xshell界面修改22端口为2222 测试连接
完成后修改回22端口
(4).监控/var/log/secure 记录登陆和退出的历史记录
(5).给重要的文件加特殊权限
i 无敌的 不能删除 不能修改
a 只能追加 不能删除
(6). 给重要的文件做一个指纹校验(如果指纹发生变化 说明文件内容发生了变化) MD5校验
在修改文件前 给当前的文件生成一个校验值
当前文件被修改 校验值也会发生变化
文件没有被修改 校验值不变
[root@ahui ~]#md5sum 1.txt
e4439267203fb5277d347e6cd6e440b5 1.txt
[root@ahui ~]#md5sum 1.txt
e4439267203fb5277d347e6cd6e440b5 1.txt
[root@ahui ~]#md5sum 1.txt > md5.txt
[root@ahui ~]#ll
total 8
-rw-r--r-- 1 root root 5 May 18 12:09 1.txt
-rw-r--r-- 1 root root 40 May 18 12:10 md5.txt
[root@ahui ~]#cat md5.txt
e4439267203fb5277d347e6cd6e440b5 1.txt
[root@ahui ~]#md5sum 1.txt
e4439267203fb5277d347e6cd6e440b5 1.txt
[root@ahui ~]#
[root@ahui ~]#echo hs.com >> 1.txt
[root@ahui ~]#md5sum 1.txt
45ded8e0a4b0b503d96e95688a55118b 1.txt
[root@ahui ~]#cat md5.txt
e4439267203fb5277d347e6cd6e440b5 1.txt
系统开机启动流程
linux系统从开机到登陆界面的启动过程(简答)
- 开机BIOS自检
- MBR引导
- grub引导菜单
- 加载内核kernel
- 启动init进程
- 读取inittab文件,执行rc.sysinit,rc等脚本
- 启动mingetty,进入系统登陆界面
开机启动流程:
- 按电源(服务器有远程控制卡 可以通过远程控制卡进行远程启动服务器 启动 关机 重装系统)
- 开机BIOS自检 检查硬件是否存在问题
经常出问题的硬件:- 内存 不会坏 启动不兼容的情况(重新插拔内容)
拔一根测试一下是否能正常启动
全拔下来 一根一根插是否能正常启动 - 磁盘出现问题
在系统中查看磁盘: df -h
a. 咨询领导 咨询同事服务器或者磁盘是否在保质期
如果在质保期
联系厂家 还是我们自己购买的磁盘
如果是厂家 是领导联系呢 还是把联系方式给我们 我们自己去联系呢
如果不在质保期
自己购买或者继续和磁盘供应商对接
如果自己购买钱怎么算 自己垫付报销 还是直接申请设备款
b. 拿到联系方式联系对方 告诉坏了几块磁盘 什么时间 去机房更换磁盘
去之前和机房联系 - 主板出现问题 找工程上去维修 咨询领导
- bios电池
- 内存 不会坏 启动不兼容的情况(重新插拔内容)
- MBR引导 通过磁盘 光驱 U盘进行启动
- GRUP菜单 可以选择内核版本
在GRUP菜单位置可以进入单用户模式 忘记root密码的时候 进入单用户修改密码 - 加载内核kernel /boot引导
- 运行系统的第一个进程 init初始化进程
- 加载/etc/inittab文件 默认以哪个级别运行的配置文件
- 读取/etc/rc.sysinit初始化 设置主机名称 开机自动挂载 设置IP地址
- 运行加载/etc/rc3.d运行级别下所有的服务
服务都是串行启动 - 加载mingetty登陆界面 输入用户名和密码
centos6.x和centos7.x的启动区别:
1)运行第一个进程不同
centos6.x init
centos7.x systemd
2)运行服务
centos6.x 串行启动 核酸(一个坑) 所有人一起去
centos7.x 并行启动 核酸(多个坑) 所有人一起
小结:
- 创建用户的过程
- 用户分类:
- 管理员
- 虚拟用户
- 普通用户
- passwd文件每列的含义:
用户名称:用户密码:UID:GID:用户的描述信息:用户的家目录:命令解释器 - 用户相关的目录
- /etc/skel 家目录模板
- /root 管理员家目录
- /home/xxxx 普通用户家目录
- /var/mail/xxxx 用户邮箱目录
- 用户相关的命令
- useradd
-u 指定UID
-s 指定登陆的解释器
-M 不创建家目录 - usermode
-u 指定UID
-s 指定登陆的解释器
-g 指定属组
-G指定附属组 - userdel 删除用户
-r 删除用户所有相关的信息 包括家目录 邮箱等信息 - id 查看用户
- passwd 修改密码
echo 1|passwd --stdin ahui
- useradd
- 如何让系统更安全
- 系统开机启动流程