ルート以外のユーザーとして作曲家を実行したいです。だから私はメインライターの実行可能ファイルの名前をに変更しcomposer-call
、composer
。
#composer.sh
su nginx -c "composer-call ${@}"
今すぐ実行するとcomposer --version
機能しますが、より複雑なパラメータを渡している間にcomposer create-project drupal-composer/drupal-project:8.x-dev some-dir --stability dev --no-interaction
エラーが表示されます。
+ su nginx -c 'composer-call create-project' drupal-composer/drupal-project:8.x-dev some-dir --stability dev --no-interaction
su: unrecognized option: stability
アップデート1
以下のジェフの答えに基づいて彼の答えを試しましたが、別のエラーが発生しました。より良いソリューションを期待します。
composer-call: line 2: can't open ?php: no such file
composer-call: line 3: /bin: Permission denied
+ su nginx -- composer-call composer-call docker-php-entrypoint docker-php-ext-configure docker-php-ext-enable docker-php-ext-install docker-php-source drupal drush pear peardev pecl phar phar.phar php php-config phpdbg phpize This file is part of Composer.
su: must be suid to work properly
+ su nginx -- composer-call composer-call docker-php-entrypoint docker-php-ext-configure docker-php-ext-enable docker-php-ext-install docker-php-source drupal drush pear peardev pecl phar phar.phar php php-config phpdbg phpize
su: must be suid to work properly
composer-call: line 6: syntax error: unexpected word (expecting ")")
注:作曲家の呼び出しはPHP cliスクリプトです。
ベストアンサー1
追加の引数が解析されないように、ターゲットユーザーを区別する--
ために使用されるコマンド:su
#composer.sh
su nginx -- composer-call "${@}"
たとえば、
user1の作曲家。sh:
#!/bin/sh
set -x
su otheruser -- /home/otheruser/composer-call "$@"
/home/otheruser/composer-call:
#!/bin/sh
echo Hi, I am composer-call, with arguments:
printf '%s\n' "$@"
実行中:
./composer.sh create-project drupal-composer/drupal-project:8.x-dev some-dir --stability dev --no-interaction
+ su otheruser -- /home/otheruser/composer-call create-project drupal-composer/drupal-project:8.x-dev some-dir --stability dev --no-interaction
Password:
Hi, I am composer-call, with arguments:
create-project
drupal-composer/drupal-project:8.x-dev
some-dir
--stability
dev
--no-interaction