在 Linux 中设置权限等于或小于“0740”的方法

在 Linux 中设置权限等于或小于“0740”的方法

我希望每个用户主目录中的所有文件的权限都是 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 命令审核权限

相关内容