このブログ投稿 で説明されているように、Subversionリポジトリと関連するWebサイトの作成の自動化に取り組んでいます。次のコマンドを実行するためにwww-dataユーザーにsuする部分の周りで問題が発生しています。
svnadmin create /svn/repository
スクリプトの最初に、スクリプトがルートまたはSudoとして実行されていることを確認するチェックがあり、その1つのコマンド以降はすべてルートとして実行する必要があります。その1つのコマンドをwww-dataとして実行し、ルートに戻って完了するための良い方法はありますか?
su - www-data -c 'svnadmin create /svn/repository'
rootによって実行されるスクリプト内。このコマンドのみがwww-dataユーザーによって実行されるようにします。
将来の視聴者向けに更新:
"This account is currently not available"
エラー、使用を検討してください:
su - www-data -s /bin/bash -c 'svnadmin create /svn/repository'
(@Petrの-s
フラグに対応するwww-data
ユーザーのログインポリシーなし)
'su'はおそらくパスワードを要求するものであり、www-dataにはパスワードがありません。コマンドSudo
をお勧めします:
Sudo -u www-data command
条件は、ユーザーがrootであるか、sudoersファイルで構成されている必要があることです
su
を使用:
su [options] [username]
The options which apply to the su command are:
-c, --command COMMAND
Specify a command that will be invoked by the Shell using its -c.
2つの可能なアプローチ:
1)Sudo
コマンド:
ほとんどの場合、Sudo
コマンドにアクセスできるため、解決策は次のとおりです。
Sudo -u target_user target_command
2)su
コマンド(Sudoがインストールされていない場合。Ex. Alpine-linux images
):
su - target_user -c 'target_command'
'このアカウントは現在利用できません'エラーを受け取った場合、ユーザーはログインしていません(シェルアクセス)有効なポリシー。その場合は、次の使用を検討してください。
su - target_user -s /bin/bash -c 'target_command'
(-s
ユーザーのログインポリシーに対応するためのwww-data
フラグに関する@Petrの貴重なコメントに基づく)