コマンドを実行し、メンバーに属する特定のグループ名を使用して実行したいのですが、そのグループは私のデフォルトグループではありません。したがって、生成されたすべてのファイルはこのグループに属します。そのようなコマンドがありますか?
そして後で修正してくださいchgrp
。
それから発見されたnewgrp
(各ログインセッションのデフォルトのデフォルトGIDを変更する)、しかしこれはサブシェルを生成します。したがって、オネライナーはnewgroup <groupname> && cmd
機能しません。そして後でシェルを閉じる必要があります。
どちらのアプローチもエラーが発生しやすいようです。
ベストアンサー1
このコマンドは、sg
この目的に使用できます。
引用するman sg
sg [-] [group [-c ] command]
このsg
コマンドはコマンドのように動作しますnewgrp
が、コマンドを受け入れます。このコマンドはシェルを使用して実行されます/bin/sh
。を実行する可能性のあるほとんどのシェルでは、複数のsg
単語コマンドを引用符で囲む必要があります。newgrp
との間のもう1つの違いは、sg
一部のシェルは、
newgrp
自分が作成したシェルの新しいインスタンスに自分自身を置き換える特別なタスクを実行することですnewgrp
。の場合、これは起こらないので、コマンドをsg
終了すると
sg
古いグループIDに戻ります。
bash
スクリプト内の複数のコマンドのGIDを変更するには、スクリプトを2つの部分に分割し、パラメータを使用して2番目のスクリプトを呼び出すか、無限の再帰を避けるために、スクリプトにいくつかのパラメータをsg
使用して独自の呼び出しを実行します。sg
Pythonでsetgit
システムコールを使用する他の方法があります。