ユーザーのプライマリグループを変更 - そのグループに新しいファイルを作成する

ユーザーのプライマリグループを変更 - そのグループに新しいファイルを作成する

私は、複数のユーザーにサーバー上の SSH アクセスを許可する環境を設定しています。ユーザーはすべて信頼されていますが、ファイルシステムのセグメントにまとめたいと考えています。次のようにユーザーを作成しました。

adduser username -ingroup groupname

これは十分に機能します。そのうちの 1 人としてログインすると、次のようにしてすべての正しい回答を得ることができます。

$id -r -u -n
username
$id -r -g -n
groupname

次のようにして、自分のユーザー アカウントのプライマリ グループを切り替えましたgroupname

$usermod myuser groupname

その後、ログアウトして再度ログインしました。グループがアクセスできるようにしたいファイルは、次の場所にあります。

$ls -l / | grep groupname
drwxr-xr-x  3 root     groupname    4.0K 2012-03-26 20:20 groupfiles
$cd /groupfiles
$ls -l 
drwxrwxr-x  2 root groupname    4.0K 2012-03-26 20:32 project

権限は設計によるもので、グループのメンバーはファイルやフォルダを変更することはできません/groupfilesが、追加、編集、削除は可能です。/groupfiles/project

私が抱えている問題は、これを行うと間違ったグループが取得されることです。

$touch test
$ls -l test
-rw-rw-r-- 1 myuser myuser 0 2012-03-26 20:58 test
$id -r -g -n
groupname

vim、touchなどで作成されたファイルが正しいグループを持つようにする必要があります。私はビットを認識していますnewgrp()setgidこれらはない私が探しているものです。これは私が作成した新しいユーザーに対しては正常に機能しますが、私のユーザーに対しては機能しません。何が起こったのかはわかりませんが、現在は正常に機能しています。この質問を、将来のいじくり回しをする人のためにここに残しておきます。

答え1

あなたが望む動作は だと思いますsudo usermod -g groupname myuser

注意: このコマンドは$HOME内のすべてのファイルのグループ所有権を変更しますが、home外のファイルは変更しません。元に戻したい場合があります。chgrp -R myuser $HOME

変更を有効にするには、ログオフして再度ログオンする必要があります。

「myuser」プライマリ グループを変更したくない場合は、newgrp を使用することをお勧めします。

sudo usermod -g admin bodhi

ssh localhost

touch file

newgrp bodhi
touch file2

ls -l file file2
-rw-r--r-- 1 bodhi admin 0 2012-03-26 19:28 file
-rw-r--r-- 1 bodhi bodhi 0 2012-03-26 19:29 file2

関連情報