iは、次の行を持っています。私はrootとしてシェルスクリプトを実行する必要があるので、sudo filename.shとして実行するので、$ USERはその場合は自分のパスにrootになります。シェルスクリプトと私のシェルスクリプトではsudo
スクリプトを実行しているユーザーのもの、つまりルートの代わりにmikeにしたいと考えています。これを達成する方法はありますか?
はあなたがiは、次の行を持っています。私はrootとしてシェルスクリプトを実行する必要があるので、sudo filename.shとして実行するので、$ USERはその場合は自分のパスにrootになります。シェルスクリプトと私のシェルスクリプトではsudo
スクリプトを実行しているユーザーのもの、つまりルートの代わりにmikeにしたいと考えています。これを達成する方法はありますか?
はあなたがあなたが/home/$USER
を使用するを持っているくださいありがとう、または$HOME
は、トリックを行いますか! IIRCのsudo
は、$HOME
の値を上書きしません。
あなたがsu
代わりのsudo
を使用して喜んでいる場合は、ご使用の環境を維持しながらコマンドを実行するために
su -cp filename.sh
を行うことができます。
su?あなたのパスワードの代わりにrootのパスワードが必要なので、それはうんざりです。 –
suを使ってsuを実行していない場合 – smcameron
$ UIDを使用してみることもできます。$ UIDは、ユーザーの実際のID番号に設定し、それに基づいてパスワードデータベースから名前を取得する必要があります。
豚全体を調べて、ホームディレクトリをパスワードデータベースから取得することをお勧めします。 HOME = $(getent passwd $ SUDO_UID | cut -d:-f6) –
はい。 $ HOMEを使用する方が簡単です:) – neuro
環境を保護する必要がある場合は、sudoの-Eオプションを使用できます。しかし、いくつかの構成とセキュリティの政治が必要です... Chris JYによって提案された$ HOMEソリューションがより簡単なものとして適用されない場合に適用されます。
私の2セント
使用$SUDO_USER
(あなたが直接$USER
を使う、という場合示すように、その値を設定):
$ cat script.sh
#!/bin/bash
if [ "$SUDO_USER" != "" ]; then
USER=$SUDO_USER;
fi
export PATH=$PATH:/home/$USER/somedir
またはスクリプト(エラーチェックの最初のパラメータとして$USER
を使用してごまかしますその後
$ cat script.sh
#!/bin/bash
USER=$1
export PATH=$PATH:/home/$USER/somedir
:
012読者の練習)があります$ sudo ./script.sh $USER
または、$HOME
をChris Jester-Youngの提案に従って使用してください。あなたは "/ home /"プレフィックスを削除するためにbashを使うことができますが、それは醜いハックになります。
sudoは「ルート」ユーザーとは異なります。 sudo特権を持っているユーザーがあれば、そのユーザーは "root"というユーザーが使用できる管理者権限を持っていることを意味します。つまり、sudoを使用しても、ユーザーはrootに変更されません。
はい、sudo echo $ HOMEはrootホームではないユーザーホームを表示します – neuro