Ubuntu 文件权限学习文档
ll 不是 Linux 原生基础命令,是 ls l 的系统别名。
Ubuntu 文件权限学习文档
一、ll 指令
ll 不是 Linux 原生基础命令,是 ls -l 的系统别名。
作用:一键查看文件 / 目录的完整权限、所属用户、所属组、文件大小、修改时间,是查看权限最常用的指令。
执行后能直观看到:所有者权限、同组用户权限、其他用户权限 三段权限标识。
二、chmod 指令基础
chmod 是 change mode 的缩写,专门用来修改文件或目录的访问权限。
- 仅 文件所有者 和 root/sudo 管理员 有权限修改
- 可以控制:谁能读、谁能写、谁能执行文件
三、Linux 权限三大身份
Linux 把访问文件的人分成三类,权限分开控制:
- u(user 所有者):文件创建者、拥有者
- g(group 同组用户):和所有者在同一个用户组的用户
- o(other 其他用户):系统里除上面两类以外的所有人
- a(all 所有用户):包含 u+g+o 全部
四、三种基础权限标识
表格
| 权限字符 | 含义 | 数字值 |
|---|---|---|
| r | 可读 | 4 |
| w | 可写 | 2 |
| x | 可执行 | 1 |
规则:权限数字可以累加**,组合出不同权限。
五、chmod 数字权限原理
权限按 所有者 → 同组 → 其他 三位一组排列,每一位用 4、2、1 相加:
- 7 = 4+2+1 → rwx 读 + 写 + 执行
- 6 = 4+2 → rw- 读 + 写
- 5 = 4+1 → r-x 读 + 执行
- 4 = 4 → r-- 只读
六、chmod 777 详解
拆解含义
chmod 777 文件名
- 第 1 个 7:所有者 拥有读、写、执行全部权限
- 第 2 个 7:同组用户 拥有读、写、执行全部权限
- 第 3 个 7:其他所有用户 拥有读、写、执行全部权限
作用
给文件开放最高全权限,系统内任何用户都可以读写、修改、运行该文件。
安全提醒
⚠️ 不要随意给系统文件、重要文件设置 777,权限全开容易被恶意篡改,存在安全隐患。只应用于开发测试环境的临时共享场景。
七、常用实用权限搭配
chmod 755:所有者可读写执行,其他人只读执行(目录最常用)chmod 644:所有者可读写,其他人只读(普通文件最常用)chmod a+x 文件:给所有用户添加执行权限(AppImage 常用)chmod 660 文件:所有者和同组用户可读写,其他人无权限(敏感文件)chmod 700 文件夹:仅所有者可读写执行(加密文件夹常用)chmod 444 文件:所有人只读不可写(共享只读资源)
快捷命令速查
# 一键设置所有 .pth 文件为只读(防止误删)
chmod 444 *.pth
# 递归设置目录下所有可写文件为只读
find /path -type f -w -exec chmod 444 {} \;
# 添加文件执行权限(常用,但谨慎使用)
chmod +x script.sh
# 撤销所有文件的执行权限(服务器安全配置)
find /app -type f ! -name "*.sh" -exec chmod -x {} \;
八、常用实用命令速查
文件/目录基础操作
# 强制删除文件(高危⚠️)
rm -rf /path/to/file # 递归强制删除整个目录
# 移动/复制文件
mv old_name.txt new_name.txt # 移动/重命名(目标位置相同)
mv src.txt dst/ # 移动文件到目录
cp src.txt dst/ # 复制文件(不移动)
cp -r src/ dst/ # 递归复制目录
# 解压缩 tar 包
tar -zxvf archive.tar.gz # 解压到当前目录
tar -zxvf archive.tar.gz -C /path/to/dir # 解压到指定目录
tar -czvf new.tar.gz *.txt # 打包压缩当前目录下的 txt 文件
软件安装与管理
# 在线安装软件包
sudo apt update # 更新软件包列表(每次安装前先执行)
sudo apt install -y package-name # 安装软件(-y 自动回答 yes)
sudo apt remove package-name # 仅卸载软件保留配置
sudo apt purge package-name # 彻底卸载软件及配置文件
sudo apt autoremove # 删除依赖包卸载后留下的空依赖
# 授予 AppImage 执行权限
chmod +x app.AppImage
# 安装本地 deb 包(非软件源)
sudo dpkg -i package.deb
# 如果缺依赖可修复
sudo apt -f install
系统重启/关机命令
# 重启系统
sudo reboot # 立即重启
sudo shutdown -r now # 立即重启
sudo shutdown -r +10 # 10 分钟后重启
sudo shutdown -r +1 # 1 分钟后重启
# 关机
sudo shutdown -h now # 立即关机
sudo shutdown -h +10 # 10 分钟后关机
sudo poweroff # 关机
sudo halt # 停止系统
# 紧急重启(键盘断连回锅)
sudo reboot -f # 强制重启
系统信息查询
# 查看目录内容
ls -l ./directory # 第一行状态(- 表示文件,d 表示目录)
ls -a # 包含隐藏文件(.)
ls -lh # 人类可读大小(M/G)
ls -lt # 按修改时间倒序列出(最新在上)
# 查看内核版本
uname -r # 显示 Linux 版本
# 查看当前主机名/用户
uname -n # 显示主机名
whoami # 显示当前用户名
# 查看系统详细版本
cat /proc/version # 系统版本详情
cat /etc/os-release # 发行版信息
磁盘管理
# 查看磁盘使用情况
df -h # 人类可读的磁盘空间使用
du -sh ./directory # 查看目录大小
du -h --max-depth=1 ./dir1 ./dir2 # 查看多个目录大小
# 查找大文件
find /path -type f -size +100M -exec ls -lh {} \; # 查找超过 100M 的文件
# 查看磁盘挂载点
df -T # 显示文件系统类型
mount # 列出所有挂载点
进程管理
# 查看运行进程
ps aux # 查看所有进程详情
ps -ef # 等效命令
ps -x # 显示后台进程
# 查找特定进程
ps aux | grep nginx # 查找 nginx 进程
pgrep -la nginx # 查找并显示 nginx 的 PID
# 终止进程
kill -9 <PID> # 强制终止进程
kill <PID> # 优雅终止进程
# 查看进程资源占用
top # 实时查看进程(按 M 排序)
htop # UI 友好版 top(需要安装)
# 查找 CPU/内存占用高的进程
pstree -op # 显示所有进程树
SSH 远程管理(运维必备)
# 查看 SSH 配置
cat /etc/ssh/sshd_config
# 凭证免密配置(永不过期)
ssh-copy-id root@hostname
# 远程 SSH 登录
ssh user@user.example.com
# 执行远程命令
ssh user@host "cd /app && python main.py"
# 后台运行命令
ssh user@host "nohup python app.py > app.out"
快速任务配置
# 配置 sudo 免密(管理员用)
sudo visudo # 编辑 sudo 配置(防误改)
# 添加规则:user=ALL ALL=(ALL) NOPASSWD:ALL
# 或限定命令:user=ALL ALL=(ALL) NOPASSWD: /usr/bin/apt*, /sbin/reboot
# 测试免密是否生效
sudo ls /root # 应无 prompt 直接成功
九、常见场景实战
场景 1:安全加固
# 关闭不必要���服务
sudo systemctl disable docker
sudo systemctl disable docker.socket
# 限制 root 登录 SSH
echo "PermitRootLogin no" >> /etc/ssh/sshd_config
sudo systemctl restart sshd
# 设置 SSH 密码长度为 40 位
# 禁止 root 登录,强制密码长度为 40 位
echo "PermitEmptyPasswords no" >> /etc/ssh/sshd_config
场景 2:批量权限修复
# 修复.or 文件权限(防止大队网页被锁)
find /app -type f -name "*.or" -exec chmod 755 {} \;
# 修复目录权限
find /home -type d -perm 000 -exec chmod 755 {} \;
场景 3:服务管理
# 服务控制
sudo systemctl status nginx # 查看服务状态
sudo systemctl enable nginx # 开机自启
sudo systemctl disable nginx # 停止开机自启
sudo systemctl restart nginx # 重启服务
sudo systemctl stop nginx # 停止服务
# 查看服务日志
sudo journalctl -xe # 实时查看
sudo dmesg -T -w # 实时查看内核日志
十、参考资料
十一、运维最佳实践建议
- 权限最小化原则:只赋予完成工作所需的最小权限,避免使用 777
- 定期权限审计:每月检查一次目录权限,及时发现异常
- 配置版本管理:系统配置文件要纳入版本控制,避免手动错误修改
- 操作备份:执行重命名或删除操作前,先
cp备份文件 - 专业工具优先:优先使用 modern 工具(如 systemctl),避免使用 Shell 脚本管理,减少系统脆弱性
- 日志留痕:所有系统操作都要记录日志,便于问题溯源
适配版本:Ubuntu 20.04+(包含 GNOME 桌面环境推荐 GUI 工具)