事象
Linuxでファイルの所属グループを変更したいが、Operation not permitted になって権限が足りずにできない。
chgrp www-data virtualhosts/prod/test.com chgrp: changing group of 'virtualhosts/prod/test.com': Operation not permitted
対応1:sudo をつける
sudo すればできるわけですが、sudo に頼るのも良くないですよね。
対応2:実行ユーザーが所属するグループを確認する。
chgrp を実行ユーザーが所属するグループにだけ、ファイルの所属グループを変更できます。
ユーザーが所属するグループ
たとえば、takuyaが以下の場合、www-dataに変更することはできない。
$ id takuya uid=1000(takuya) gid=1000(takuya) groups=1000(takuya),4(adm),24(cdrom),27(sudo),30(dip),46(plugdev)
上記の状態で chgrp www-dataするとパーミッションエラーになる。
ユーザーtakuyaが、www-dataに所属していれば、www-dataへ変更することができる。
www-dataグループにtakuyaが所属する
usermod -aG www-data takuya logout
usermodは一度ログアウトしないと反映されない。
パーミッションエラーにならない。
グループに所属していればエラーにならない。
chgrp www-data virtualhosts/prod/test.com ## エラーなく実行完了
たまに、新規インストールしたLinuxでユーザーのグループ設定をわすれて、パニクることがあるのでまとめておいた。