特定のパラメーターセットでnmapを実行するpythonスクリプトを実行しています。ポイントはこれを自動化することですので、私は全くCLIと対話する必要はありません。スクリプトを実行するたびに、エラーメッセージが表示されます。
'You requested a scan type which requires root priveleges.\nQUITTING!\n'
私はコマンドの前に「Sudo」を置くことができることを理解していますが、私のスクリプトの目標はcliとまったく対話しないことです。ユーザーにスクリプトの所有権を与えましたが、それでも同じエラーが発生します。 Sudoコマンドを実行しなくても、毎回スーパーユーザーとしてnmapを実行できる方法はありますか?すべての助けに感謝します!
Nmapには、多くのことに対するルート権限が必要です(以下を参照)。このため、ユーザーがルートパスワードを指定せずに実行できるように、さまざまなスキーム(Sudo NOPASSWD、setuidなど)を使用するのは魅力的です。ただし、これは非常に危険です。これは、Nmapを使用して他のコマンドまたはシェルを起動するのは簡単だからです。例:nmap --script <(echo 'os.execute("/bin/sh")')
幸い、Nmapには Linux機能の実験的サポート があります。 NmapをCAP_NET_RAW
、CAP_NET_ADMIN
、およびCAP_NET_BIND_SERVICE
の機能とともにインストールすることにより、権限のないユーザーがより安全に実行できるようにすることができます。 Nmap自体はこれらの機能があることを検出できないため、UIDに関係なく--privileged
オプションを使用してそれらの使用を試みるよう通知する必要があります。詳細については、上記のリンクをご覧ください。
Nmapでは、以下を除くすべてに対してルート権限が必要です。
-sT
)-PS
)を除くホスト検出(「ping」)メソッド-sV
)1つの解決策は、その特定のコマンドをsudoers
ファイルに追加することです。
Cmnd_Alias NMAP = /path/to/nmap, /path/to/script
username ALL=(ALL:ALL) NOPASSWD: NMAP
この行に沿って何かを行うと、Sudo
コマンドをスクリプト化できますが、そのコマンドのパスワードを特に入力する必要はありません。スクリプト内のすべてがルートとして実行されるように、そのスクリプト/ユーザーコンボに対してのみ行うことを選択できます。または、具体的にnmap
コマンドに対して実行し、スクリプトに多くのSudo
エントリを含めることができます。
あなたの毒を選ぶ...