Bashスクリプトでファイル権限を設定する

Bashスクリプトでファイル権限を設定する

スクリプトが思ったように動作しません。
すべてのrwx権限をxx5権限に変更するすべてのスクリプトを見つけることができますが、

#!/bin/bash
# the / makes find inclusive


for file in `find . -perm /007 `
do
permissions=`stat -c %a $file`
permissions=${permissions:0:2}5
echo $permissions $file
chmod $permissions $file
done



#find . -perm /007

私の意図は、少なくともいくつかのファイルを保護することです。

ベストアンサー1

chmod -R o-w .

書き込み権限が削除されます。他の人すべてのファイルを安全に処理してください。ただし、以下を含むすべてのファイルのctimeを更新します。他の人これ以上書き込み権限がありません。

GNUでは、chmod-cオプションを使用して更新が必要なファイルを表示できます。

$ chmod -cR o-w .
mode of `./a' changed from 0777 (rwxrwxrwx) to 0775 (rwxrwxr-x)

ただw削除したい場合他の人彼らがいる場所では、rwx次のことができます。

find . ! -type l -perm -7 -exec chmod o-w {} +

(詳細については-vvGNUまたはFreeBSDを追加してください)。chmodしかし、(特に世界で書くことができるファイルを扱っているので)悪い意図を持つ誰かがそこにあるすべてのディレクトリへの書き込みアクセス権を持っている可能性があり、その間に他のファイルを指すファイルを使用することができる競合状態があるという点で注意してください。代替ファイルを使用findしてこれを確認して実行すると、ファイルへの書き込み権限を削除して混乱を招く可能性があります(chmodたとえば、シンボリックリンクを考えてみてください)。/tmp

GNU構文を使用しているので、GNUであるstat可能性が高いです。 GNUは、GNUが出てくる以前からファイル属性を表示することができたので、両方は必要ありません。findfindfindstat

find . ! -type l -perm -7 -printf '%m %p\n' -exec chmod o-w {} +

おすすめ記事