私は、複数のユーザーにサーバー上の 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