Linux 目录权限研究
说明
我看了很多文章,没能完全明白 Linux 目录权限,然后想其实可以自己穷举一下,也就只有 64 种组合。
另外,Linux 还有几个特殊文件权限,这里不考虑。
首先写一个最简单脚本,并执行之
#/bin/bash
rm -rf /var/temp
mkdir /var/temp
touch /var/temp/700
touch /var/temp/701
touch /var/temp/702
touch /var/temp/703
touch /var/temp/704
touch /var/temp/705
touch /var/temp/706
touch /var/temp/707
chmod 700 /var/temp/700
chmod 701 /var/temp/701
chmod 702 /var/temp/702
chmod 703 /var/temp/703
chmod 704 /var/temp/704
chmod 705 /var/temp/705
chmod 706 /var/temp/706
chmod 707 /var/temp/707
意思是用 root 身份建立目录,里面加入 8 个文件,涵盖各种权限。
然后用普通用户去做一些事情。包括:
- 列出目录的内容,
- 打印目录下各个文件的内容,
- 给目录下添加一个文件,
- 删除目录下各个文件,
- 用 vi 编辑文件。vi 文中没写,但我试过了。
穷举的测试记录
(1)目录权限(—)
root身份执行:chmod 700 /var/temp
切普通用户
ls /var/temp 失败
cat 全部失败
touch /var/temp/123 失败
rm 全部失败
(2)目录权限(–x)
chmod 701 /var/temp
ls /var/temp 失败
cat 前4失败,后4成功。
touch /var/temp/123 失败
rm 全部失败
(3)目录权限(-w-)
chmod 702 /var/temp
ls /var/temp 失败
cat 全部失败
touch /var/temp/123 失败
rm 全部失败
(4)目录权限(-wx)
chmod 703 /var/temp
ls /var/temp 失败
cat 前4失败,后4成功。
touch /var/temp/123 成功
rm 全部成功
(5)目录权限(r–)
chmod 704 /var/temp
ls /var/temp 能看名字,不能看大小等信息。
cat 全部失败
touch 失败
rm 全部失败
(6)目录权限(r-x)
chmod 705 /var/temp
ls 全部成功
cat 前4失败,后4成功。
touch 失败
rm 全部失败
(7)目录权限(rw-)
chmod 706 /var/temp
ls /var/temp 能看名字,不能看大小等信息。
cat 全部失败
touch 失败
rm 全部失败
(8)目录权限(rwx)
chmod 707 /var/temp
ls /var/temp 成功。
cat 前4失败,后4成功。
touch 成功
rm 全部成功
总结
- 怎样才能删除一个文件:其目录同时具有wx权限,与文件自身无关。
- 怎样才能给目录添加文件:目录同时具有wx权限。
- 怎样才能修改一个文件:文件有w权限,目录具有x权限。
- 怎样才能打印一个文件内容:文件具有r权限,目录具有x权限。
- 怎样才能完全正确的列出目录里的全部文件:目录同时具有rx权限。
- 注意到,以上全部5项都需要目录具备x权限。
Linux 真的好麻烦。。
本作品采用《CC 协议》,转载必须注明作者和本文链接