对文件夹执行位,但不对文件执行位

对文件夹执行位,但不对文件执行位

我有一个名为 Movies 的文件夹,里面有 Movie1、Movie2 等子文件夹,以及该子目录中的电影。示例如下:

 Movies:
  Movie1
     film.whatever1
  Movie2
     film.whatever1
  Movie3
     film.whatever1
  Movie4
     film.whatever1
  Movie5
     film.whatever1

我希望目录的权限为 755,这样任何人都可以导航到 Movie1-5 文件夹(权限为 755 而不是 744 的唯一原因是,更改目录需要执行位)。但我希望所有 film.whatever1-5 文件都是只读的。我无论如何也想不出这是否可行。

我尝试使用大写 X 的 setfacl 命令来执行此操作,如下所示:

 setfacl -R -d -m u::rwx Movies
 setfacl -R -d -m g::r-X Movies
 setfacl -R -d -m o::r-X Movies

 setfacl -R -m u::rwx Movies
 setfacl -R -m g::r-X Movies
 setfacl -R -m o::r-X Movies

结果是它将文件夹和文件都改为可执行文件。这是一个非常烦人的问题,我需要解决。

答案1

您可以使用find选项对常规文件和目录运行不同的命令-type。这将对 中的所有内容递归运行./Movies

# all directories become 755 (rwx r-x r-x):
find ./Movies -type d -exec chmod 755 '{}' \;

# all files become 644 (rw- r-- r--):
find ./Movies -type f -exec chmod 644 '{}' \;

相关内容