次のように実行するには、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以外のユーザーとしてスクリプトを実行し、sudo
rootに対する特権の昇格を使用します(rootとして実行したいコマンドの前に付くsudo
)。
または
2) root ユーザーとしてスクリプトを実行し、rootsu
以外のユーザーとして tor コマンドを実行します。su
コマンドを実行するユーザーと-c
実行するコマンドを指定するオプション。 .torを介して呼び出す場合は、「tor」コマンドをスクリプト自体に入れることをお勧めしますsu
。