基于rocky linux 9 的学习笔记
目录
前言
本文基于Rocky Linux实操课程整理,涵盖文件权限体系、进程生命周期等核心点。所有命令均在Rocky Linux 9环境下验证。
一、Linux文件权限体系
1.1 基础权限结构
使用ls -l查看文件详情,权限字符串共10位:
-rwxr-xr-- 1 root root 1024 Jan 1 10:00 test.sh
第1位:文件类型(-普通文件、d目录、l软链接、c字符设备)
2-4位:所属用户(u)权限
5-7位:所属组(g)权限
8-10位:其他用户(o)权限
权限字符与数值对应关系:

这是我刚刚创建的,目前是这样的

1.2 权限修改实操
- 字母法(灵活精准)
bash
# 给test.sh添加执行权限(+号是追加,不影响原有权限)
chmod u+x test.sh
# 设置用户读写执行,组读执行,其他只读(=号是覆盖,会清空原有权限)
chmod u=rwx,g=rx,o=r test.sh
# 【实操技巧】递归修改目录权限(大写X只对目录生效,防止误给文件加执行权限)
chmod -R u=rwX,g=rX,o= /data
添加了执行权限

设置用户读写执行,组读执行,其他只读

- 数字法(高效常用)
单个权限固定数值:
r 读 = 4
w 写 = 2
x 执行 = 1
每组权限(u 属主 /g 属组 /o 其他)数值相加,组成三位数字。
bash
# 等价于u=rwx,g=rx,o=rx
chmod 755 test.sh
# 设置目录权限为777(慎用)
chmod 777 /shared_dir

777 代表所有用户都拥有读写执行全部权限,风险极高,仅练习使用

- 修改属主和属组
chown 修改文件归属属于管理员操作,你当前普通 user 账号直接执行会权限不足,必须加 sudo
chown 用户名 文件:仅修改文件属主(所有者)
chown 用户:用户组 文件:同时修改属主 + 属组
chown -R:递归修改,目录 + 内部所有子文件 / 子目录一起变更
bash
# 先查看 test.sh 当前归属
ls -l test.sh
# 只修改文件属主
sudo chown user test.sh
# 核对结果
ls -l test.sh
# 同时修改属主 + 属组
sudo chown user:user test.sh
ls -l test.sh
#递归修改整个目录所有权
# 创建测试目录并生成内部文件
mkdir data
touch data/demo.txt
# 递归把data目录下所有内容归属改为user:user
sudo chown -R user:user data
# 分别验证目录、内部文件归属
ls -ld data
ls -l data
1.3 特殊权限(SUID/SGID/Sticky Bit)
全称:Set User ID,对应数字权限前缀 4
作用:普通用户运行该文件时,临时获得文件所有者的权限
典型案例:/usr/bin/passwd,文件属主是 root,普通用户执行时临时拥有 root 权限,才能修改密码存储文件 /etc/shadow
权限标识:属主执行位变为小写 s(rws);若原文件无执行权限会显示大写 S(失效)
四位数字权限规则
普通权限是 3 位,特殊权限扩展为 4 位:
第 1 位 = 特殊权限(4=SUID、2=SGID、1=Sticky),后 3 位 = 常规 u/g/o 权限
示例 4755:4(SUID) + 755(rwxr-xr-x)
- SUID
bash
# 先恢复基础755权限
chmod 755 test.sh
ls -l test.sh
#字母法添加 SUID
chmod u+s test.sh
# 查看变化,属主x位变成s:-rwsr-xr-x
ls -l test.sh
#四位数字法
# 先清除SUID
chmod u-s test.sh
# 设置带SUID的完整权限4755
chmod 4755 test.sh
ls -l test.sh
#系统自带 passwd 命令演示(仅查看,不修改)
ls -l /usr/bin/passwd
字母法

四位数字法

- SGID(Set Group ID)- 数字2
作用在目录
目录开启 SGID 后,在这个目录里新建的文件 / 子文件夹,会自动继承当前目录的所属组,适合多人共享协作目录。
作用在可执行文件:运行程序时临时拥有文件属组权限,日常很少使用。
两种设置语法
字母法:chmod g+s 目录名
四位数字法:首位写2,后三位是普通权限,示例 2755
bash
# 进入实验目录
cd ~/lab_exp
# 创建共享测试文件夹
mkdir shared_dir
# 方式1:字母添加SGID
chmod g+s shared_dir
# 查看权限,组执行位会出现小写s
ls -ld shared_dir
# 方式2:数字法 2755(先清除再设置演示)
chmod g-s shared_dir
chmod 2755 shared_dir
ls -ld shared_dir
# 取消SGID权限
chmod g-s shared_dir
数字法2755

