実行中にスクリプトの管理者権限を確認するにはどうすればよいですか? Unixではスクリプトの管理者権限
答えて
あなたがos.getuid機能を使用して、ルートであるかどうかをチェックすることができます。
os.getuid() == 0 and "root" or "not root"
きめ細かい権限コントロールの私達の日に「管理者 - 特権」の概念を定義するのは難しいとなってきています。 UNIX上で "従来の"アクセス制御モデルを使用している場合、有効なユーザーID(osモジュールで利用可能)を取得し、root(0)と照合することで、探しているものになる可能性があります。システム上のファイルにアクセスするためにスクリプトに必要な権限が必要な場合は、os.access()を使用して十分な特権があるかどうかを調べることができます。
残念ながら、簡単で移植性の高い方法はありません。使用するセキュリティモデル、APIにアクセスして特権を照会して設定するために提供されたシステム、APIにアクセスするために使用できる適切なPythonモジュールを探す(またはおそらく自分自身を実装する)システムを見つけ出すか、定義する必要があります。
古典的な質問は、なぜあなたが知る必要がありますか?あなたのスクリプトが何をする必要があるのかを試み、「ちょうど」、失敗を適切に処理して処理したらどうでしょうか?あなたはちょうどあなたが管理者権限を必要とする特定のファイルへのアクセス権を持っているかどうかを確認しようとしている場合
、チェックする良い方法は、次のようになります。一方
import os
print os.access("/path/to/file", os.W_OK)
#replace W_OK with R_OK to test for read permissions
、あなたが本当にする必要がある場合ユーザーが管理者アカウントであるならば、あなたはまた、Windows 2000以降でこのコードを使用することができます知っている:
import ctypes
print ctypes.windll.shell32.IsUserAnAdmin()
そのため、ユーザーが管理者であるかどうかを確認するためのより良い、クロスプラットフォームな方法は次のとおりです。
import ctypes, os
try:
is_admin = os.getuid() == 0
except:
is_admin = ctypes.windll.shell32.IsUserAnAdmin()
print is_admin
もちろん、この方法では、ユーザーが root(UNIXの場合)、またはWindowsのAdministratorsグループのメンバであるかどうかだけを検出します。しかし、私の意見では、これはほとんどの目的には十分です。
DOSベースのバージョンのWindowsであり、アクセス許可の概念がないため、2000未満のWindowsおよびWindows MEではこれが失敗することに注意してください。
- 1. JavaFX System.setProperty管理者権限
- 2. 管理者権限c#/ vb
- 3. を実行し、他のコンピュータの管理者権限でPowerShellスクリプト
- 4. OS Xの管理者権限でスクリプトを実行する
- 5. Djangoの管理者権限へのアクセス
- 6. 管理者権限のないNSISインストーラ
- 7. 管理者権限のないSFML 1.6
- 8. Delphiの管理者権限D7 W7
- 9. easy_installを-U setuptoolsの管理者権限
- 10. 管理者権限のないWCFサーバー
- 11. vb.netの管理者権限を作成
- 12. AutoHotkeyスクリプトに管理者権限を追加する方法は?
- 13. 管理者権限を持つJavaプロジェクト
- 14. firebaseサーバ管理者権限で認証
- 15. WordPressの管理者が一部の管理者権限を失った
- 16. データアクセス/ユーザー権限の管理
- 17. 管理者権限のないアプリケーションの起動
- 18. 管理者権限のないサーバー上のリスト共有プリンタ
- 19. 管理者権限のないローカルネットワーク内のhttpListener
- 20. Macアプリケーションでの管理者権限への昇格
- 21. Magento 1.9.2.4管理者権限の役割とユーザーの問題
- 22. 管理者権限のないフェイスブックグループのデータを抽出する
- 23. 管理者権限を持つウィンドウ7のフォルダアクセスの問題
- 24. Java Projectの管理者権限のあるウィンドウ7
- 25. Symfony2ユーザ権限管理
- 26. 変更権限クラスタ管理
- 27. 管理されたHttpListenerとC++ネットワークライブラリ - 管理者権限が必要ですか?
- 28. WIX:*管理者権限を持つのCustomAction * *と*セッション
- 29. 管理者権限のないLinuxでmysqlサーバをインストール
- 30. HTAのバグレポートを停止する(管理者権限なし)
+1。すべての有効な考慮事項。実際には、失敗に取り組むだけで良い場合もあります。 – Stephan202