단일 Unix 명령을 사용하여 파일을 만들고, 권한을 설정하고, 파일에 쓸 수 있습니까?

단일 Unix 명령을 사용하여 파일을 만들고, 권한을 설정하고, 파일에 쓸 수 있습니까?

제가 만들고 있는 일부 Linux VM에서 사용자 계정 생성 속도를 높이고 싶고 새 사용자 ~/.ssh/authorized_keys~/.ssh/authorized_keys2파일을 작성하는 프로세스를 단순화할 수 있는지 궁금합니다.

내 수동 프로세스는 대략 다음과 같습니다(새 사용자로 로그인).

ssh-keygen -t rsa -N "" -f ~/.ssh/id_rsa
touch ~/.ssh/authorized_keys
chmod go-rwx ~/.ssh/authorized_keys
echo '... me@machine' >> ~/.ssh/authorized_keys

touchBash 명령, 표준 GNU 명령 또는 Ubuntu에 쉽게 설치되는 프로그램을 사용하여 , chmod및 를 echo단일 명령으로 압축하는 방법이 있습니까 ?

부분적으로 가상 머신에서 sudo 기능을 사용하여 초기 사용자로 실행할 수 있는 셸 스크립트를 만들 수 있도록 이를 하나의 명령으로 단순화하고 싶습니다.

그것은 다음과 같습니다:

sudo su - me -c 'ssh-keygen -t rsa -N "" -f ~/.ssh/id_rsa'
echo '... me@machine' | sudo su - me -c 'xyz 0600 ~/.ssh/authorized_keys'

xyz한 번에 파일을 생성하고, 권한을 설정하고, 작성하는 가상 명령은 어디에 있습니까?

답변1

알아채다

touch ~/.ssh/authorized_keys
chmod go-rwx ~/.ssh/authorized_keys
echo '... me@machine' >> ~/.ssh/authorized_keys

어떠한 혜택도 제공하지 않습니다:

echo '... me@machine' >> ~/.ssh/authorized_keys
chmod go-rwx ~/.ssh/authorized_keys

권한 확인열리는파일을 읽거나 쓸 때가 아닙니다.

chmod따라서 콘텐츠를 추가하기 전이나 후에 하든 ​​상관없습니다. 이를 수행할 때까지 다른 사람들은 계속해서 파일을 열 수 있지만 chmod파일을 읽으려면 귀하가 콘텐츠를 추가할 때까지 기다려야 합니다.

여기에서는 파일이 처음부터 올바른 권한을 갖고 있는지 확인하려고 합니다.

sudo -Hu user sh -c '
  umask 077 && printf "%s\n" "$1" >> ~/.ssh/authorized_keys
' sh "$key user@host"

-H홈 디렉토리를 강제 $HOME로 설정하여 user( sudo기본적으로 그렇게 하지 않도록 구성된 시스템에서도) 해당 디렉토리에 대한 sh확장을 생성합니다 ~. ~user대신 사용할 수도 있습니다 ~.

답변2

아래 코드 줄을 사용하여 새로 생성된 계정을 기존 키로 채웁니다. 기존 파일의 내용을 추가하도록 쉽게 조정할 수 있습니다.

sudo -Hu user /bin/sh -ec 'umask 077; mkdir -p -- ~/.ssh; cat > ~/.ssh/authorized_keys' <<EOF
id-rsa AAAA...AA [email protected]
EOF

답변3

답변4

실제로 install여기에서 도움말을 찾을 수 있습니다.

install -m 600 /dev/null ~/.ssh/authorized_keys

touch및 의 조합을 대체합니다 chmod.

그런 다음

ssh-keygen -t rsa -N "" -f ~/.ssh/id_rsa
cat ~/.ssh/id_rsa.pub >>~/.ssh/authorized_keys

Authorized_keys에 키를 추가합니다. 필요한 곳에 추가하십시오 sudo.

관련 정보