$ find . -type d -print0 | xargs -0 chmod g+s
パーミッションの再帰的変更をファイルとディレクトリに分けて行う - 学習する機械、学習しない人間 Next Generation
ディレクトリは全て755に、ファイルは全て644にしたい。そんなときはfindを使えばよい。
$ find . -type d | xargs chmod 755
$ find . -type f | xargs chmod 644
備忘録: [unix] スペースを含むファイル名をfindとxargsで使う方法
MacOSなど、普通にディレクトリなどにスペースを含んでいるシステムの場合
find と xargsをそのまま実行すると、スペースの前後で別々に
xargsの引数として処理されます。対応方法は、スペースを区切り文字にするのではなく
0(ゼロ、null)を区切り文字にします。$ find . -type f -print0 | xargs -0 ls
のように
find には、-print0
xargsには、-0
をオプションを与えるとうまく行きます。
確認
GUIDのついたファイルを探す
[/usr/bin:1]# find . -perm +2000 -ls
SGID
権限、パーミッション
ディレクトリにSGIDが設定された場合
そのディレクトリ以下で作成したファイルおよびディレクトリの所有グループは、自動的に親ディレクトリと同じになる
また、chmodコマンドなどでSGIDを指定する場合は「2000」もしくは「g+s」を使用します。
SUID / SGID
setuid / setgid
SUID とは、Set User ID の略で、SUID が設定されているコマンドやプログラムが実行されると、実行したユーザーではなく、そのファイルの所有者の権限で実行されたものとみなします。SUID を設定するには、chmod コマンドを実行する際に、ファイル所有者のアクセス権を設定する引数として、「s 」あるいは、「4000 」を指定します。なお、実行権限を元々持っていないファイルの場合(644 など)は、SUID ビットをOn にした際に大文字の S が表示されます。実行権限を持ったファイルの場合は、小文字の s が表示されます
「u+s」
SGID は、Set Group ID の略で、SGID が設定されているコマンドやプログラムが実行されると、実行したユーザー、もしくはグループではなく、そのファイルの所有グループの権限で実行されたものとみなします。SUID と異なる点は、アルファベットに g を用い、数値で表現する場合は 2000 になります。