내 서버에서 여러 사용자에게 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에 있는 모든 파일의 그룹 소유권을 변경하지만 집 외부에서는 변경하지 않습니다. 다시 변경하고 싶을 수도 있습니다.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