以下のエントリでダウンロードしたファイルの実行権限を自動で変更する方法を質問されたのですが、知らなかったので調べてみました。
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』/