我希望每个用户主目录中的所有文件的权限都是 0740 或更低。
假设某个用户有如下权限:
-rwxr----- 1 doej users 321 Jan 6 2013 file1.txt
-rwxrwx--- 1 doej users 555 Jan 6 2013 file2.txt
-rwxr-xr-x 1 doej users 875 Jan 6 2013 file3.txt
-r--r--r-- 1 doej users 875 Jan 6 2013 file4.txt
-rwxr----x 1 doej users 875 Jan 6 2013 file5.txt
-r--r----x 1 doej users 875 Jan 6 2013 file6.txt
-r-------- 1 doej users 875 Jan 6 2013 file7.txt
-rwxrwxrwx 1 doej users 875 Jan 6 2013 file8.txt
我寻求的是以下能力:
- 将 file8.txt 等文件更改为 chmod 740
- 保留诸如 file7.txt 之类的文件
- 将 file6.txt 等文件更改为 chmod 440
本质上,减少过多的权限而不添加更多的权限。
如果我这样做,它会向低于要求的文件添加过多的权限:
sudo chmod 0740 /home/*
有命令可以执行此操作吗?它需要 bash 脚本吗?
答案1
chmod g-wx,o-rwx …
wx
将从组和其他人中删除;它不会改变用户(所有者)的任何内容,也不会改变组的rwx
状态。r
笔记:
- 递归 chmod 是
chmod -R
,但通常你想以不同的方式处理目录。请参阅通用 chmod 函数区分目录和[常规]文件。 - 如果你最多想要
700
,那就足够了chmod
少量目录,非递归。 - 我认为更改其他用户的单个文件的模式是一种潜在的信任滥用,它需要征得同意或有充分理由。大规模更改可能更具滥用性。如果管理员突然对我的文件这样做,我会感到担忧。
- 无论如何,用户
chmod
稍后都可以访问他们的文件。
答案2
使用
寻找
其参数perm
定义为:
-perm -mode
All of the permission bits mode are set for the file.
Symbolic modes are accepted in this form, and this is
usually the way in which you would want to use them. You
must specify `u', `g' or `o' if you use a symbolic mode.
使用该参数,-perm -740
您将搜索所有具有至少 740 权限的文件,如下所示:
sudo find . -perm -740 -type f -exec chmod 740 {} \;
(您将把正好有 740 个文件也设置为 740,但这不是问题。)
有关详细信息,请参阅 如何使用 find 命令审核权限。