Linux 概述与安装
企业运行模式
铁三角 = 产品 + 研发 + 运维
流程走向: 产品设计 -> 项目研发 ->项目测试 -> 项目上线 ->系统运维
研发 = 前端 + 后端
运维: 产品上线 、后期的运行与维护工作都属于运维工程师范畴
远程连接工具
远程连接工具的作用是,通过远程连接工具远程连接到服务器上,方便操作!
常见的连接工具有:
XShell:一款 Windows 平台下的 SSH 客户端软件,支持 SSH1、SSH2、SFTP、TELNET、RLOGIN 等多种协议。只支持 Windows 平台。
**FinalShell:**一款一体化的服务器网络管理软件,不仅支持 ssh 客户端,还是功能强大的开发工具。
PuTTY:一款基于** SSH、Telnet、Rlogin 和串口连接**的远程终端连接软件,支持 Windows 和 Unix/Linux 系统。
SecureCRT:一款功能强大的终端仿真程序,支持 SSH、Telnet、Rlogin 和串口连接。价格较高,适用于商业用户。
**MobaXterm:**一款功能全面的远程网络工具,包括 SSH、X11、DRP、VNC、FTP、MOSH 等,以及 Unix 命令,登陆之后默认开启 sftp 模式。
WinSCP:一款 Windows 环境下的 SSH 的开源图形化 sftp 工具客户端,支持 scp 协议,本地与远程计算机间安全第复制传输文件。
**NxShell:**一款开源的 linux 远程管理工具,支持 sftp,适合日常远程管理 linux 服务器。
Linux 基础命令
备份操作系统
- **快照:又称还原点,保存在拍照时系统的状态。**后期随时可以恢复。(注重短期备份或频繁备份)
- **克隆:**就是复制的意思,侧重长期备份。做克隆必须关闭虚拟机。
选中要克隆的虚拟机->虚拟机->管理->克隆
Linux 系统使用注意项
Linux 是严格区分大小写
Linux 文件扩展名
Linux 是通过权限位标识来确定文件类型,常见的文件有普通文件、目录、连接文件、块设备文件,在 Linux 中的一些特殊还是要求写“扩展名”的,Linux 不依赖扩展名识别文件类型,扩展名是为了帮助运维人员区分不同的文件类型。
文件扩展名种类:
- 压缩包:Linux 压缩包常见扩展名:.gz .bz2 .zip .tar。
- 二进制软件包:Centos 中使用的二进制安装包是 RPM 包,所有 RPM 包都是.rpm 扩展名。
- 程序文件.sh .py; 网页文件.php .html 这些是网页服务器的要求,并不是 Linux 的要求。
Linux 中一切皆文件
所有内容都以文件形式保存。
普通文件,分为一般文件(黑色)和可执行文件(绿色)
在 Linux 中所有存储设备必须在挂载后才能使用
Linux 系统的文件目录结构
Linux 系统不同于 Windows,所有文件都在根目录下(/)
路径的概念:
路径区分为绝对路径和相对路径。
绝对路径:不管当前路径在哪,目标路径都从“/”磁盘下开始。
相对路径:指的是一个相对物,一般就是当前的工作路径。
../: 表示上一级目录
./:表示当前目录
| 目录 | 作用 |
|---|---|
| /bin | 存放常用命令 |
| /sbin | 存放超级管理员使用的系统管理程序 |
| /boot | 存放 Linux 启动时的一些核心文件 |
| /root | root 用户家目录 |
| /home | 普通用户家目录 |
| /dev | 存放外部设备 |
| /etc | 存放系统所有系统管理的配置文件和子目录 |
| /lib | 存放系统最基本的动态连接共享库 |
| /media | 自动识别的设备挂载目录 |
| /mnt | 临时挂载目录,如光驱 |
| /opt | 第三方程序安装目录 |
| /proc | 存放当前内核运行状态的一些特殊文件,是虚拟的,是系统内存的映射,可直接访问获取系统信息 |
| /srv | 存放一些服务启动后需要提取的数据 |
| /sys | Linux2.6 内核后,安装的一个文件系统 sysfs |
| /tmp | 存放临时文件 |
| /usr | 存放用户的应用程序和文件 |
| /var | 存放不断扩充的东西,常被修改的目录 |
| /run | 是一个临时文件系统,存放系统启动以来的信息。 |
Linux 命令入门
终端提示符含义
命令与选项
- 什么是命令?
就是 Linux 终端(命令行界面)中输入的呢绒称之为命令
Linux 命令格式:
命令 (空格) 选项 [ 参数 ]
命令名: 执行命令的名字 如:ls、cd、mkdir、touch
空格:必须字符(最少一个)
选项:执行命令所需要的属性信息
参数:命令作用的对像
:::danger 注意:命令与选项之间要有空格,选项与选项之间要有空格,选项与参数之间要有空格是必不可少的一个字符,最少一个
:::
基础命令
- uname
查看系统信息
- -a 列出所有系统信息
- ls
列出目录下信息
1. **ls**
含义:列出当前工作路径下的文件名称
2. **ls /home/linux**
含义:列出/home/linux 路径下的文件名称
3. ls linux/
含义:列出当前工作路径下,linux 目录下的文件名
4. ls 后面根参数选项、路径
含义:在列出指定路径下的文件/文件夹名称,并以指定的格式进行显示常见参数:
-a:a 代表 all,表示显示所有的文件/文件夹,而且包含隐藏文件/文件夹
-l:l 代表 list,表示以详细列表的形式进行展示
-d:只显示目录的信息
-h:以较高的可读性(文件大小)来展示
-R:递归显示所有的文件
- pwd 显示当前路径
- cd 切换目录
- clear 清除屏幕信息
- whoami 查看当前用户
- reboot 重启操作系统
- shutdown 关机命令
shutdown 系统在 60s 后关机
shutdown now 系统立即关机
shutdown -h 20 系统在 20 分钟后关机
shutdown -c 系统取消关机
扩展:poweroff 或 init 0 或 shutdown now 关机
- type 查看命令是内部命令还是外部命令
- history 列出最近输入的一千条信息
- hostnamectl 读取或设置操作服务器的主机名
- 同时设置静态或瞬态主机名
hostnamectl set-hostname 主机名
如: hostnamectl set-hostname aliyun.cloud
2. **配置灵活主机名**
hostnamectl --pretty set-hostname 主机名
如:hostnamectl --pretty set-hostname "aliyun's cloud"
3. **配置瞬态主机名**
hostnamectl --transient set-hostname 主机名
如:hostnamectl --transient set-hostname alibaba
命令帮助
- help 查看命令帮助
- 区分内部/外部命令
如:type ls
先 type 查看命令是内部/外部命令
- 外部命令查看帮助
命令名 --help
如:ls --help
- 内部命令查看帮助
help 命令名
如:help cd
- man 手册查看命令帮助
不区分内外部命令
文件管理
文件命名规则
- 可使用哪些字符
除“/”字符,所有字符都可使用,但不建议使用特殊字符
正常文件命名规则:
1. 尽量都是用小写字母,因为 Linux 严格取反大小写
2. 如要对文件名进行分割,建议使用"_",zhaobao_2024_12_02
2. 文件名的长度
目录名或文件名长度不能超过 255 个字符
- 文件名大小写
Linux 严格区分大小写,所以不建议使用字符的大小写来区分。
建议文件名一律使用小写。
- Linux 文件的扩展名
Linux 中不以扩展民对文件类型进行区分,文件扩展名只是房版运维人员更好的区分不同的文件类型,文件类型是依权限位标识进行区分,还可通过文件颜色进行区分。
Linux 下的文件管理
创建目录
在实际应用中,与目录相关的操作就两个:创建和删除目录
- mkdir 创建目录
- mkdir -p 递归创建
- mkdir -v 或 --verbose,为每一个被创建的目录打印一条信息
删除目录(必须是空目录)
- rmdir (remove directory)移除空目录
- rmdir -p 递归删除空目录
touch 文件创建
文件删除
- rm 普通删除
选项:
- -r:针对文件夹删除,-f 代表递归删除,先把目录下所有文件先删除,然后在删除文件夹。
- -f:强制删除,不提示,直接删除。
- rm -rf /* 一定要慎重
cp(copy)复制操作
mv 剪切或重命名操作
打包压缩与解压缩
- 概念
打包在默认情况下,Linux 的压缩概念一次只能压缩一个文件。针对多文件或文件夹是无法直接进行压缩的,所以需要提前对多个文件或文件夹进行打包,这样才可以压缩操作。
通过 dd 命令可以创建指定大小文件
cd /tmp
rm -rf *
dd if=/dev/zero bs=1M count=5 of=a.txt
dd if=/dev/zero bs=1M count=10 of=b.txt
dd if=/dev/zero bs=1M count=15 of=c.txt
ls -lh
- 在 Linux 系统中使用打包
#tar [选项] 打包后的名称.tar 多个文件或文件夹
选项说明:
-c:打包
-f:filename,打包后的文件名称
-v:显示打包的进度
-u:update 缩写,更新原打包文件中的文件
-t:查看打包的文件内容
- tar -tf 以及 tar -uf
tar -tf 打包后的文件名称 # 查看 tar 中的文件信息
tar -uf 打包后的文件名称 更新 tar 中的内容
- 打包并压缩
tar [ 选项 ] 压缩后的压缩包名称 要压缩的文件或文件夹
选项:
-cf:对文件或文件夹进行打包
-v:显示压缩进度
-z:使用 gzip 压缩工具把打包后的文件压缩为.gz
-j:使用 bzip2 压缩为.bz2
-J:使用 xz 压缩为.xz
压缩速率:gzip > bzip2 > xz
压缩率:gzip < bzip2 < xz
压缩与解压缩
- zip 压缩
选项:
-r 递归压缩,主要针对文件夹
- unzip 解压缩
unzip 压缩包名称 # 解压到当前路径下
unzip 压缩包名称 -d 指定路径 # 解压到指定路径下
vim 编辑器
vi 编辑器
vi(visual editer)编辑器通常被简称为 vi,是 Linux 和 Unix 系统的上的最基本的文本编辑器,类似于 windows 系统下的 notepad(记事本)编辑器。
vim 编辑器
Vim(Vi improved)是 vi编辑器的加强版,比vi 更容易使用,vide 命令几乎全部都可以在 vim 上使用。
vim 编辑器的安装
CentOS7 图像化默认已经安装好了 vi 或 vim。
有些精简版未安装,在有网的前提下,可以使用 yum 工具对 vim 编辑器进行安装
yum intall vim -y
vim 的四种模式(重点)
- 命令模式
使用 vim 编辑器时,默认处于命令模式。在该模式下可以移动光标位置,可以通过快捷键对文件内容进行复制、粘贴、删除等操作。
- 编辑或输入模式
在命令模式下输入小写字母 a 或小写字母 i 即可进入编辑模式,在该模式下可以对文件的内容进行编辑。
- 末行模式
在命令模式下输入冒号:即可进入末行模式,可以在末行输入命令对文件进行查找、替换、保存、退出等操作
- 可视化模式(了解)
可以做一些选列操作(通过方向键选择某些列的内容)
vim 四种模式的关系
vim 的使用
- 如果文件存在,直接打开
- 如果文件不存在,则自动在内存中创建一个新文件
vim 保存文件
在末行模式下,输入 wq,保存并退出
强制退出(不保存)
在末行模式下,输入 q!,强制退出。
命令模式可以进行的操作
- 如何进入命令模式
使用 vim 命令打开文件时,默认进入命令模式,其他模式下连续按两次或一次 esc 返回到命令模式。
- 命令模式可以进行哪些操作
移动光标、复制、粘贴、剪切、撤销、恢复撤销
- 移动光标到首行或末行
- 移动光标到首行:gg
- 移动光标到末行:G
- 移动光标到行首:shift+^
- 移动光标到行尾:shift+$
- 翻屏
- 向上 翻全屏,按键:ctrl+b(before)或 PgUp
- 向下 翻全屏,按键:ctrl+f(after)或 PgDn
- 向上 翻半屏,按键:CTRL+u(up)
- 向下 翻半屏,按键:CTRL+d(down)
- 快速定位光标到指定行
行号+G,如:将光标快速移动到 5 行
- 复制/粘贴
- 复制当前行
按键: yy
粘贴:在想要粘贴的地方按下 p 键,粘贴在光标所在行的下一行,想要粘贴在光标所在行之前,则使用 P 键。
2. 复制多行,从当前行开始复制指定的行数,如复制 6 行,6yy
粘贴:同上
3. 撤销:u
末行模式下的操作
- 进入末行模式
在命令模式下使用冒号:进入
- 末行模式有哪些操作
文件保存、退出、查找、替换、显示行号、paste 模式等
- 保存/退出
:w 代表对当前文件进行保存,不退出
:q 代表退出当前文件,如果编辑了文件内容,无法退出
:wq 保存并退出。
:q! 代表强制退出,不管是否编辑内容,直接退出,已编辑不保存。
- 查找/搜索
在命令模式下进入末行模式输入:或/
- /搜索内容
如:/hello
搜多到内容,会以高亮显示,取消高亮/noh【no hight light】
- :/搜索内容
案例:
:/help
取消高亮:
:noh
在一个文件中,搜索
文件内容的替换
需要在命令模式下使用冒号进入末行模式
- 只替换当前光标所在这一行的第一个满足条件的结果
: s/要替换的关键词/替换后的关键词/ + 回车
- 替换光标所在行中的所有满足条件结果
: s/要替换的关键词/替换后的关键词/g g=global 全局替换
如:
: s/c/3/g
- 针对整个文档中的所有行进行替换
:%s/要替换的关键词/替换后的关键词/g g=global 全局替换
如:
:%s/c/3/g
- 针对整个文档中的所有行进行替换。只替换每一行中满足条件的第一个结果
:%s/要替换的关键词/替换后的关键词 g=global 全局替换
如:
:%s/c/3
- 显示行号
:set nu
nu = number,行号
取消行号:
:set nonu
- set paste 模式(扩展)
在 vim 中粘贴代码时,会出现多余缩进的问题。最终会是代码变乱的粘贴代码或数据前,可以开启 paste 模式
:set paste
set nopaste
编辑模式
编辑模式的作用
编辑模式主要时实现对文件的内容进行编辑的一个模式
如何进入编辑模式
在命令模式下,使用小写字母 a 或小写字母 i,进入编辑模式
(扩展)进入编加模式
o 在光标下一行插入 O 在光标上一行插入
a 在光标之后插入 A 在光标所在行尾插入
命令模式+i:insert 缩写,代表在光标之前插入内容
命令模式+a:append 缩写,代表在光标之后插入内容
退出编辑模式
直接按 ESC 键退出
可视化模式
进入可视化模式
- 按 CTRL+v 进入可视块
- 按小写 v 是可视
- 按大写 V 是可视行。
在可视模式中,使用方向键上下左右箭头选中需要复制的区域,按 y 进行复制,按 p 进行粘贴
可视化模式操作
- 在命令模式下,按小写 v 进入可视化模式
- 移动方向键上下左右选择需要复制的内容,按 y 键进行复制
- 移动光标,停止需要粘贴的位置,按 p 进行粘贴操作
查看文件内容
cat 查看文件
- -n:显示行数
tac 倒序显示文件内容
head 显示文件前 n 行内容
默认显示前 10 行
- -n 指定显示前 n 行
tail 显示文件后 n 行内容
默认显示后 10 行
- -n 指定显示后 n 行
- -f 动态显示后 n 行
管道:将前面命令的执行结果交给后面命令处理
符号:|
可以使用 head 和 tail 命令通过管道“|”查看文件的任意内容
more 命令
注意:加载文件时,不是一点一点加载的,而是把打开文件的时候就已经把文件内容加载完到内存中。
| 按键 | 功能 |
|---|---|
| 回车 | 向下移动一行 |
| d | 向下移动半页 |
| 空格 | 向下移动一页 |
| b | 向上移动一页 |
| q | 退出 more |
less 分配显示文件内容
不是加载整个文件到内存,而是一点一点加载的,相对于 more 而言,读取大文件时,效率更高一点
| 按键 | 功能 |
|---|---|
| 回车 | 向下移动一行 |
| d | 向下移动半页 |
| 空格 | 向下移动一页 |
| b | 向上移动一页 |
| less -N 文件名称 | 文件内容显示行号 |
| /字符串(搜索内容) | 搜索指定内容 |
| 上下方向键 | 向上与向下移动, |
wc 统计文件行数或单词数
wc [ 选项 ] 文件名称
选项:
-l:表示 lines,行数(以回车/换行符为标准)
-w:表示 words,单词数(依照空格判断单词数量)
-c:表示 bytes,字节数
du 统计文件或文件夹大小
选项:
-s:summaries,只显示汇总的大小,统计文件夹的大小
-h:以较高的可读性显示文件或文件夹的大小
find 命令
find 搜索路径 [ 选项 ]
-name:指定要搜索文件的名称,支持*星号通配符
-type:指定搜多的文件类型,f 代表普通文件,d 代表文件夹
-type:指定文件大小
功能:帮助管理员查找文件路径
find /var -name "boot.log" -type f 在/var 搜索 boot.log 文件
find / -name "boot.log" -type f 全盘搜索 boot.log 文件
find /var/log -size +4M 搜索/var/log 大于 4M 的文件
grep 命令
grep [ 选项】要搜索的关键词 搜索的文件名称
在文件中直接找到包含指定关键词的行,并高亮显示出这些信息
选项:
-n:代表显示包含关键词的行号
echo 命令
在终端输入指定的内容,并输出
echo "文本内容"
>或>>重定向
">" 标准重定向:覆盖输出,会覆盖原先的文件内容
">>" 追加重定向:追加输出,不会覆盖原始文件内容,只会在原始内容末尾继续添加
链接
软链接(ln -s)
硬链接(ln 命令)
硬链接和软链接的区别
| 硬链接 | 软链接 |
|---|---|
| 无论是删除源文件是链接文件,只要有一个文件存在就不受影响 | 删除源文件,链接文件会找不到实际数据 |
| 和原文件共用一个inode | 会新建自己的inode和block,block中不会存储文件数据 |
| 不会占用inode和block | 会占用inode和block |
| 不可以跨分区 | 可以跨分区 |
| 不可以链接目录 | 可以链接目录 |
用户管理
用户组操作
主要是:用户组的添加、修改和一级用户组的删除
组:group
添加:add groupadd 添加组
修改:mod groupmod 修改组
删除:del groupdel 删除组
用户组的添加
groupadd [ 选项 ] 用户组名称
-g:代表用户组的组 ID 编号。自定义组从 1000 开始,不能重复
默认情况下,添加的用户组都会放在一个系统文件中,文件位置 /etc/group
第一列:用户组的名称
第二列:用户组的组密码,使用一个 5x 进行占位,安全起见
第三列:用户组的 ID 编号, 1-999 是系统用户组的编号,1000 以后的组 ID 时自定义组的编号
第四列:用户组内的用户信息
用户组的修改
groupmod [ 选项 ] 原来的用户组名称
-g:gid 的缩写,修改用户组的 id
-n:name 的缩写,修改用户组的名称
用户操作
主要是:用户组的添加、修改和一级用户组的删除
用户:user
添加:add useradd 添加用户
修改:mod usermod 修改用户
删除:del userdel 删除用户
用户的添加
useradd [ 选项 选项的值 ] 用户名称
-g:代表添加用户时指定的用户所属组的主组
-s:代表指定用户可以使用的 shell 类型,默认为/bin/bash(拥有大部分的权限)还可以是/sbin/nologin,/sbin/nologin 不能用于登录操作系统。
/bin/bash -> 给人使用
/sbin/nologin -> 给软件使用
-G:代表添加用户时指定用户所属组的附属组,附加组可以指定多个,用,逗号隔开即可
-u:代表添加用户时指定的用户 ID 编号,ID 编号同样也是从 1000 开始
-c:代表用户的注释信息:lat(龙傲天的账号)
-d:代表用户的家目录,默认为/home/用户名称,可以使用-d 进行更改
-n:取消建立以用户名称为名的群组(了解)
用户信息查询
id 用户名称
查询某个指定的用户的信息
uid:用户编号
gid:用户所属的主组编号
groups:用户的主组一级附属组信息,第一个是主组,后面是附属组,主组只有一个,附属组有多个
用户文件内容
组:/etc/group 文件
用户:/etc/passwd 文件,每创建一个用户,就会在此文件中追加一行
tail -3 /etc/passwd
用户文件内容有 7 列
- 用户名称
- 用户的密码,使用一个 X 占位,真实密码存储于/etc/shadow
- 用户的 id 编号,数字
- 用户的主组 id 编号,数字
- 代表的注释信息,使用 useradd -c“备注信息”用户名称 进行添加
- 用户的家目录,默认在 /home/用户名称
- 用户可以使用的 shell 类型,使用 useradd -s /bin/bash 或 /sbin/nologin 用户名称 进行修改
用户修改
-s:修改用户可以使用的 shell 类型
-g:修改用户的主组
-l:login name 修改用户的名称
扩展:
-L:锁定用户,锁定后用户无法登录系统 lock
-U:解锁用户 unlock
-G:修改用户的附属组的编号信息
-d:修改用户的家目录
-c:修改用户的备注信息
给用户设置密码
passwd 命令给用户设置密码
注意:只有 root 用户才能给用户设置密码,普通用户只能需改自己的密码
- 交互式
passwd xiaohong
- 非交互式
echo "123" | passwd --stdin xiaohong
用户的密码文件:/etc/shadow
切换用户
su 切换用户
su - 用户名
-:横杠,代表切换用户的同时,切换用户的家目录
从 root 切换到普通用户,不需要密码,退出普通用户输入命令 exit
从普通用户切换到其他用户包括 root,需要输入密码
wheel 组
在 linux 中,理论上只有 wheel 组中的用户,才可以通过 su 命令切换到 root 账户;
默认所有普通用户只要指定 root 密码都能切换到 root。然后默认 wheel 组规则不生效
开启 wheel 组
vim /etc/pam.d/su
取消注释
用户删除
- 删除用户但不删除用户的家目录
userdel u1
- 删除用户同时删除用户的家目录
userdel -r u2
注意:
- 如果一个用户的主组是另一个用户的主组,那么删除这个用户的时候,主组是不会被删除的
- 如果一个组是一个用户的主组,,就不能直接删除此组,必须先删除用户
- 如果一个用户的家目录指定了非/hom 下,删除此用户不会删除该用户指定的家目录
权限管理
权限概述
权限的基本概念
| 表示 | 权限针对文件 | 权限针对目录 |
|---|---|---|
| 读 r | 可以查看文件内容 | 可以查看目录中存在的文件名称,使用 ls |
| 写 w | 可以更改文件的内容:vim 修改 | 可以删除目录中的子文件或者新建子目录(rm) |
| 执行 x | 可以运行 | 程序,可以进入目录中(cd) |
注意:一般在给予目录或文件权限时,会使用套餐组合,给文件 w 权限就要给 r 权限,给目录读取权限就要给执行权限
为什么要设置权限
- 服务器中的数据是有价值
- 员工的工作职责和分工不同
- 应对外部的攻击
- 内部管理的需要
普通权限管理
ls -l 查看文件权限
简写为 ll
注意:ll 命令是红帽以及 centos 系统特有的命令,其他操作系统可能不支持
文件类型以及权限解析
Linux 中文件类型一共有 7 种
-:普通文件
d:目录文件
l:软链接(类似 windows 的快捷方式)
b:block,块设备(硬盘、光驱)
p:管道文件
c:字符设备文件(串口设备、光猫)
s:套接口文件
文件或文件夹的权限设置(字符、数字)
**基本语法:**chmod = chang mod
chmod [ 选项 ] 权限设置 文件或文件夹的名称
选项说明:
-R:递归设置,主要用于文件夹的权限设置
三个方面:
- 确认要给哪个身份赋予权限 u、g、o、ugo(a)
- 添加权限(+)、删除权限(-)、赋予权限(=)
- 确认赋予用户什么样的权限,r、w、x
通过数字进行权限设置
| 权限 | 对应数字 | 意义 |
|---|---|---|
| r | 4 | 可读 |
| w | 2 | 可写 |
| x | 1 | 可执行 |
rwx = 4+2+1=7
rw = 4+2=6
rx = 4+1 = 5
文件拥有者以及文件所属组设置
文件拥有者所属组设置
基本语法:chown ch = change,own = owner
chown [ 选项 ] 文件拥有者:文件所属组名称 文件名称
或
chown [ 选项 ] 文件拥有者.文件所属组名称 文件名称
选项说明:
-R:代表递归修改,主要针对文件夹
文件所属组设置
基本语法:chgrp ch = change grp = group
chgrp [ 选项 ] 新文件所属组名称 文件名称
选项说明:
-R:代表递归修改,主要针对文件夹
特殊权限
特殊权限 suid
suid 属性只能运用在可执行文件上,含义是开放文件所有者的权限给其他用户,即当
普通用户执行该执行文件时,会拥有该执行文件所有者(root 用户权限)的权限。
suid 仅限于可执行文件,也就是 二进制文件,比如系统下的/usr/bin 下提供的命令,
/usr/bin/ls、/usr/bin/rm
suid 特殊权限只要用户设有 suid 的文件有执行权限,那么当用户执行此文件时,会以
属主的身份去执行 一旦文件执行结束,身份的融合也会随之消失。
注意:
suid 功能是针对二进制命令设置的,不能用在 shell 脚本上。
用户权限位 x 位置处,如果有则为 s,无则为 S,表示该命令存在 suid 权限。
特殊权限 sgid
sgid 属性可运用于文件或目录,运用在文件的含义是开放文件所属组的权限给其他用户,当用户执行该执行文件时,会拥有该执行文件所属组用户的权限。
对于文件夹,为某个目录设置了 sgid 后,该目录文件属于属组;在这个目录下创建的文件、文件夹都会继承该目录的属组。
对于二进制文件,若 g 具有 x 权限,并设置了 sgid 权限,其他用户可以获得属组的权限去执行该二进制文件
特殊权限 sticky
权限只能运行于目录上,限制普通用户在此目录下只能删除自己的文件,不能删除其他用户的文件。
sticky 权限是起到防止被别人误删除的作用!
通过数字修改文件的特殊权限
特殊权限数字表示方式:
Suid:4
Sgid:2
Sticky:1
ACL 访问控制列表
使用场景
当一个用户与文件属主、属组、其他人权限都不相同的时候,我们可以使用 ACL 访问控制列表,也就是说,这个用户对于这个文件不属于三种身份的任何一种,是属于第四种身份,需要使用 ACL 权限去给他赋予单独的权限!
查看 acl 权限
getfacl 文件或目录名称
设置文件的 ACL 权限
setfacl [选项] 文件或目录名称
选项说明:
-m:修改 acl 权限
-x:去掉某个用户或某个组的权限
-b:删除所有 acl 策略
-R:递归,主要针对文件夹
-d:应用到默认访问控制列表的操作(继承效果)
Umask
什么是 umask
代表创建文件的默认权限
root 创建文件默认权限是 644
普通用户创建文件默认权限是 644
查看 umask 值
修改 umask
umask 022
vim ~/.bashrc
在文档末尾添加 umask 022 即可
保存并退出
su 切换用户生效
umask 码作用
umask 码使得用户创建目录和权限时,拥有默认的权限
创建文件的权限默认值
文件权限= 初始权限(666) - umask
创建目录的权限默认值
初始权限(777) ——> 转换成 字母 r w x r w x r w x
umask 权限如:022 ——> 转换成 字母 - - - - w - - w -
隐藏权限
文件的隐藏权限,默认看不到的权限(对管理员也生效)
添加隐藏权限
chattr +a/+i 文件名
选项:
a:限制用户只能追加内容,不能删除,剪切文件
i:限制用户只能查看文件内容,不能删除,剪切,追加,修改文件
查看隐藏权限
lsattr 文件名
删除隐藏权限
chattr -a a.txt
chattr -i b.txt