web-dev-qa-db-ja.com

「su」コマンドでユーザーのシェルを無視することは可能ですか?

私が行った場合

su - -c 'mkdir bin' user1

それから私は得る

su: /usr/bin/ksh: No such file or directory

ユーザーのシェルが/etc/passwdkshに設定されており、kshがインストールされていないためです。

質問

このような場合、ユーザーとしてコマンドを実行するにはどうすればよいですか?

9
Sandra

入れない場合は-の後にsuを入力すると、そのユーザーの環境は読み込まれませんが、コマンドはそのユーザーとして実行されます。


私はあなたの実際の問題を誤解しているようです。他の人が言ったように-sは、おそらく実際に必要なオプションです。

18
MDMarra

以下を使用できます。

su -s /bin/sh -c 'mkdir bin' user1

-s suのオプションは、使用するシェルを指定し、/ etc/passwdにあるものを上書きします。

-コマンドから。プロファイルをロードするだけでなく、おそらく作業ディレクトリがコマンドのユーザーのホームディレクトリに変更されるため、現在のディレクトリではなく、user1のホームディレクトリに「bin」を作成します。 。

8
freiheit

Suの-s /-Shellオプションを使用すると、ユーザー環境の他の部分を維持しながら、使用するシェルを選択できます。/bin/shはposixによって指定されているため、どこでも使用できるはずです。

5