記事の概要
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
ディレクトリとその中のすべてのファイル・フォルダの所有者とグループを「現在のログインユーザー」に変更する”という意味になります。
コメント