系统的启动流程
-
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信息无法获取,会显示文件属性信息为???
一个文件能不能读不仅跟文件本身权限有关系,跟上面的目录权限也有关系。文件读的原理
文件读的原理
文件目录数据设置权限的方法:
-
根据用户信息进行设定(属主、属组、其他用户)
-
根据用户批量设置
为什么创建的文件和目录权限一致?
目录:755
文件:644
umask
0022
临时修改umask数值
umask 033
默认文件权限:666-022=644
默认目录权限:777-022=755
如何永久修改umask值
vim /etc/profile
里面的umask 022 修改成别的
source /etc/profile
系统中的特殊目录/etc/skel(样板房)
ll -a /etc/skel
- .bash_logout:当系统退出登陆状态要执行的命令
- .bash_profile:别名和环境变量(只针对某个用户)
- .bashrc:别名和环境变量(针对所有用户)
这个目录里面有什么,新创建的用户家目录里就有什么
作用:
用户家目录中的特殊文件
-
.bash_history:历史命令文件
- 曾经输入的历史命令保存位置
- 保存在内存中 history
- 保存在磁盘文件中:.bash_history
-
.viminfo:vim样式设置
系统中和用户相关的文件
-
/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个权限位
如何防范系统中的重要文件不被修改(root用户也不能修改)
|