【chown】現在のログインユーザーで権限を設定

記事の概要

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

コメント

タイトルとURLをコピーしました