単一の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に簡単にインストールされるプログラムを使用して、およびを単一のコマンドchmodecho圧縮する方法はありますか?

部分的に、仮想マシンでsudo機能を使用して初期ユーザーとして実行できるシェルスクリプトを作成できるように、これを1つのコマンドに簡素化したいと思います。

それは次のとおりです。

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に設定してusersudoデフォルトではそうしないように設定されているシステムでも)、そのディレクトリのsh拡張を作成します~~user代わりに使用することもできます~

おすすめ記事