web-dev-qa-db-ja.com

BASHスクリプト、単一コマンドのwww-dataへのsu

このブログ投稿 で説明されているように、Subversionリポジトリと関連するWebサイトの作成の自動化に取り組んでいます。次のコマンドを実行するためにwww-dataユーザーにsuする部分の周りで問題が発生しています。

svnadmin create /svn/repository

スクリプトの最初に、スクリプトがルートまたはSudoとして実行されていることを確認するチェックがあり、その1つのコマンド以降はすべてルートとして実行する必要があります。その1つのコマンドをwww-dataとして実行し、ルートに戻って完了するための良い方法はありますか?

26
Brendon Dugan

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ユーザーのログインポリシーなし)

24
johnshen64

'su'はおそらくパスワードを要求するものであり、www-dataにはパスワードがありません。コマンドSudoをお勧めします:

 Sudo -u www-data command

条件は、ユーザーがrootであるか、sudoersファイルで構成されている必要があることです

64
futbolsalas15

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.
3
MikeyB

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の貴重なコメントに基づく)

2
Iceman