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가 손실됩니다.
옵션
디렉토리가 생성된 후 디렉토리의 권한이 수정되는 것을 방지하려면 디렉토리를 생성하기 전에 umask를 변경할 수 있습니다. 이렇게 하면 해당 디렉토리의 setuid가 손실되지 않습니다. (이 답변의 끝 부분에 설명되어 있습니다.)
그룹 회원 되기 (필수
sudo
)$ sudo usermod -a -G www-data webmin
변경 권한 사용
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