記事の概要
backend というディレクトリの権限を現在のログインユーザーに設定しようとしたところ、
sudo chown -R $USER:$USER backendというコマンドを叩くと
chown: username: illegal group name というエラーが返ってきました。
こちらは$USER に入っている値が「存在しないグループ名」として認識されたために出ているらしいです。
結果のコマンド
最終的には以下のコマンドでうまくいきました。
sudo chown -R $(id -un):$(id -gn) backend解説
原因
sudo chown -R $USER:$USER backendは、現在のユーザー名を使って
sudo chown -R ユーザー名:グループ名 backendという形になりますが、
$USERが有効なグループ名として存在しない- または
$USERが空になっている(たとえばsudo suでルートになった後など)
などが原因でエラーが起きています。
確認方法
1. $USER の中身を確認する
echo $USER私はこちらは正しくユーザー名が表示されました。
2. 対応するグループ名が存在するか確認
getent group $USERこちらで出力がない場合、$USER と同じ名前のグループが存在しない = illegal group name の原因になります。
私はこちらが原因でした。
解決方法
sudo chown -R $(id -un):$(id -gn) backendこちらのコマンドの意味は、以下のようになっています。
$(id -un)
id:ユーザー情報を取得するコマンドu:ユーザーID(UID)n:「そのUIDに対応する名前を表示」
つまり id -un は「現在のユーザー名」を返します。
$(id -gn)
id:ユーザー情報を取得するコマンドg:グループID(GID)n:「そのGIDに対応するグループ名を表示」
つまり「現在のユーザーのプライマリグループ名」を返します。
上記の内容から、こちらのコマンドは ”backend ディレクトリとその中のすべてのファイル・フォルダの所有者とグループを「現在のログインユーザー」に変更する”という意味になります。

コメント