ユーザーをrootに変更し、シェルスクリプトから残りのコマンドをrootとして実行しました。
答え1
現在がゼロであることを確認しuid
、そうでない場合はスクリプトをrootとして再実行します。
[[ $UID = 0 ]] || exec sudo $0 "$@"
たとえば、スクリプトの2行目(後ろ"#!/bin/bash"
)を作成すると、要求されたアクションが実行されます。
元のユーザーが必要としなかった長いセクションが先頭にある場合は、ifステートメントを使用してこれを行います。
#!/bin/bash
if [[ $UID = 0 ]]
then
: do privileged stuff
else
: do unprivileged stuff
exec sudo $0 "$@"
fi
この$UID
値はbashにのみ適用されます(質問にタグが付けられているため使用されますbash
)。より移植性に優れたスクリプトはid
。
答え2
setuid ビットも使用できます。