다음 사용자로 로그인한다고 가정해 보겠습니다 takpar
.
takpar@skyspace:/$
takpar
루트로서 다음 명령을 사용하여 그룹 구성원으로 추가했습니다 webdev
.
# usermod -a -G webdev takpar
하지만 아직 적용되지 않은 것 같습니다. 예를 들어 webdev
그룹 읽기 권한이 있는 디렉터리에 들어갈 수 없기 때문입니다.
400169 drwxr-x--- 3 webdev webdev 4.0K 2011-08-15 22:34 public_html
takpar@skyspace:/home/webdev/$ cd public_html/
bash: cd: public_html/: Permission denied
그런데 재부팅하고 나면 예상대로 접속이 됩니다. 이런 그룹 변경이 일상인데, 재부팅하지 않고도 적용할 수 있는 방법은 없을까요?
답변
현재 세션이 새 그룹을 인식하도록 할 방법이 없는 것 같습니다. 예를 들어 파일 관리자는 새 변경 사항을 처리할 수 없습니다. 하지만 다시 로그인하면 작업이 완료됩니다. 이 su
명령은 현재 세션의 임시 명령에도 작동합니다.
답변1
로컬 해결 방법: su yourself
재로그인을 사용하세요. 새 세션에서 귀하는 이 그룹의 구성원으로 간주됩니다.
현재 그룹 ID 변경(및 새 그룹 로그인)에 대한 매뉴얼 페이지 newgrp
도 흥미로울 수 있습니다.sg
webdev
현재 셸에서 그룹 ID(및 권한)를 사용 하려면 다음을 사용하세요.newgrp webdev
그룹 ID를 사용하여 명령을 시작하고 셸에서 현재 권한을 유지하려면 다음을 사용합니다.
sg webdev -c "command"
( 그룹
sg
과 유사su
하지만 시스템 데이터에 그룹의 구성원으로 나열되어 있으면 그룹 비밀번호 없이 작동합니다.)
답변2
.gpasswd
다음을 사용하여 그룹 takpar
에 추가할 수 있습니다 webdev
.
$ gpasswd -a <user> <group>
귀하의 경우에는 다음과 같습니다:
$ gpasswd -a takpar webdev
getent group {name}
다음 명령을 사용하여 그룹 멤버십을 확인할 수 있습니다 .
$ getent group webdev
webdev:x:1008:webdev,takpar
이는 와 동일해야 합니다 cat /etc/group | grep webdev
. 완성도를 높이기 위해 id
셸 세션의 출력은 다음과 같습니다.takpar
$ id takpar
uid=1007(takpar) gid=1007(takpar) groups=1007(takpar),1008(webdev)
답변3
id webdev
id
뭔가 잘못된 것 같습니다. 당신이 자신 에 대해 알고 싶은 것은 takpar
사실이 아닙니다 webdev
.
id
및 의 출력을 비교하면 id takpar
전자는 아직 변경 사항을 표시하지 않지만 후자는 변경 사항을 표시하는 것을 볼 수 있습니다. 왜? id
현재 프로세스의 그룹이 표시되기 때문이다 . 로그아웃했다가 다시 로그인하거나 새 터미널 창을 열면 재부팅하지 않고도 이미 변경 사항을 확인할 수 있습니다.