find + chmodでパーミッションの一括変更

Webサーバ上のファイルのパーミッション(アクセス権)を一括で変更したい。ということがよくある。

 

■一括で、public_html以下のファイルを644へ変更する

$ find public_html -type f -print | xargs chmod 644  

または、

$ find public_html -type f -exec chmod 644 {} \; 

 

■一括で、public_html以下のディレクトリを755へ変更する

$ find public_html -type d -print | xargs chmod 755  

 または、

$ find public_html -type d -exec chmod 755 {} \; 

 

■SGID(グループIDのs)をとる

$ ls -l
drwxr-sr-x   2 towns3   other        512 Oct 18 18:23 images
$ chmod g-s images

■SGID(グループIDのs)を一括でとる

drwxr-sr-xとなっているディレクトリを確認する。

find . -type d -perm -02000
find . -type d -perm -02000 -print | xargs -i ls -ld {}



drwxr-sr-x   2 apache   apache       512 Jan 27  2005 ./imeges
drwxr-sr-x   2 apache   apache      1024 Nov 13  2002 ./products

一括でsを外す。

find . -type d -perm -02000 -print | xargs -i chmod g-s {}