web-dev-qa-db-ja.com

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

サーバー上で複数のユーザーに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ビットを認識しています。これらはnot私が探しているものです。これは、私が作成した新しいユーザーには問題なく機能しますが、 しかし、私のユーザーには機能しません。 何が起こったのかわかりませんが、今はうまく機能しています。将来のいじくり回し人のために、この質問をここに残しました。

6
Huckle

あなたが望む動作はSudo usermod -g groupname myuserであると推測しています。

注:このコマンドは、$ 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
12
Panther