系统的启动流程
-
centos6
- 加电自检:检查服务器硬件是否正常
- MBR引导:读取磁盘的MBR存储记录信息,引导系统启动
- grub菜单:选择启动的内核/进行单用户模式重置密码
- 加载系统内核信息:可以更好的使用内核控制硬件
- 系统的第一个进程运行起来:init
- 控制后续各种服务的启动:启动顺序(串行)
- 加载系统运行级别文件/etc/inittab
- 初始化脚本运行:初始化系统主机名称和网卡信息
- 运行系统特殊的脚本:开机自启的服务
- 运行mingetty进程:显示开机登陆信息界面
-
centos7
-
加电自检:检查服务器硬件是否正常
-
MBR引导:读取磁盘的MBR存储记录信息,引导系统启动
-
grub菜单:选择启动的内核/进行单用户模式重置密码
-
加载系统内核信息:可以更好的使用内核控制硬件
-
系统的第一个进程运行起来:systemd
- 服务启动的时候同时一起启动(并行)
-
读取系统启动文件:
/etc/systemd/system/default.target
-
读取系统初始化文件
/usr/lib/systemd/system/sysinit.target
-
使服务可以开机自启动,加载此目录中的信息,实现服务开机自启
/etc/systemd/system
-
运行mingetty进程:显示开机登录信息界面
-
用户概念介绍
- 管理员用户 root 0 权利至高无上
- 虚拟用户 nobody 1-999 管理进程 没家目录 不能登录系统
- 普通用户 oldboy 1000+ 权力有限
文件权限
- r:read,可以读文件的内容 4
- w:write,可以编辑文件的内容 2
- e:execute,执行这个文件(脚本文件)1
修改文件的属主
chown 新属主用户名 文件
修改文件权限
chmod 000 文件/目录
#其他用户添加x权限
chmod o+x 文件/目录
文件权限配置结论:默认权限为644,保证属主用户对文件可以编辑,保证其他用户可以读取文件信息
- root用户对所有文件有绝对的权限,只要有了执行权限,root用户可以无敌存在
- 对于文件来说,写的权限和执行的权限,都需要有读权限配置
- 如果想对文件进行操作,必须对文件赋予读的权限
目录权限
- r:读目录中的文件属性信息
- w:可以在目录中添加或删除文件数据信息
- e:是否可以进入到目录中
目录权限配置结论:默认权限755,保证属主用户对目录进行编辑,保证其他用户可以读取目录中的信息,可以进入到目录中
- root用户对目录有绝对的权限,什么权限都没有设置root也有权限
- 如果没有设权限属主(root外)和其他用户都没有权限
- 当目录只赋予读的权限,属主(root外)和其他用户查看目录里面文件的时候会看不到文件属性
- 只有写的权限的时候什么权限都没有
- 只有执行权限的时候只可以切换目录,其他啥也没有
- 对于目录来说,写的权限和读的权限都需要有执行权限配合
- 想对目录进行操作必须赋予执行的权限
为什么看不到文件的属性信息
- 它的上一级目录没有执行的权限
- 无法进入目录,目录中的文件inode信息无法获取,会显示文件属性信息为???
一个文件能不能读不仅跟文件本身权限有关系,跟上面的目录权限也有关系。文件读的原理
文件读的原理
-
先从根开始。看inode和block
-
然后一级一级开始着
-
文件的名称信息存在上一级目录的block中,获取block要获取inode
-
有读就可以看indoe,有执行可以进入目录看目录里面文件的文件属性
文件目录数据设置权限的方法:
-
根据用户信息进行设定(属主、属组、其他用户)
-
属主-user u
-
属组-group g
-
其他用户-other o
chmod u+r/w/x 1.txt chmod g-r/w/x 1.txt chmod u=rw 1.txt
-
-
根据用户批量设置
-
数值设定
chmod 755 1.txt
-
字符设定
#全部角色为x的权限 chmod a=x 1.txt
-
为什么创建的文件和目录权限一致?
目录:755
文件:644
umask
0022
临时修改umask数值
umask 033
默认文件权限:666-022=644
- umask数值是奇数
- 666-033=633+11=644
- umask数值是偶数
- 666-022=644
默认目录权限:777-022=755
- umask数值是奇数
- 777-033=744
- umask数值是偶数
- 777-022=755
如何永久修改umask值
vim /etc/profile
里面的umask 022 修改成别的
source /etc/profile
系统中的特殊目录/etc/skel(样板房)
ll -a /etc/skel
- .bash_logout:当系统退出登陆状态要执行的命令
- .bash_profile:别名和环境变量(只针对某个用户)
- .bashrc:别名和环境变量(针对所有用户)
这个目录里面有什么,新创建的用户家目录里就有什么
作用:
-
目录中可以存储运维操作规范说明文件
-
调整命令提示符信息,如果没有那些默认文件命令提示符展示会有问题,但不影响操作。如果被别人删了要从skel目录中把东西在复制一份过来
用户家目录中的特殊文件
-
.bash_history:历史命令文件
- 曾经输入的历史命令保存位置
- 保存在内存中 history
- 保存在磁盘文件中:.bash_history
- 曾经输入的历史命令保存位置
-
.viminfo:vim样式设置
-
自动加载文件样式信息
#!/bin/bash #编写人: #编写时间: #脚本作用:
-
系统中和用户相关的文件
-
/etc/passwd:记录系统用户信息文件
root :x :0 :0 :root :/root :/bin/bash bin :x :1 :1 :bin :/bin :/sbin/nologin 01 02 03 04 05 06 07 1:用户名 2:用户密码信息(保存在别的地方) 3:用户的uid 4:用户的gid 5:用户的注释信息 mysql(manager database user) www(manager web server) 6:用户家目录 7:用户登陆系统方式 cat /etc/shells /bin/bash ---通用的解释器 /bin/sh /usr/bin/sh ---等价于bin/sh /usr/bin/bash /sbin/nologin ---无法登陆系统 /usr/sbin/nologin
-
/etc/shadow*:系统用户密码文件,如果加密的密码改成两个
!
,就取消了密码,可以重新设置 -
/etc/group*:组用户记录文件
-
/etc/gshadow*:组用户密码信息
系统用户相关命令
-
创建用户命令
-
创建普通用户
useradd old && passwd --stdin old 123456
-
创建虚拟用户
useradd old -M -s /sbin/nologin -M:不创建家目录 -s:指定使用的shell方式 -u:指定用户uid数值信息 -g:指定用户主属组gid,可以是数值也可以是名称 -G:指定用户附属组信息 -c:注释 useradd mysql -s /sbin/nologin -M -c "manager database" grep mysql /etc/passwd
-
-
修改用户信息
usermod -s 修改用户的登录方式 -g 修改用户的主要的组信息 -G 修改用户的附属组信息 -u 修改用户uid -c 修改用户注释信息 usermod Alex -s /sbin/nologin
-
删除用户信息
userdel Alex 如果组有其他人存在,组不会删除、但是用户删除了、但是用户家目录还在 组还在。后面创建一个相同名字的用户,在创建的时候就要加-g 如果家目录没删除,会报警信息,不会再将skel目录内容重新复制 userdel -r Alex 彻底删除用户以及用户的家目录,但是组如果有其他人使用就仍存在
-
创建用户组
groupadd 组名 groupmod 修改用户组 groupdel 删除用户组
用户属主属组设置
chown 属主.属组 文件
递归设置属主属组,目录里的文件也都改了
chown -R 属主.属组 目录
用户信息查看
-
id:显示用户命令信息
-
w:正在登录系统的用户信息
[root@pert ~]# w USER:什么用户登录到了系统中 TTY:登陆的方式 pts/x 远程登录系统 x可以是1 2 3。。。 tty1 本地登录 #通知其他用户屏幕上显示你要提醒的信息 echo "请不要修改hosts文件配置" > /dev/pts/1 FROM:从哪连接的服务器 LOGIN@:登陆时间 IDLE:空闲时间 PCPU、JCPU:用户操作系统消耗的cpu资源时间 WHAT:用户在干什么/bash或/sh或。。。
-
last
显示历史登录用户的信息
-
lastlog
显示/etc/passwd里面的用户登录过的信息(失败、成功)
用户权限说明
普通用户如何像root用户一些操作管理系统
-
直接切换到root用户下管理系统。篡权夺位
-
su:环境变量很多都还保持原来的
-
su -:环境变量全部更改为新的
-
-
直接修改要操作的数据文件权限
-
root用户赋予了普通用户权利
-
sudo root用户授权一个能力给普通用户
-
怎么进行授权
visude 93行加上 oldboy ALL=(ALL) /usr/sbin/useradd, /usr/bin/rm 批量加权限,某个不让使用 /usr/sbin/*, !/usr/sbin/visude, /usr/bin/* sbin和bin下所有命令都可以使用,但是sbin下的visude不能 使用的使用不用输入密码 NOPASSWD: /usr/bin/*
-
如何验证oldboy已经获取了root用户能力
sudo -l 输入登陆用户的密码 然后会显示出已经授权的命令
-
如何使用已授权的命令
sudo useradd old 命令前需要加上sudo
-
-
设置特殊权限位
文件数据看到的有9个权限位,系统中实际应该有12个权限位
-
setuid
chmod u+s 文件信息 chmod 4755 文件信息 在属主权限位多出s信息
- 将文件属主拥有的能力分配给所有人
-
setgid:将文件的属组拥有的能力分配给所有用户组
-
sticky bit:粘滞位:(共享目录)
-
可以将不同用户信息放置到共享目录中,实现不同用户数据可以互相查看,但不可以互相随意修改
chmod o+t 目录 或 chmod 1777 目录
-
系统中默认有一个共享目录:/tmp
-
如何防范系统中的重要文件不被修改(root用户也不能修改)
-
给文件加锁,使root用户也不能直接修改相应文件
-
设置
chattr +i /etc/passwd
-
解锁
chattr -i /etc/passwd
-
查看
lsattr /etc/passwd
-
防范
which chattr 然后 mv chattr 重命名 放到自己知道的一个位置和自己知道的名字 别人就不知道你这个命令在哪了 就执行不了了
-