setgid를 잃지 않고 디렉토리의 권한을 어떻게 변경할 수 있습니까?

setgid를 잃지 않고 디렉토리의 권한을 어떻게 변경할 수 있습니까?

setgid 디렉토리에서 다른 사람이나 사용자의 권한을 변경하면 디렉토리의 setgid가 손실됩니다. 손실 없이 변경하는 방법은 무엇입니까? sudo는 옵션이 아닙니다. 가능합니까?

다음은 몇 가지 배경 정보입니다.

$ whoami
webmin
$ groups
webmin
$ echo $SHELL
/bin/bash
$ uname -srvm
Linux 2.6.38-12-server #51-Ubuntu SMP Wed Sep 28 16:07:08 UTC 2011 x86_64

여기에 예가 있습니다.

$ ls -la
drwxr-s--- 4 webmin www-data    4096 2011-11-03 10:59 .
drwxr-s--- 4 webmin www-data    4096 2011-10-26 15:53 ..
$ mkdir libraries
$ ls -ld libraries
drwxr-sr-x 2 webmin www-data    4096 2011-11-03 11:01 libraries
$ chmod o= libraries
$ ls -ld libraries
drwxr-x--- 2 webmin www-data    4096 2011-11-03 11:01 libraries
      ^
       `- The problem

디렉토리에 대한 사용자 권한을 수정하는 경우에도 동일한 일이 발생합니다.

다음도 실패합니다.

$ chmod g=rxs,o= libraries

===업데이트====

Kevin의 답변은 제가 생각했던 문제의 원인이 무엇인지 이해하는 데 도움이 되었습니다. 당연히 해당 파일에 할당된 그룹의 구성원이어야 합니다. 예를 들어

$ whoami
webmin
$ groups
webmin www-data      <---- Now we are in the www-data group.
$ mkdir t
$ ls -ld t
drwxr-sr-x 2 webmin www-data 4096 2011-11-03 12:03 t
$ chmod o= t
$ ls -ld t
drwxr-s--- 2 webmin www-data 4096 2011-11-03 12:03 t
      ^
       `- Yeah!

그렇다면 당신이 그룹의 구성원인 한 대답은 "예"이고, 그렇지 않으면 "아니오"라는 뜻인가요?

답변1

$ ls -ld testdir
drwxrwxrwx ... testdir
$ chmod 2750 testdir
$ ls -ld testdir
drwxr-s--- ... testdir

너가 원하는게 그거야?

편집: 시스템을 확인하고 o권한을 설정했거나 그룹을 변경해도 setgid 비트가 변경되지 않았습니다. 왜 그런 일이 당신에게 일어났는지 잘 모르겠습니다.

답변2

디렉토리에 할당된 그룹의 구성원이 아닌 경우 권한을 수정하면 디렉토리에 대한 setgid가 손실됩니다.

옵션

  1. 디렉토리가 생성된 후 디렉토리의 권한이 수정되는 것을 방지하려면 디렉토리를 생성하기 전에 umask를 변경할 수 있습니다. 이렇게 하면 해당 디렉토리의 setuid가 손실되지 않습니다. (이 답변의 끝 부분에 설명되어 있습니다.)

  2. 그룹 회원 되기 (필수 sudo)

    $ sudo usermod -a -G www-data webmin

  3. 변경 권한 사용sudo

    $ chmod g=rxs,o= libraries

마지막 두 개는 질문의 제약 조건을 위반하므로 답은 옵션 1입니다.

$ umask 0027
$ mkdir libraries
$ ls -ld libraries
drwxr-s--- 2 webmin www-data 4096 2011-11-03 12:03 libraries

관련 정보