他のユーザーでコマンドを実行する方法

他のユーザーでコマンドを実行する方法

コマンドを実行できますか?

  • パラメータは-最初に(ダッシュ)で始まります。/usr/bin/echo -n foo
  • 他のユーザーやグループでは、例えばapache:apache
  • コマンドの使用su
  • /sbin/nologinログインシェル?に設定されている場合

私は試した:

  • su -s "/usr/bin/echo" -g apache apache -n foo
    • display 失敗しますsu: invalid option -- 'n'。最初のパラメータがダッシュで始まらないようです。
  • su -c "/usr/bin/echo -n foo" -g apache apache
    • nologin: invalid option -- 'c'ログインシェルが-cうまくいかないと表示が失敗します。/sbin/nologin

答え1

su -s /bin/bash -c "/usr/bin/echo -n foo" -g apache apache
  • -s /bin/bashnologin を無視し、-cオプション値の解釈を許可します。
  • -c "/usr/bin/echo -n foo"ダッシュで始まる最初の引数を避けることができます。

答え2

スドが救いに来ます!

sudo -u <user> -g <group> -- echo -n foo

答え3

ユーザーのログインシェルがに設定されている場合、/sbin/nologinユーザーはログインできず、su -通常は機能しません。

ただし、su -m現在のユーザーの環境とログインシェルを維持することを選択できます。

su -m <user> -c "<command>"

たとえば、

su -m apache -c "echo hello; id"

印刷:

hello
uid=33(apache) gid=33(apache) groups=33(apache)

関連情報