chmod g+w testfile
file()에 대한 권한을 변경 하고 실행하면 ls -l testfile
다음이 제공됩니다.
-rwxrwxr-x 1 user1 user1 0 2011-01-24 20:36 testfile
그런 다음 그룹에 사용자를 추가했습니다("/etc/그룹" 줄 user1:x:1000:user2
), user2로는 파일을 편집할 수 없습니다. 왜 이런 일이 발생합니까?
답변1
user2
로그아웃했다가 다시 로그인해야 합니다. 그룹 권한은 다음과 같이 작동합니다.
- 로그인하면 프로세스는
/etc/passwd
언급된 기본 그룹과 사용자의 모든 그룹에서 그룹 멤버십을 갖게 됩니다/etc/group
. (더 정확하게,pw_gid
필드는getpw(your_uid)
, 플러스모든 그룹~에귀하의 사용자는 명시적인 회원입니다./etc/passwd
및 외에도/etc/group
NIS 또는 LDAP와 같은 다른 유형의 사용자 데이터베이스에서 정보를 가져올 수도 있습니다. ) 주요 구성 요소가 프로세스가 됩니다.유효 그룹 ID다른 그룹이 자신의 그룹이 되는 동안보조 그룹 ID. - 프로세스가 다음과 같이 그룹의 구성원이 필요한 작업을 수행할 때파일에 액세스, 그룹은 프로세스의 유효 그룹 ID 또는 보조 그룹 ID 중 하나여야 합니다.
보시다시피, 사용자의 그룹 멤버십에 대한 변경 사항은 사용자가 로그인한 경우에만 적용됩니다. 실행 중인 프로세스의 경우 너무 늦습니다. 따라서 사용자는 로그아웃했다가 다시 로그인해야 합니다. 이것이 너무 번거롭다면 사용자는 별도의 세션에 로그인할 수 있습니다(예: 다른 콘솔에서 또는 ssh localhost
.
뒤에서는 프로세스만 수행할 수 있습니다.잃다권한(사용자 ID, 그룹 ID, 기능) 커널은 init
루트(시작 후 첫 번째 프로세스)로 실행되는 프로세스를 시작하며, 각 프로세스는 궁극적으로 해당 프로세스의 자손입니다. 프로세스 login
(또는 sshd
로그인하는 데스크톱 관리자의 일부)가 여전히 루트로 실행 중입니다. 그 작업의 일부는 루트 권한을 포기하고 올바른 사용자 및 그룹으로 전환하는 것입니다.
한 가지 예외가 있습니다. 실행setuid 또는 setgid프로그램. 프로그램은 추가 권한을 받습니다. 선택적으로 상위 프로세스 멤버십의 다양한 하위 집합과 setxid 실행 파일을 소유한 사용자 또는 그룹의 추가 멤버십에서 작동할 수 있습니다. 특히, setuid 루트 프로그램은 루트 권한을 가지므로 프로그램이 원하는 대로 모든 작업을 수행할 수 있습니다 su
² sudo
.
1
때때로 init(initrd, udev)에서 분기되지 않는 프로세스가 있지만 원칙은 동일합니다. 루트로 시작하고 시간이 지남에 따라 권한을 잃습니다.
²SELinux와 같은 다중 레벨 보안 프레임워크의 사용은 금지됩니다
.
답변2
user2를 로그아웃했다가 다시 로그인해야 할 수도 있습니다(또는 ssh를 통해 로그인하여 새 로그인 세션을 생성해 보세요). 출력을 확인하여 id --groups
사용자의 숫자 그룹 ID를 표시하십시오.
답변3
sudo su $(whoami)
본질적으로 동일한 해결 방법 ssh localhost
이지만 SSH 서버를 설치하지 않고도 사용할 수 있습니다.
루트가 있는 한. 하지만 방금 새 그룹을 추가하고 권한을 변경한 경우에는 작동할 수 있습니다.
답변4
어떤 경우에는 호스트에 ControlMaster ssh 명령을 사용하면 사용자 로그아웃이 도움이 되지 않습니다. 그룹에 계정을 추가한 후 동일한 ControlMaster 연결 내에서 로그아웃했다가 다시 로그인하면 세션에 여전히 새 구성원이 표시되지 않습니다. 마스터와의 연결을 강제로 끊어야 합니다.
ssh -O exit hostname
다시 로그인하기 전에