그룹 소유권 변경 – 함정

그룹 소유권 변경 – 함정

저는 사용자 user이고 기본 그룹은 입니다 user. 기본 그룹을 로 변경하면 primary_group내가 소유한 모든 파일이 갑자기 에 속하게 됩니다 primary_group.

이건 내 기대 이상이었다. 그룹이 user파일을 소유하고 있고 파일 소유권을 변경하지 않는 경우 그룹 소유권이 변경되는 것을 원하지 않습니다.

이와 관련된 다른 일반적인 함정은 무엇입니까?


편집됨

을 사용하여 기본 그룹을 변경했습니다 usermod -g primary_group user. 확인해 보니 정수 식별자가 변경되었습니다. 이는 단순한 이름 지정 문제가 아닙니다.

답변1

파일 소유권(사용자 및 그룹)은 다음을 기반으로 합니다.숫자이름이 없음

파일을 실행 하면 ls -n다음과 같은 숫자가 표시됩니다.

% ls -n $HOME/.profile
-rwx------ 1 500 500 2547 Mar  4 15:18 /home/sweh/.profile

Uid는 "500"이고 Gid는 "500"입니다. 이들은 파일의 실제 소유자 및 그룹 소유자입니다.

/etc/passwd이 숫자는 합계의 숫자와 일치합니다 /etc/group. 이것이름당신이 보는 것은 ls숫자를 찾는 것으로 이루어집니다.

따라서 그룹 이름을 변경하면 /etc/group결과에 ls새 이름이 표시됩니다.

답변2

GNU coreutils의 명령은 usermod -g다음에 설명된 대로 사용자 홈 디렉터리에 있는 파일의 gid도 변경합니다.맨페이지:

-g, --gid GROUP
    The group name or number of the user's new initial login group. The
    group must exist.

    Any file from the user's home directory owned by the previous
    primary group of the user will be owned by this new group.

    The group ownership of files outside of the user's home directory
    must be fixed manually.

strace-ing 이 usermod -g group user명령은 단순히 lchown(2)각 파일을 차례로 호출한다는 것을 나타냅니다. 이 기능은아니요usermod다른 구현( pw usermodFreeBSD의 구현 포함) 에 존재합니다 .

따라서 usermod -gLinux에서 이 명령을 사용하면 문제가 발생합니다. 단순히 사용자의 기본 그룹을 변경해도 해당 사용자가 소유한 모든 파일의 gid가 마술처럼 변경되지는 않습니다.

관련 정보