だからシェルスクリプトを実行しようとしていますが、rootとして実行する必要があるため動作しません。問題は、私がrootとしてログインしたことです数注文する。
どうやってこれができますか?
root@polo-E15301:/home/polo/Downloads# echo $USER
polo <<<---- regular user
root@polo-E15301:/home/polo/Downloads# whoami
root
root@polo-E15301:/home/polo/Downloads# echo $UID
0
root@polo-E15301:/home/polo/Downloads#
答え1
具体的にルーティングするときsu
、su
いいえUSER
ログインシェルが要求されない限り設定されます。man su
説明する
以前のバージョンとの互換性のため、デフォルトでは
su
現在のディレクトリは変更されず、環境変数のみが設定されますHOME
(SHELL
プラスUSER
とLOGNAME
ターゲットの場合ユーザールートではない)混合環境によって引き起こされる副作用を避けるために、この--login
オプション(ショートカットの代わりに)を常に使用することをお勧めします。-
使用するとルートに設定されていることがsu --login
わかります。USER
シェルスクリプトでは、id
環境変数に依存するのではなく、同様のツールを使用してroot権限をテストする必要があります。また、見ることができます$USERおよび$USERNAME環境変数は誰が設定しますか?