LoginSignup
13
16

More than 5 years have passed since last update.

Linux: inotify-toolsでダウンロードしたファイルのパーミッションを自動で変更する

Last updated at Posted at 2016-11-14

以下のエントリでダウンロードしたファイルの実行権限を自動で変更する方法を質問されたのですが、知らなかったので調べてみました。
Linuxの権限確認と変更(超初心者向け)

inotify-tools

inotify-toolsを使うとディレクトリを監視するツールがあるようです。

インストール

sudo apt-get install inotify-tools

実践

色々調べた結果、任意のディレクトリ内に新しく作られたファイルのパーミッションを自動で変更するシェルを常時起動させることでダウンロードしたファイルの権限を自動で変更できるようになりました。

autopermission.shなど名前をつけたシェルを作成。



!/bin/bash

DIR="/home/user/ダウンロード" #ここを任意のディレクトリに変更

inotifywait -m --format "%e %f" "$DIR" | awk '$1 ~ "CREATE" { print $2; fflush() }' | 
while read file
do
    FILE="${DIR}"/"${file}"
    chmod ugo+rwx "${FILE}" # ここで付与する権限を設定
done

起動します。

$ sh ./autochangepermission.sh 
Setting up watches.
Watches established.

試しにtouchで新しくファイルを作って
touch ~/ダウンロード/test.sh
確認します。


$ ll ./ダウンロード/* | grep test
-rwxrwxrwx  1 user user         0 11月 15 00:00 ./ダウンロード/test.sh*

ちゃんと777になっている。。

本題のダウンロードした際にパーミッションが変更されるのか検証してみます。react.jsをダウンロードしてみます。
まずは先ほどのシェルを起動せずにダウンロード
wget https://unpkg.com/react@15/dist/react.js

確認してみます。


$ ll | grep react.js 
-rw-rw-rw-   1 user user    701412 11月 15 00:21 react.js

パーミッションは666となっています。

次に先ほどのシェルを起動させておいてダウンロードしてみます。


$ sh ./autochangepermission.sh 
Setting up watches.
Watches established.

で起動させておいて別タブで
wget https://unpkg.com/react@15/dist/react.js
を実行して確認してみます。


$ ll | grep react.js
-rwxrwxrwx   1 user user    701412 11月 15 00:26 react.js*

ちゃんとパーミッションが自動で変更されています。

まとめ

  • 任意のディレクトリにて実行権限を制限したい時には便利かもしれません。
  • シェルを起動し続けなければならないのが微妙・・・
  • inotify-toolsは他にも応用できそう。ファイル更新したら自動でサーバー再起動とか使えそう。近々やってみよう。

以上になります。
最後までお読みいただきありがとうございました。

参考

参考にさせていただきました。ありがとうございました。
http://qiita.com/stc1988/items/464410382f8425681c20
https://orebibou.com/2015/04/linuxでファイル・ディレクトリ監視を行う『inotify』/

13
16
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
13
16