mkdirとchownの変数で明示的なユーザー名を変更する

mkdirとchownの変数で明示的なユーザー名を変更する

現在のユーザーの自宅にサブディレクトリを作成するためにusername変数とuser_home変数を使用し、新しいサブディレクトリの所有権を現在のユーザーに変更するには、次のコマンドで具体的にどのような変更が必要ですか?

現在、GitHub ubuntu-lastestランナーで使用されているコマンドは脆弱です。次のコマンドはユーザーの明示的な名前を使用するためです。

mkdir /home/runner/mysubdirectory/
sudo chown -R runner:runner /home/runner/mysubdirectory/

/home/runnerOPは、変数宣言を現在のユーザーのホームページに置き換える方法と、それをrunner:runner現在のユーザー名の変数表現に置き換える方法を尋ねました。

ベストアンサー1

次のことができます。

username=runner
sudo -Hu "$username" sh -c 'mkdir ~/mysubdirectory'

これはmkdirターゲットユーザー(およびそのユーザーのデフォルトのgid)としてシェルで実行されます。ここではそのユーザー$HOMEのホームディレクトリに設定されているため、そのユーザーに展開されます-H~

または、getent次を呼び出してユーザー情報を取得できます。

IFS=: read -r name x uid gid gecos home shell < <(
  getent -- passwd "$username") &&
  sudo install -o "$uid" -g "$gid" -d "$home/mysubdirectory"

おすすめ記事