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