すべてのDebianベースのLinuxディストリビューションは、システムですべての操作を実行できるユーザーとしてsudoを使用しますか?

すべてのDebianベースのLinuxディストリビューションは、システムですべての操作を実行できるユーザーとしてsudoを使用しますか?

sudo特にDebianバージョン9または10用のNodejsスクリプトを作成していますが、rootと同じ権限を持つユーザーとして実行する必要があります。サンプルコードは次のとおりです。

exec('iptables -S',
    function (err, stdout, stderr) {
        resolve(stdout)
        if (err !== null) {
          reject(err.toString('utf8'));
        }
    })

だから私たちの質問は、すべてのDebianベースのLinuxディストリビューションがsudoを使用しているということです。もしそうなら、ケースは終了しました。しかし、答えが「いいえ」の場合、Debianディストリビューションに常に存在するが使用されていない他のユーザーグループまたは他のユーザーがこのコマンドを使用して実行できるようにする他のオプションは何ですかsudo

ベストアンサー1

0この種の問題を処理する最も一般的な方法は、プログラムがrootユーザーのユーザーIDである有効なUIDを持つユーザーによって実行されていることを確認することです。たとえば、rootとしてのみ実行できるシェルスクリプトを作成する場合は、次のようにします。

#!/bin/sh
uid=$(id -u)
if [ $uid != 0 ]; then
    echo "This must be run as root!"
    exit
else
    echo "You are root, proceed!"
fi

(実際にシェルスクリプトを作成する場合は、その$UID変数のみを使用しますが、Node.jsではその変数が適用されないか複雑である可能性があるため、id -u代わりに使用しています。)

スクリプトを別の方法で実行すると、次のようになります。

$ foo.sh
This must be run as root!

$ sudo foo.sh
You are root, proceed!

$ sudo -i ## open a root shell
# ~terdon/scripts/foo.sh
You are root, proceed!

つまり、忘れてくださいsudo(いいえ、Debianシステムに常にインストールされることを100%確信できません。Debian に sudo がデフォルトでインストールされないのはなぜですか?)単にユーザーIDを確認し、そうでない場合は終了してくださいroot。 rootとして実行する必要があることをユーザーに知らせるエラーメッセージを書くと、それはすべてです。これを自動化する必要がある場合は、sudoパスワードを手動で入力する必要があるため、機能しません。

おすすめ記事