質問

私は実行している間に私のスクリプトの管理、権限を確認することができますか?

役に立ちましたか?

解決

Unixでは、あなたは OSを使用して、ルートであるかどうかを確認することができます。 の機能をGETUIDます:

os.getuid() == 0 and "root" or "not root"

他のヒント

きめ細かい権限コントロールの私達の日に「管理者 - 特権」の概念を定義するのは難しいとなってきています。あなたは、「伝統的な」アクセス制御モデルをUNIX上で実行されている(osモジュールで利用可能)実効ユーザIDを取得し、ルートに対することを確認している場合は(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
ユーザーがルート Unixの上にある、またはWindowsのAdministratorsグループのメンバーである場合は、

もちろん、この方法しか検出します。しかし、これは私の意見では、ほとんどの目的のために十分である。

これらは、WindowsのDOSベースのバージョンであり、権限のいずれかの概念を持っていないので、

はまた、これが2000以下のWindowsのバージョンと同様に、WindowsのMEに失敗することに注意します。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top