디렉토리의 chmod g+s가 무시되는 이유는 무엇입니까?

디렉토리의 chmod g+s가 무시되는 이유는 무엇입니까?

공유하려고 하는 git(실제로는 git-annex) 저장소가 있는데 그 중 일부는 몇 개의 디렉토리에 set-group-id 비트를 설정하는 것과 관련이 있습니다. 이것은 Debian GNU/Linux Stretch 상자의 ext4 파일 시스템에 있습니다. 이상한 이유로 chmod g+s DIRECTORY생략됨 ( chmod가독성을 위해 블록 주위에 빈 줄이 추가됨):

$ stat objects
  File: objects
  Size: 4096            Blocks: 8          IO Block: 4096   directory
Device: fd06h/64774d    Inode: 12353692    Links: 260
Access: (0775/drwxrwxr-x)  Uid: ( 1000/ anthony)   Gid: ( 1025/git-books)
Access: 2018-07-30 14:43:13.831641743 -0400
Modify: 2018-07-28 14:28:14.970667931 -0400
Change: 2018-07-30 14:46:38.179597449 -0400
 Birth: -

$ chmod g+s objects
$ echo $?
0

$ stat objects
  File: objects
  Size: 4096            Blocks: 8          IO Block: 4096   directory
Device: fd06h/64774d    Inode: 12353692    Links: 260
Access: (0775/drwxrwxr-x)  Uid: ( 1000/ anthony)   Gid: ( 1025/git-books)
Access: 2018-07-30 14:43:13.831641743 -0400
Modify: 2018-07-28 14:28:14.970667931 -0400
Change: 2018-07-30 14:50:43.355539381 -0400
 Birth: -

지금까지 확인한 내용은 다음과 같습니다.

  • nosuid작동을 방해할 수 있는 이상한 설치 옵션(예: )은 없는 것 같습니다 . fstab을 확인했는데 /proc/mounts, 표시됩니다./dev/mapper/slow-srv /srv ext4 rw,relatime,nobarrier,errors=remount-ro,stripe=384,data=ordered 0 0
  • 디렉토리에 이상한 ACL이 없는 것 같습니다 setfacl -b objects. 이렇게 한 후에도 chmod는 여전히 작동하지 않습니다.
  • straceon은 chmod시스템 호출이 성공했고 sgid 비트가 설정되었음을 보여줍니다.
    fchmodat(AT_FDCWD, "annex", 02775) = 0
  • 동일한 파일 시스템의 다른 디렉토리에는 set-group-id 비트가 설정되어 있습니다. 실제로 동일한 세션의 다른 git-annex 저장소에 이전에 몇 가지를 설정했습니다.

답변1

알고 보니 며칠 전에 그룹을 만들고 본인도 추가했지만,내 생각새로운 SSH 연결이지만 그렇지 않습니다. OpenSSH의 연결 재사용 기능( ControlMaster// 등) 을 사용하다 보니 ControlPath실제로 약 10일 전부터 연결에 로그인되어 있어서 내 세션(프로세스)에 새로운 그룹이 설정되지 않았습니다. 으로 이를 확인했습니다 id.

로그인 후 ssh -o ControlPath=none HOST내 세션에 그룹이 있고 유효한지 id확인했습니다 .git-bookschmod g+s

권한 거부 오류가 표시되지 않는 이유는 표준에서 이러한 동작을 요구하는 것 같습니다.파일용구현 시 다음 비트를 무시할 수 있습니다.

호출 프로세스에 적절한 권한이 없고 파일의 그룹 ID가 유효 그룹 ID 또는 보충 그룹 ID 중 하나와 일치하지 않고 파일이 일반 파일인 경우 비트 S_ISGID(성공적인 반환 후 set-group-ID 켜짐) 파일 모드에서 chmod()) 실행에서)를 지워야 합니다.

다른 구현 정의 제한 사항으로 인해 모드의 S_ISUID 및 S_ISGID 비트가 무시될 수 있습니다.

단일 Unix 사양 v4 2018 버전,chmod.http://pubs.opengroup.org/onlinepubs/9699919799/functions/chmod.html(등록이 필요할 수 있습니다).

아마도 오류를 반환하는 것은 정상이고 일관성이 없을 수도 있습니다 ☹.

관련 정보