새로 생성된 모든 하위 디렉터리(및 하위 하위 디렉터리 등)에 g+s가 있는지 확인하는 방법은 무엇입니까?

새로 생성된 모든 하위 디렉터리(및 하위 하위 디렉터리 등)에 g+s가 있는지 확인하는 방법은 무엇입니까?

그룹이 이면 /some/dir실행 foo합니다.

chmod g+s /some/dir

...그러면 모든 어린이 /some/dir도 그룹을 갖게 됩니다 foo.

그러나 결정적으로 새로운 하위 디렉터리 /some/dir/subdir아니요있습니다 g+s(단, 방금 말했듯이 해당 그룹은 입니다 foo).

모든 하위 디렉터리가 /some/dir그룹뿐만 아니라 foo권한도 g+s상속받도록 하려면 어떻게 해야 합니까?

FWIW, 내 umask는 002이고 파일 시스템은 nfs이며 옵션 mount(rw,relatime,vers=3,rsize=20961,wsize=413177,namlen=255,hard‌​,proto=tcp,timeo=450‌​,retrans=2,sec=sys,m‌​ountaddr=xxx.xxx.xxx‌​.xxx,mountvers=3,mou‌​ntport=333,mountprot‌​o=udp,local_lock=non‌​e,addr=xxx.xxx.xxx.x‌​xx).

고쳐 쓰다: 나는 이제 혼란의 원인을 이해합니다.때때로디렉토리 그룹을 변경( 사용 chgrp)하면 이전에 활성화된 setgid 비트가 비활성화되는 효과가 있습니다. 예를 들어

% rm -rf /some/dir
% mkdir -p /some/dir
% chmod g+s /some/dir
% ls -ld /some/dir
drwxrwsr-x 2 jones jones 0 Nov  7 07:13 /some/dir
% chgrp foo /some/dir
% ls -ld /some/dir
drwxrwxr-x 2 jones jones 0 Nov  7 07:13 /some/dir

(setgid 비트는 결국 설정되지 않게 됩니다.)

내가 말했듯이 이것은 단지 발생합니다때때로. 예를 들어, 위와 동일한 순서를 반복하지만 chgrp아래에서 명령을 실행하면 sudo비트는 setgid끝에 설정된 상태로 유지됩니다.

권한에 대한 이러한 영향 chgrp에 실망했습니다 .

답변1

/some/dirsetgid 비트가 설정되면 새 하위 디렉터리 가하다새로 생성된 모든 자손이 적절한 그룹과 setgid 비트를 갖도록 이를 상속합니다.

setgid 비트는 를 사용하여 제거할 수 있습니다 chgrp.POSIX 라고

적절한 권한이 있는 프로세스에서 chgrp를 호출하지 않는 한, 일반 파일의 set-user-ID 및 set-group-ID 비트는 성공적으로 완료되면 다른 파일의 set-user-ID 및 set-group-ID 비트를 지워야 합니다. 유형이 삭제될 수 있습니다.

관련 정보