2009-10-15 11 views
6

CentOSシステムでpythonを使用してユーザグループを作成したいと思います。私が「Pythonを使って」と言うと、私はos.systemのようなことをしたくないし、unixコマンドに新しいグループを作ることを望まないということです。私は、これを扱うPythonモジュールがあるかどうかを知りたいと思います。Pythonを使用してLinuxでユーザグループを作成する

ネットを検索しても、私が望むものはほとんど分かりませんでした。ただし、Pythonユーザーグループを除いて、私はこれを尋ねなければなりませんでした。

私はここでSOを検索してgrpモジュールについて学んだが、グループの作成については何も見つかりませんでした。

EDIT:これについて新しい質問をしなければならないかどうかは分かりませんが、新しく作成したグループに(既存の)ユーザーを追加する方法も知りたいと思います。

助けてください。 ありがとうございます。

+0

私はコマンドラインツールを実行するつもりだと思います... –

答えて

10

を行くことを選択した場合、私は/それを行うにはPythonモジュールの知っているが、/ etc/groupと/ etcませんgshadow形式はかなり標準的なので、ファイルを開くだけで、現在の内容を解析し、必要に応じて新しいグループを追加することができます。

あなたがこれを行うに行く前に、考えてみます。

  • あなたはすでにあなたのプログラムの複数のインスタンスがでグループを追加しようとすると何が起こるシステム
  • 上に存在するグループを追加しようとするとどうなりますか互換性のない変更がグループ形式に行われたとき、あなたのコードに何が起こる同時に
  • ラインの下のカップルのリリース
  • NIS、LDAP、Kerberosの、...

この種の問題に対処したくない場合は、サブプロセスモジュールを使用してgroupaddを実行してください。それはあなたの顧客のマシンを壊す可能性が少なくなります。

あなたができることは、独自のコードを書くことは、Pythonのgroupadd.c(shadowパッケージ内)でコードをラップすることよりも壊れにくく、そうすることができます。私はこれをあなたに買っているのと比べて大量に買っているとは思っていませんが、それは複雑さと脆弱性をあなたのビルドに加えるでしょう。

+1

すばらしい答えをありがとう。私がスクリプトを書いているユースケースはあなたが言及した問題のどれも持っていませんが、それらの '神聖な' Linuxファイルに私のエントリを追加する...私は有罪を感じさせます:)...私はちょうど行く必要がありますサブプロセスソリューションで再度、感謝します。 –

5

私はあなたのプログラムでコマンドラインプログラムを使用する必要があります。と思っています。何か問題が起きた場合にグループファイルを壊さないよう注意しています。

ファイル形式は何かを書くために非常に簡単ですが、自分はあなたがそのよう

+0

舞台裏でいくつかのC関数とライブラリが必要です明らかに)コマンドが使用している、私はそれらの周りのPythonラッパーのいくつかの種類かもしれないと期待している? –

1

グループを作成するためのライブラリ呼び出しはありません。これは本当にグループを作ることなんてないからです。 GIDは、単にプロセスまたはファイルに割り当てられた番号です。これらの数字はすべてすでに存在しています.GIDの使用を開始するために必要なことは何もありません。適切な権限を持っていれば、chown(2)を呼び出してファイルのGIDを任意の数に設定するか、setgid(2)を使って現在のプロセスのGIDを設定することができます(それよりも少し、補足IDなど)。

基本的なUnix/Linux/POSIXシステムでは、/ etc/groupのエントリでGIDに名前を付けることができますが、これはUnix/Linux/POSIXユーザランドツールが遵守している慣習に過ぎません。 Jack Lloydが述べたように、他のネットワークベースのディレクトリも存在します。

マニュアルページグループ(5)は、/ etc/groupファイルの形式を記述しますが、直接書き込むことはお勧めしません。あなたのディストリビューションには、異なる目的(固定システムグループ、動的システムグループ、ユーザーグループなど)の特定のスペースを予約するなど、無名GIDの割り当て方法に関するポリシーがあります。これらの数値スペースの範囲は、異なるディストリビューションによって異なります。これらのポリシーは、通常、sysadminが名前のないGIDを割り当てるために使用するコマンドラインツールでエンコードされます。

これは、グループをローカルに追加する最も良い方法は、コマンドラインツールを使用することです。

+0

"グループを作るということは本当にありません" ...それは間違いなく知りたいことです...すばらしい答えをありがとう...私はコマンドラインツールを実行するつもりです。 –

関連する問題