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"

관련 정보