%20%E3%82%92%20sudoer%20%E3%81%A8%E3%81%97%E3%81%A6%E8%A8%AD%E5%AE%9A%E3%81%97%E3%81%A6%E3%82%82%E6%A9%9F%E8%83%BD%E3%81%97%E3%81%AA%E3%81%84.png)
Raspberry Pi に fast-cgi 付きの lighttpd をインストールしました。ルート権限を必要とする Python スクリプトを実行すると、次のエラーが発生します。
RuntimeError: /dev/mem にアクセスできません。root として実行してみてください。トレースバック (最新の呼び出しが最後): ファイル "/var/www/index.py"、行 134、GPIO.setup(17, GPIO.OUT);#enable A RuntimeError: /dev/mem にアクセスできません。root として実行してみてください。
visudo と「sudo usermod -a -G sudo www-data」を使用して、www-data を sudoer として追加しましたが、機能しませんでした。lighttpd にルート権限を与えるにはどうすればよいですか? これは個人的なプロジェクトなので、セキュリティは重要ではありません。
答え1
lighttpd は sudo を使用しません。したがって、www-data を sudoers グループに追加しても役に立ちません。
設定ファイル内の Web ユーザーを www-data から root に変更する必要があります。
server.username = "root"
必要に応じて www-data のグループを離れることもできますが、必要に応じてこれを root に変更することもできます。
ただし、代わりに Python スクリプトから www-data として sudo を使用することもできます。必ず NOPASSWD を設定してください。
いずれにせよ、Web サーバーを として実行する(または任意のコマンドに対して任意のサーバーに切り替えるroot
機能を持つ) ことは、Web サーバーまたはそれが提供する Web アプリケーションのいずれかに脆弱性があると、システム全体が完全に危険にさらされる可能性があるため、非常に悪い習慣です。s
u
/dev/mem
ここでは、 で行う必要のある操作は、setuid root である専用ユーティリティ (または 経由で実行されるsudo
)、または Web サーバーによって呼び出される別のサービスによって実行されるようにすることが最も望ましいでしょう。