私はこれに答えられると思います。
だから私は2番目の方法を使うべきですか?
ここで問題が発生する理由はありません。これが理由です。
ニーズをrootとして実行することを唯一のコマンドが存在する場合、runなどあなたのプログラムrootやsudo理由はsudo、スクリプト内は長い道です。プログラマーが怠惰であることを忘れましたか?
あなたは多くのコマンドが必要な場合runなどroot、次にとしてそれを実行しますrootかsudo。
sudoを使用してスクリプトを実行するときに、スーパーユーザー特権を必要としないコマンドにスーパーユーザー特権を与える問題を回避するために、セキュリティをどのように改善できますか?
他のユーザーがrunあなたのプログラムを必要とする場合sudo、それらsudoは多くのカスタマイズが可能であり、あなたのニーズを満たします。
以下に例を示しsudoます。
visudosudoersファイルを編集するときは常に使用する.....
kate ALL=(ALL) NOPASSWD: /usr/local/bin/script ARG1 ARG2
sudo プログラム/スクリプト内のユーザーを変更するのにも最適です。これは私のスクリプトの1つからの行です。
sudo -i -u "$user" user="$user" CURRENTDIR="$CURRENTDIR" BASHRC="$BASHRC" bash <<'EOF'
「スクリプトが適切な権限で実行されていて、sudoをまったく呼び出さないかどうかをスクリプトが検出する」と書くにはどうすればよいですか?
https://www.cyberciti.biz/tips/shell-root-user-check-script.html
how-do-i-determine-if-a-shell-script-is-running-with-root-permissions
bash/sh:
#!/bin/bash
# (Use #!/bin/sh for sh)
if [ `id -u` = 0 ]
then
echo "I AM ROOT, HEAR ME ROAR"
fi
csh:
#!/bin/csh
if ( `id -u` == "0" )
then
echo "I AM ROOT, HEAR ME ROAR"
endif
#!/bin/bash
if [[ $EUID -ne 0 ]]; then
echo "You must be a root user" 2>&1
exit 1
else
mount /dev/sdb1 /mnt/disk2
fi
紳士@terdonからのリクエストにより編集:
このようにスクリプトを考えてみてください。
公開スクリプトですか(使用する人以外の人)スクリプトは何をしますか?時間を教えてくれますか?それとも200システムのiptablesを更新しますか?あなただけが使用する場合、それは仕事/専門家関連ですか、それとも個人使用ですか?
ユーザーグループが何で構成されているかを事前に知る必要があるだけです。
writtenそれでも管理者に譲渡または販売する場合は、それでも、なぜscript実行を許可すべきではないのですrootか?それはどんな害を及ぼすことができますか?
実際のスクリプト/プログラムは特権ユーザーとして頻繁に実行され、誰もそれが問題ではないと述べていませんが、プログラマー、ほとんどが私のような初心者がこれらのことについて話すとき、それは本当のセキュリティの脅威です.....参照することはエレガントではありませんが、一部の人々はあなたが持っているコントロールsystemとあなたのコードを見るということです...あなたが使用するよりも多くのアクセス許可にファイルを設定していますか?ロジックか、才能のあるプログラマーがコードの危険性を一目で見ようとしているのでしょうか?
あなたの場合、code needs rootを使用しsudo、そして多くの場合、それを実行するだけでroot.......私の答えはここで終わりですphew
sudoデフォルトの資格情報キャッシュがあると思いました。これはプラットフォームで無効になっていますか?