- Sticky Bit(粘滞位)特殊数字 1,仅对目录生效,文件无效
核心作用
目录开放全部读写权限时,开启粘滞位后:所有用户都能读写目录内文件,但只能删除自己创建的文件。
系统临时目录 /tmp 默认自带粘滞位,防止普通用户误删别人临时文件。
两种设置语法
字母法:chmod o+t 目录名
四位数字法:首位写1,示例 1777
bash
# 新建本地临时目录,不改动系统/tmp
mkdir mytmp
# 字母法开启粘滞位
chmod o+t mytmp
ls -ld mytmp
# 数字法演示(先清除)
chmod o-t mytmp
chmod 1777 mytmp
ls -ld mytmp
# 查看系统自带tmp,自带t粘滞标识
ls -ld /tmp
# 取消粘滞位
# chmod o-t mytmp
数字法1777

1.4 ACL访问控制列表(精细化权限)
传统 chmod 只能分「属主、属组、其他」3 类权限;
ACL(访问控制列表)可以单独给任意单个用户 / 用户组自定义读写执行权限,实现精细化权限管控,文件权限后会带 + 标识。
核心两条命令:
setfacl:设置 / 修改 ACL 规则
getfacl:查看文件 ACL 权限
bash
# 安装ACL工具(Rocky默认已安装,未安装则使用dnf)
dnf install -y acl
# 查看原始权限(无+号)
ls -l test.sh
# 给指定用户设置读写权限
# 格式 setfacl -m u:用户名:权限 文件
setfacl -m u:user:rw test.sh
# 查看ACL详情
getfacl test.sh
# ls -l 末尾会出现 + 标识ACL生效
ls -l test.sh
设置 / 修改 ACL 规则

# 给指定用户组设置读执行权限
# 格式 setfacl -m g:组名:rx 目录/文件
setfacl -m g:user:rx test.sh
getfacl test.sh
# 递归给目录内所有文件设置 ACL(-R)
bash
mkdir data
# 递归给user赋予全部权限
setfacl -R -m u:user:rwx ./data
getfacl ./data
递归给user赋予全部权限

#默认 ACL(目录新建文件自动继承权限 -d)
仅对目录生效,之后在该目录新建的文件自动带上这条 ACL:
bash
setfacl -d -m u:user:rwx ./data
getfacl ./data
# 删除单一条 ACL 规则(-x)
bash
# 删除user用户的ACL规则
setfacl -x u:user test.sh
getfacl test.sh
#清空文件所有 ACL 规则(-b)
bash
运行
setfacl -b test.sh
# 此时ls -l 的 + 号消失
ls -l test.sh
getfacl test.sh
1.5 umask默认权限掩码
umask 是权限掩码,控制新建文件 / 目录的初始默认权限:
目录原始最大权限:777
文件原始最大权限:666(系统默认不给文件自动赋予执行权限)
计算公式:实际权限 = 原始最大权限 − umask 值
关键规则(课件重点)
文件计算结果末尾若出现奇数(带执行 x 权限),系统自动减 1 改为偶数;目录无此限制。
bash
# 查看当前umask值
umask # 默认0022
# 临时修改umask
umask 0026
# 测试新建文件、目录,观察权限变化
touch umask_test.txt
mkdir umask_dir
ls -l umask_test.txt umask_dir
权限发生了变化

# 永久修改(对所有用户)
echo "umask 0022" >> /etc/bashrc
# 永久修改(对当前用户)
echo "umask 0022" >> ~/.bashrc
# 权限计算逻辑:
# 文件默认最大权限666,目录默认777,减去umask值。
# 【注意】若计算结果出现奇数(如003),系统会自动+1变为偶数(004),
# 因为文件默认不允许直接赋予执行权限。
# 例:umask=0023,文件权限=666-023=643 -> 实际为644(3+1=4)
二、进程生命周期与管理
2.1 进程状态说明

