다시 시작하지 않고 새로 추가된 사용자 그룹에 변경 사항을 적용하려면 어떻게 해야 합니까? [복사]

다시 시작하지 않고 새로 추가된 사용자 그룹에 변경 사항을 적용하려면 어떻게 해야 합니까? [복사]

다음 사용자로 로그인한다고 가정해 보겠습니다 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현재 프로세스의 그룹이 표시되기 때문이다 . 로그아웃했다가 다시 로그인하거나 새 터미널 창을 열면 재부팅하지 않고도 이미 변경 사항을 확인할 수 있습니다.

관련 정보