setgid 디렉토리의 목적은 무엇입니까? 있지만 왜 설계되었는지 모르겠습니다.

setgid가 어떻게 작동하는지 알고 있지만 왜 설계되었는지 모르겠습니다. 어떤 문제가 해결되는지 보여줄 수있는 예가 있습니까?



답변

setgid 파일 / 이진은 분명히 유용하지는 않지만 디렉토리에 setgid 비트가 매우 유용하게 적용됩니다. 귀하가 서로 다른 작업 그룹의 일부라고 가정하고 각 작업 그룹에는 고유 한 유닉스 (권한) 그룹이 있습니다. 그런 다음 setgid 비트를 프로젝트 폴더에 놓고 새 파일을 만들 때 올바른 그룹 소유권이 적용되어 해당 프로젝트 그룹의 동료가 해당 파일에 액세스 할 수있게 하시겠습니까?


답변

주요 용도는 파일 트리의 그룹 소유자를 유지하는 것입니다.

[lockie@bubbles tmp]$ mkdir dir1 && touch dir1/file && mkdir dir1/dir
[lockie@bubbles tmp]$ mkdir dir2 && chgrp staff dir2 && chmod 2755 dir2 && touch dir2/file && mkdir dir2/dir
[lockie@bubbles tmp]$ ls -al dir1
total 32
drwxrwxr-x   3 lockie  lockie   4096 Dec 13 19:32 .
drwxrwxrwt 125 root root 20480 Dec 13 19:32 ..
drwxrwxr-x   2 lockie  lockie   4096 Dec 13 19:32 dir
-rw-rw-r--   1 lockie  lockie      0 Dec 13 19:32 file
[lockie@bubbles tmp]$ ls -al dir2
total 32
drwxr-sr-x   3 lockie  staff  4096 Dec 13 19:32 .
drwxrwxrwt 125 root root  20480 Dec 13 19:32 ..
drwxrwsr-x   2 lockie  staff  4096 Dec 13 19:32 dir  < note new dir is g+s, owned by "staff" group, so the setgid behaviour acts recursively
-rw-rw-r--   1 lockie  staff     0 Dec 13 19:32 file < note new file is owned by "staff" group
[lockie@bubbles tmp]$

이는 다른 사용자가 디렉토리 아래에서 파일 / 디렉토리를 작성 / 편집하는 환경에서 유용합니다. 모든 파일 / 디렉토리가 동일한 그룹을 공유하면 모든 사용자가 파일 / 디렉토리를 편집 / 변경할 수 있습니다 (허가가 허용됨) : 이는 상황을 피합니다. “xyz는 파일 abc를 소유하고 있으므로 편집 할 수 없습니다”와 같은

이런 방식으로 setgid를 사용하는 대신 grpid 파일 시스템 마운트 옵션이 있습니다.

맨 마운트에서 :

grpid 또는 bsdgroups / nogrpid 또는 sysvgroups

이 옵션은 새로 만든 파일이 어떤 그룹 ID를 가져 오는지를 정의합니다. grpid가 설정되면 그것이 생성 된 디렉토리의 그룹 ID를 취합니다. 그렇지 않으면 (디폴트 값) 디렉토리에 setgid 비트 세트가없는 경우 현재 프로세스의 fsgid를 가져옵니다.이 경우 상위 디렉토리에서 gid를 가져오고 디렉토리 자체 인 경우 setgid 비트 세트를 가져옵니다.

활성화되면, grpid 마운트 파일 시스템에서 작성된 파일 / 디렉토리도 상위 디렉토리 그룹을 상속합니다.

[lockie@bubbles ~]$ mount | grep /home
/dev/mapper/VolGroup00-home on /home type ext3 (rw,grpid)
[lockie@bubbles ~]$ mkdir dir3 && touch dir3/file && mkdir dir3/dir
[lockie@bubbles ~]$ ls -al dir3
total 12
drwxrwxr-x  3 lockie users 4096 Dec 13 19:37 .
drwxrwxr-x 12 lockie users 4096 Dec 13 19:37 ..
drwxrwxr-x  2 lockie users 4096 Dec 13 19:37 dir < inherited "users" group from parent dir
-rw-rw-r--  1 lockie users    0 Dec 13 19:37 file  < inherited "users" group from parent dir
[lockie@bubbles ~]$

grpid 옵션을 사용 하면 파일 시스템이 dir 권한에 관계없이 작동하기 때문에 인적 오류 가능성을 적절하게 줄입니다.