Изменить основную группу пользователя — создавать новые файлы в этой группе

Изменить основную группу пользователя — создавать новые файлы в этой группе

Я настраиваю среду, в которой я даю нескольким пользователям доступ SSH на моем сервере. Они все доверенные, но я хочу загнать их в сегмент файловой системы. Я создал пользователей следующим образом:

adduser username -ingroup groupname

что работает достаточно хорошо. Когда я вхожу в систему как один из них, я могу сделать это и получить все правильные ответы:

$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

Связанный контент