一. liunx操作系统的开机引导的过程
1. 开机自检
根据bios的设置,对cpu,内存,显卡,键盘等等设备进行初步检测如果以上检测设备工作正常,系统会把控制权移交到硬盘
总结:检测出包含系统启动操作系统的设备,硬盘,U盘,光驱
2. MBR引导/gpt引导
分区之后,需要创建文件系统,然后挂载,设备才能够正常使用。
MBR和gpt是由分区表组成 -----> 映射到挂载
硬盘掌握系统控制权之后,根据分区表来找操作系统的引导文件,mbr的硬盘第一个扇区的主引导记录。
GPT:默认的guid是1
总结:根据硬盘的分区表,找到操作系统的文件。识别系统中的操作系统
控制权------->grub引导程序
3. grub菜单
当计算机当中有一个以上的操作系统,就会有这个grub菜单,多个操作系统,用户可以自行选择需要的系统。
控制权 -----> linux的内核
加载了操作的文件,加载系统的内核。
4. 加载linux的内核
内核是一个编译的二进制可执行文件,介于硬件和操作系统之间,负责资源分配和调度。
总结: 内核和镜像文件系统加载到内存,也就是把系统初始化需要的程序和资源放入内存当中。
5. systemd进程初始化
串行:按照顺序,一个一个的执行。
并行:一起执行。
systemd进程初始化:系统加加载到内核的程序和资源并行处理。大大提高了系统的开机时间。
二. 服务控制以及系统的运行级别
1. 服务控制
systemd是一个管理linux系统服务和进程的管理器
使用单元UNIT,来描述和控制系统服务和资源
service 单元:管理和启动系统服务以及第三方服务的单元.service
socket 单元:端口,监听网络的通信套接字
常见端口:
nginx:80
tomcat: 8080
mysql: 3306
ssh: 22
端口号在主机上唯一的,一旦被使用,其他程序就无法再使用。
系统日志:ubuntu: /var/log/syslog
centos: /var/log/messages
服务通信的必要条件也是服务识别的一个标志。
target单元:是一组服务的集合,用来描述系统或者服务的运行级别。
path单元:用来监控文件或者目录的状态
mount单元:管理文件系统的挂载
Device单位:管理硬件设备的单元
... ...
Swap 单元(.swap):用于管理交换空间的使用,可以指定交换分区、优先级等。
Device 单元(.device):用于管理硬件设备,可以指定设备文件、驱动程序、设备属性等。
Scope 单元(.scope):用于管理进程组,可以指定进程组的启动命令、资源限制等。
Slice 单元(.slice):用于管理进程组的资源配额,可以限制进程组的 CPU、内存等资源使用。
Automount 单元(.automount):用于按需挂载文件系统,可以在需要使用时自动挂载指定的文件系统。
Snapshot 单元(.snapshot):用于创建和管理 Systemd 系统的快照,可以备份和还原整个系统状态。
2. 单元控制的命令
systemctl + 控制的状态
start 启动 例:systemctl start nginx
stop 停止 例:systemctl stop nginx
restart 重启 例:systemctl restart nginx
reload:当修改了单元文件,需要reload重新加载单元文件
例:
systemctl daemon-reload 加载所有
systemctl reload nginx 加载个别
status:查看服务的状态
root@du:~# kill -9 1885 #kill关闭
root@du:~# systemctl status nginx
× nginx.service - nginx - high performance web serverLoaded: loaded (/lib/systemd/system/nginx.service; disabled; vendor preset: enabled)Active: failed (Result: signal) since Wed 2024-11-06 11:30:41 CST; 3s agoDocs: http://nginx.org/en/docs/Process: 1884 ExecStart=/usr/local/nginx/sbin/nginx -c /usr/local/nginx/conf/nginx.conf (code=exited,>Main PID: 1885 (code=killed, signal=KILL)CPU: 23ms11月 06 11:27:56 du systemd[1]: Starting nginx - high performance web server...
11月 06 11:27:56 du systemd[1]: Started nginx - high performance web server.
11月 06 11:30:41 du systemd[1]: nginx.service: Main process exited, code=killed, status=9/KILL
11月 06 11:30:41 du systemd[1]: nginx.service: Failed with result 'signal'.[4]+ 已停止 systemctl status nginx.serviceroot@du:~# systemctl start nginx #启动
root@du:~# systemctl status nginx
● nginx.service - nginx - high performance web serverLoaded: loaded (/lib/systemd/system/nginx.service; disabled; vendor preset: enabled)Active: active (running) since Wed 2024-11-06 11:30:53 CST; 3s agoDocs: http://nginx.org/en/docs/Process: 1901 ExecStart=/usr/local/nginx/sbin/nginx -c /usr/local/nginx/conf/nginx.conf (code=exited,>Main PID: 1902 (nginx)Tasks: 2 (limit: 4545)Memory: 1.1MCPU: 12msCGroup: /system.slice/nginx.service├─1902 "nginx: master process /usr/local/nginx/sbin/nginx -c /usr/local/nginx/conf/nginx.con>└─1903 "nginx: worker process" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" ">11月 06 11:30:53 du systemd[1]: Starting nginx - high performance web server...
11月 06 11:30:53 du systemd[1]: nginx.service: Can't open PID file /usr/local/nginx/run/nginx.pid (yet?) >
11月 06 11:30:53 du systemd[1]: Started nginx - high performance web server.[5]+ 已停止 systemctl status nginx.serviceroot@du:~# systemctl stop nginx #停止
root@du:~# systemctl status nginx
○ nginx.service - nginx - high performance web serverLoaded: loaded (/lib/systemd/system/nginx.service; disabled; vendor preset: enabled)Active: inactive (dead)Docs: http://nginx.org/en/docs/11月 06 11:27:56 du systemd[1]: Starting nginx - high performance web server...
11月 06 11:27:56 du systemd[1]: Started nginx - high performance web server.
11月 06 11:30:41 du systemd[1]: nginx.service: Main process exited, code=killed, status=9/KILL
11月 06 11:30:41 du systemd[1]: nginx.service: Failed with result 'signal'.
11月 06 11:30:53 du systemd[1]: Starting nginx - high performance web server...
11月 06 11:30:53 du systemd[1]: nginx.service: Can't open PID file /usr/local/nginx/run/nginx.pid (yet?) >
11月 06 11:30:53 du systemd[1]: Started nginx - high performance web server.
11月 06 11:43:03 du systemd[1]: Stopping nginx - high performance web server...
11月 06 11:43:03 du systemd[1]: nginx.service: Deactivated successfully.
11月 06 11:43:03 du systemd[1]: Stopped nginx - high performance web server.[7]+ 已停止 systemctl status nginx
3. 系统和进程的运行级别
runlevel #查看系统运行级别的命令
N5
N:表示当前系统没有切换过运行级别
5:表示当前的运行级别
运行级别 | systemd的单元类型 | 说明 |
---|---|---|
0 | target | 关机 |
1 | resdue.target | 单用户模式,不需要验证密码就可以登录系统。系统维护 |
2 | multi-user.target | 字符串界面的多用户模式 |
3 | multi-user.target | 字符串界面的多用户模式 |
4 | multi-user.target | 字符串界面的多用户模式 |
5 | graphical.target | 图形化界面的多用户模式 |
6 | reboot.target | 重启 |
命令: init
init 0 poweroff 关机
init 6 reboot 重启
切换运行权限没意义:
工作中的操作系统是没有图形化界面的,系统的默认级别都是3
三. 系统的基本加固和sudo权限
1、账号的安全措施
修改不需要的登录的用户的shell
usermod -s /sbin/nologin 用户名 #禁止用户登录
锁定长期不使用的账户
usermod -L 用户名 usermod -U 解锁
passwd -l 用户名 passwd -u 解锁
删除长期不使用的账户
userdel -r用户 #删除用户一并删除其家目录
2、锁定重要的文件
chattr +i #锁定文件,不能再对文件进行编辑,只读模式(包括root)
chatrr -i #解锁
只能针对文件
Isattr 文件名
查看文件的状态
3、用户密码的有效期控制
1、适用于新建用户
vim /etc/login.defs
165行 修改密码的最长有效天数
2、适用于已有用户
chage -M 30 dn #修改已有用户的密码最长有效期 30天
4、限制命令历史的记录
history #查看命令历史记录
history -c #清空历史记录
vim /etc/profile
HISTSIZE=50 #华为一般设置为50~80
source /etc/prbfile
5、登录超时时间
远程连接的超时时间
vim /etc/profile
TMOUT=10 #单位为秒,推荐120秒
source /etc/prbfile
10秒钟之内,如果远程连接方没有任何操作,自动断开远程连接
四. sudo
赋予普通用户可以使用管理员命令的权限
/sbin 都是管理员可以用的命令文件
/bin 所有用户都可以使用的命令
保存都是系统可执行的命令文件