CentOS回收站如何权限设置
小樊
32
2025-11-26 00:03:08
CentOS 回收站权限设置指南
一、权限设置总览
- 回收站目录建议放在用户家目录,如:~/.local/share/Trash/files(遵循 XDG 规范)或 ~/.trash。
- 权限推荐:仅所有者可读写执行,组与其他用户无任何权限,即 700。
- 属主与属组:回收站目录及其内容应归属于执行删除操作的实际用户(UID)与其主组(GID),避免 root 删除后普通用户无法清理。
- 安全底线:不要将回收站目录设置为 777;不要覆盖系统 /bin/rm 为脚本(会带来安全与维护性风险);如用脚本接管 rm,请使用别名而非替换二进制。
二、按实现方式的权限配置
-
使用 XDG 规范目录(推荐)
- 创建目录并设权限
mkdir -p ~/.local/share/Trash/{files,info}
chmod 700 ~/.local/share/Trash ~/.local/share/Trash/{files,info}
- 确保属主正确(以实际用户执行)
chown -R $USER:$USER ~/.local/share/Trash
- 说明:图形会话(如 GNOME)的“移动到回收站”会写入上述目录;命令行可配合 trash-cli 使用。上述目录结构与权限是常见且安全的做法。
-
使用自定义脚本 + 别名(稳妥可控)
- 创建回收站目录
mkdir -p ~/.trash
chmod 700 ~/.trash
chown $USER:$USER ~/.trash
- 示例脚本(~/bin/trash.sh):
#!/bin/bash
TRASH_DIR=“$HOME/.trash”
mkdir -p “$TRASH_DIR”
for f in “$@”; do
[ -e “$f” ] || { echo “‘$f’ 不存在”; continue; }
ts=$(date +%Y%m%d%H%M%S)
mv -i “$f” “$TRASH_DIR/$(basename “$f”)-$ts”
done
- 赋权与别名
chmod +x ~/bin/trash.sh
echo “alias rm=~/bin/trash.sh” >> ~/.bashrc
source ~/.bashrc
- 说明:使用别名可避免覆盖系统 rm,配合 700 权限即可确保仅本人访问与清理。
-
使用 trash-cli(更贴近桌面回收站语义)
- 安装
sudo yum install -y trash-cli
- 使用与权限
- 命令行删除:trash 文件路径
- 查看:trash-list;还原:restore-trash;清空:trash-empty
- 回收站目录默认仍位于 ~/.local/share/Trash/files 与 ~/.local/share/Trash/info,请按上节设置 700 与属主。
- 说明:桌面环境(如 GNOME)自带“移动到回收站”支持,命令行用 trash-cli 可统一管理。
三、多用户与共享场景
- 原则:每个用户使用各自的回收站目录(如 /home//.local/share/Trash 或 /home//.trash),权限均为 700,属主为相应用户。
- 禁止共享回收站:不要创建全局可写的公共回收站(如 /tmp/.trash 777),这会导致越权访问与数据泄露。
- root 与业务账号分离:root 的回收站应位于 /root/.local/share/Trash 或 /root/.trash,权限 700,避免普通用户误删或被 root 回收站“污染”。
- 如需集中清理,使用 sudo 以对应用户身份执行清理脚本,确保文件属主与权限不被破坏。
四、自动清理与保留策略
- 按时间清理(示例:保留 30 天)
find ~/.local/share/Trash/files -type f -mtime +30 -delete
find ~/.local/share/Trash/info -type f -mtime +30 -delete
- 定时任务(以相应用户执行)
crontab -e
0 2 * * * find ~/.local/share/Trash/files -type f -mtime +30 -delete
0 2 * * * find ~/.local/share/Trash/info -type f -mtime +30 -delete
- 说明:清理前确认目录权限为 700,避免误删他人文件;如使用脚本接管 rm,仍建议保留 -i 或交互确认,降低误删风险。