默认对特定目录下创建的所有文件的执行权限

Sev*_*Tux 4 permissions scripts directory

我想知道是否有任何方法可以为默认情况下在特定目录下创建的所有文件提供执行权限。

IE,

如果我foo.sh在目录下创建一个文件fooscripts,默认情况下它应该具有执行权限。但是如果我在外面创建相同的文件fooscripts应该像往常一样。

Jac*_*ijm 5

使用 inotifywait

如前所述,您可以使用inotify-tools( inotifywait) 来查看特定目录的更改,例如通过下面的脚本,然后以递归方式设置新文件可执行。

该脚本使用inotifywait-command,它由特定事件触发,由-e-option设置。幸运的是,该命令可以与多种事件类型结合使用。
由于您希望目录中的文件可执行,因此在脚本中设置了两个事件:

-e move
Run Code Online (Sandbox Code Playgroud)

这将注意到文件移动到目录中,以及

-e create
Run Code Online (Sandbox Code Playgroud)

这将注意到在目录中创建的新文件。

此外,选项:

-m -r 
Run Code Online (Sandbox Code Playgroud)

是使命令无限期地运行(“监视”)并在目录中递归运行,同时:

--format '%w%f'
Run Code Online (Sandbox Code Playgroud)

输出目录(文件路径,%w)加上%f引起事件的文件名()。


inotifywait可以在此处找到有关 选项的更多信息,或者一如既往地在man inotifywait

剧本

-e move
Run Code Online (Sandbox Code Playgroud)

如何使用

  1. 您可能必须先安装inotify-tools

    sudo apt-get install inotify-tools
    
    Run Code Online (Sandbox Code Playgroud)
  2. 将脚本复制到一个空文件中,另存为 set_executable.sh

  3. 在脚本的头部,设置目标文件夹的路径:

    -e create
    
    Run Code Online (Sandbox Code Playgroud)

    ...并从终端测试运行脚本。

  4. 如果一切正常,将脚本添加到启动应用程序:Dash > 启动应用程序 > 添加。

笔记

请注意,notifywait作用于更改(事件)。这意味着在脚本运行之前添加或创建的文件不会受到影响。也不会重新设置文件,可执行文件,如果你手工和故意设置它们被执行,而他们是有针对性的目录中。