特定のスクリプト行がrootとして実行されるのを防ぎます

特定のスクリプト行がrootとして実行されるのを防ぎます

次のように実行するには、root権限を必要とするシェルスクリプトを作成するとします。

#!/bin/sh
ip -s -s neigh flush all
ufw enable

特定のコード行がrootとして実行されるのを防ぐ方法、つまりTORブラウザを起動するために上記のスクリプトに行を追加するとします。

#!/bin/sh
ip -s -s neigh flush all
ufw enable
sh -c '"/home/back/Downloads/tor-browser_en-US/Browser/start-tor-browser" --detach || ([ !  -x "/home/back/Downloads/tor-browser_en-US/Browser/start-tor-browser" ] && "$(dirname "$*")"/Browser/start-tor-browser --detach)' dummy %k

TORは常にroot以外のモードで実行されるため、Torがroot以外のユーザーとして実行され、残りのスクリプトがrootユーザーとして実行されるようにするには、上記のスクリプトで何を変更する必要がありますか?

答え1

使用sudo:

#!/bin/sh
ip -s -s neigh flush all
ufw enable
sudo -Hu username sh -c '"/home/back/Downloads/tor-browser_en-US/Browser/start-tor-browser" --detach || ([ !  -x "/home/back/Downloads/tor-browser_en-US/Browser/start-tor-browser" ] && "$(dirname "$*")"/Browser/start-tor-browser --detach)' dummy %k
  • -H$HOME環境変数をターゲットユーザーのホームディレクトリに設定します。
  • -u: 次の代わりに、指定されたターゲット・ユーザーでコマンドを実行します。root
  • username: 引数は、ターゲット・-uユーザーのユーザー名を指定します。

答え2

この問題を解決する方法は2つあります。

1)root以外のユーザーとしてスクリプトを実行し、sudorootに対する特権の昇格を使用します(rootとして実行したいコマンドの前に付くsudo)。

または

2) root ユーザーとしてスクリプトを実行し、rootsu以外のユーザーとして tor コマンドを実行します。suコマンドを実行するユーザーと-c実行するコマンドを指定するオプション。 .torを介して呼び出す場合は、「tor」コマンドをスクリプト自体に入れることをお勧めしますsu

関連情報