linuxで複数人がひとつのフォルダ内で編集するときはchmod g+s
linuxで複数人のユーザーがひとつのフォルダを共有して作業するときに、他人が作成したフォルダやファイルを見ることはできるが編集できない!ことありませんでしょうか??
そのため、私も毎回、rootでログインしなおして、権限を変えていましたが面倒になってきたので、何か方法がないかと思い、chmod g+s が便利だったので、その使い方をまとめます。
ユーザー作成後にapacheグループに所属させる
usera ユーザーを作成して、apacheグループに所属させます。$ adduser usera $ usermod -G apache usera $ ld usera uid=515(usera) gid=515(usera) groups=515(usera),48(apache)同様にuserb ユーザーを作成して、apacheグループに所属させます。
$ adduser userb $ usermod -G apache userb $ ld userb uid=516(userb) gid=516(userb) groups=516(userb),48(apache)
共通フォルダの権限をchmod g+sにして解決!
共通フォルダ /home/apache、/home/apache/www を作成して、所有者、グループ名をapache、apacheとします。$ mkdir /home/apache/ $ mkdir /home/apache/www $ cd /home $ find ./apache -type d -print | xargs chown -R apache.apache ← /home/apache 以下にあるフォルダのみを再帰的にapache.apacheにする最後に肝心の、chmod g+s を実行します。
$ chmod g+s /home/apache $ ls -al /home/apache drwxrwsr-x 7 apache apache /home/apache
実験をしてみる!
useraでログインして、作成した/home/apache/wwwフォルダ内でフォルダaaaを作成して、aaaフォルダ内にaaa.txtを作成してみます。 ファルダaaaの権限が「drwxrwsr-x」となっており、グループもuseraではなく「apache」であることを確認します。作成したaaa.txtのグループ所有者もuseraではなく「apache」になっていることも確認します。$ su - usera $ cd /home/apache/www $ mkdir aaa $ ls -al aaa drwxrwsr-x 31 usera apache 4096 Jun 24 09:23 aaa $ cd /home/apache/www/aaa $ touch aaa.txt $ ls -al aaa.txt -rw-rw-r-- 1 usera apache 0 Jun 24 09:24 aaa.txtg+s はそのグループの所有者が下位ファイルおよびフォルダ、下位の下位の・・・に継承されるための権限設定だと分かります。 userbでログインしなおして、userbでログインしなおしし、/home/apache/www/aaa/aaa.txtに対して、編集してみる。
$ exit ← useraをログアウトする $ su - userb ← userbにログインする $ cd /home/apache/www/aaa $ vi aaa.txt編集できました!