2.2 进程查看命令
bash
# 动态查看进程(类似任务管理器)
top
# 查看所有进程详细信息
ps aux
# 过滤查看指定进程(如sshd)
ps aux | grep sshd
# 查看进程树
pstree
# 查看内存使用
free -h
# 查看当前登录用户
w
# 查看登录历史
last
# 【安全审计】查看失败登录记录(排查暴力破解)
lastb
进程树

2.3 进程管理命令
kill 命令:根据进程 PID 发送信号控制进程
bash
# 列出所有信号
kill -l
# 发送SIGTERM(15):优雅终止(默认,推荐使用)
kill 1234
# 发送SIGKILL(9):强制终止(慎用,D状态进程无效,易丢数据)
kill -9 1234
# 发送SIGHUP(1):重载配置文件(不终止进程,如刷新Nginx配置)
kill -1 1234
# 发送SIGINT(2):中断进程(类似Ctrl+C)
kill -2 1234

pkill 命令:按名称 / 用户批量操作进程(无需 PID)
bash
# 终止指定用户的所有进程
pkill -u kiosk
# 终止指定名称的进程
pkill sshd
# 强制踢出指定用户
pkill -9 -u testuser
作业控制
bash
# 查看后台作业列表
jobs
# 将前台进程放入后台(暂停)
Ctrl+Z
# 后台运行程序
sleep 100 &
# 终止后台作业(%后接作业号)
kill %2
# 将后台作业调回前台
fg %1
三、环境变量配置
3.1 环境变量文件加载顺序
- /etc/profile(全局,用户登录时加载)
2./etc/bashrc(全局,每次打开新终端时加载)
3.~/.bash_profile(当前用户,登录时加载)
4.~/.bashrc(当前用户,每次打开新终端时加载)
3.2 环境变量操作
bash
# 定义临时环境变量(注意加$符号引用)
export RHT="redhat"
echo $RHT
# 查看环境变量
env | grep RHT
# 取消环境变量
unset RHT
# 永久设置环境变量(对所有用户)
echo 'export JAVA_HOME=/usr/lib/jvm/java-11' >> /etc/bashrc
source /etc/bashrc
# 永久设置环境变量(对当前用户)
echo 'export PATH=$PATH:/opt/myapp/bin' >> ~/.bashrc
source ~/.bashrc
四、实用工具与安全
4.1 wget网站下载
bash
# 下载单个页面
#功能:直接把目标页面下载到当前目录,文件名默认和链接末尾一致
wget http://example.com/index.html
# 下载整个网站(适合离线浏览)
wget -r -np -k -E http://example.com
# 参数说明:
# -r 递归下载
# -np 不追溯至父目录
# -k 转换链接为本地链接
# -E 添加.html扩展名
4.2 系统故障信息收集
bash
# 收集系统信息(用于故障排查,会打包成tar文件)
sudo sosreport
4.3 安全相关(穷举法/爆破)
黑客常利用密码字典(生日、弱口令等)进行自动化尝试。
防御手段:禁用root远程登录、使用密钥认证、部署fail2ban。
排查手段:定期查看lastb日志。
五、实操练习
bash
# 1. 创建属于root的文件,仅root可访问(以姓名首字母命名)
touch ywb
sudo chown root:root ywb
sudo chmod 700 ywb # 或 chmod u=rwx,go= --- ywb
# 2. 使用ACL为特定用户(如kk)设置读写权限
sudo setfacl -m u:kk:rw ywb
# 3. 验证权限
sudo -u kk cat ywb # 应能读取
sudo -u kk echo "test" >> ywb # 应能写入
sudo -u kk ./ywb # 应无执行权限(Permission denied)
# 4. 清理环境
sudo setfacl -b ywb
rm ywb
六、注意事项
权限最小化:避免使用chmod 777,遵循最小权限原则。
D状态进程:kill -9无法杀死D状态进程,通常需等待I/O完成或重启。
umask陷阱:umask计算结果为奇数时,文件权限会自动进位(变偶数)。
命令兼容性:Rocky Linux推荐使用dnf代替yum,但yum命令依然可用。
总结
本文涵盖了Linux系统管理中权限控制、进程管理和环境配置的核心知识点。掌握这些内容不仅能应对日常运维,也是RHCSA/RHCE的重点。

2268

被折叠的 条评论
为什么被折叠?



