답변:
chmod g+s .;
이 명령은 현재 디렉토리에서로 작성된 그룹 ID (setgid)를 설정합니다 .
.
이는 현재 디렉토리 내에 작성된 모든 새 파일 및 서브 디렉토리가 파일을 작성한 사용자의 기본 그룹 ID가 아니라 디렉토리의 그룹 ID를 상속 함을 의미 합니다. 이것은 현재 디렉토리에 생성 된 새로운 하위 디렉토리에도 전달됩니다.
g+s
파일의 그룹 ID에는 영향을 주지만 소유자 ID에는 영향을 미치지 않습니다.
이것은 새로 만든 파일 에만 적용됩니다 . 디렉토리로 이동 된 파일 ( mv
)은 setgid 설정의 영향을받지 않습니다. 로 복사 된 파일 cp -p
도 영향을받지 않습니다.
touch un;
chgrp canard .;
chmod g+s .;
touch deux ;
이 경우 deux
그룹에 속 canard
하지만 un
그룹을 만드는 사용자 그룹에 속합니다.
달리 c
또는 perl
온을 다음과 같은 다른 쉘 명령이있는 경우, 쉘 명령은 세미콜론 다음에 할 필요가 같은 명령 줄. 따라서 다음 명령 행을 고려하십시오.
chgrp canard .; chmod g+s .;
마지막 세미콜론은 불필요하며 제거 할 수 있습니다.
chgrp canard .; chmod g+s .
또한 두 명령을 별도의 줄에 배치하면 나머지 세미콜론이 필요하지 않습니다.
chgrp canard .
chmod g+s .
cp -p
setgid 설정을 무시 한다는 것을 명확히하기 위해 답변을 업데이트했습니다 .
cp -p
setgid 설정을 무시합니까? 존재하는 모든 단일 유닉스 구현에서? POSIX에 따르면 cp -p에서 사용자 ID 또는 그룹 ID를 복사하지 못하면 진단 메시지가 표시되는지 여부는 지정되지 않았습니다. 그러나 해당 상황에서 S_SUID 및 S_SGID 비트를 각각 지워야합니다 (예 : 파일이 setuid bob이지만 bob의 소유권을 복사하여 파일을 janet이 소유하도록 복사 할 수없는 경우 setuid로 설정하지 마십시오) janet.)
cp -p
setgid 설정을 무시합니까?" POSIX 사양에 따르면, 그것이해야 할 일입니다. 내가 사용한 모든 유닉스 시스템에서 그렇게합니다. 그룹 ID 를 복제 할 수없는 경우 보안을 보호하기 위해 수행 할 작업과 관련하여 사양의 일부를 인용했습니다 . 그런 "할 수없는"상황에 처한 적이 없습니다.
chmod 명령을 사용하여 파일 권한을 변경할 수 있습니다. Unix에서 파일에 대해 다른 유형의 액세스 권한을 가진 사람을 설정하는 파일 권한은 액세스 클래스와 액세스 유형으로 지정됩니다. 액세스 등급은 사용자 그룹이며 각각 특정 액세스 유형이 할당 될 수 있습니다
옵션 g + s는 다음과 같습니다.
g-파일 그룹의 다른 사용자가 가지고있는 권한
s-실행시 사용자 또는 그룹 ID 설정
다음은 샘플 사용법입니다.
chmod =rwx,g+s filename
(모든 사람이 특정 파일을 읽고 쓰고 실행하고 설정된 그룹 ID를 켤 수 있음)
파일의 권한을 설정 / 수정하려면 chmod 프로그램을 사용해야합니다. 물론 파일 소유자 만 chmod를 사용하여 파일의 권한을 변경할 수 있습니다. chmod의 구문은 다음과 같습니다. chmod [options] mode file (s) 'mode'부분은 인수로 뒤 따르는 파일에 대한 새로운 권한을 지정합니다. 모드는 어떤 사용자의 권한을 변경하고 나중에 어떤 액세스 유형을 변경해야하는지 지정합니다. 예를 들어 : chmod ax socktest.pl
즉, 모든 사용자에 대해 실행 비트를 지워야합니다 (-). (소유자, 그룹 및 기타 국가) 권한은 변경으로 인해 영향을받는 사용자를 지정하는 문자로 시작하며 다음 중 하나 일 수 있습니다.
u the owner user
g the owner group
o others (neither u, nor g)
a all users
그 뒤에 + (set bit) 또는-(clear bit)와 변경해야 할 비트에 해당하는 문자로 구성된 변경 명령이 이어집니다. 몇 가지 예를 보자.
$ ls -l socktest.pl
-rwxr-xr-x 1 nick users 1874 Jan 19 10:23 socktest.pl*
$ chmod a-x socktest.pl
$ ls -l socktest.pl
-rw-r--r-- 1 nick users 1874 Jan 19 10:23 socktest.pl
$ chmod g+w socktest.pl
$ ls -l socktest.pl
-rw-rw-r-- 1 nick users 1874 Jan 19 10:23 socktest.pl
$ chmod ug+x socktest.pl
$ ls -l socktest.pl
-rwxrwxr-- 1 nick users 1874 Jan 19 10:23 socktest.pl*
$ chmod ug-wx socktest.pl
$ ls -l socktest.pl
-r--r--r-- 1 nick users 1874 Jan 19 10:23 socktest.pl
이상한 숫자 ... chmod 755 somefile 같은 것들이 생겼을 것입니다. 물론 이것이 무엇인지 궁금 할 것입니다. 문제는이 예제에서와 같이 하나의 숫자를 사용하여 파일의 전체 권한 패턴을 한 번에 변경할 수 있다는 것입니다. 모든 모드에는 해당 코드 번호가 있으며, 어떤 모드에 어떤 숫자가 해당되는지 알아내는 매우 간단한 방법이 있습니다. 모드 번호의 3 자리 숫자 중 하나는 3 개의 권한 3 자리 중 하나에 해당합니다. (u, g 및 o) 삼중 항의 모든 권한 비트는 값에 해당합니다 : r의 경우 4, w의 경우 2, x의 경우 1 권한 비트 인 경우 권한 트리플렛 수에이 값을 추가합니다. 지워지면 아무것도 추가하지 않습니다. (어떤 사람들은 실제로
당신을위한 삼중 항 :
rwx => 4 + 2 + 1 =
7
g의 삼중 항 :
r-x => 4 + 0 + 1 =
5
o에 대한 삼중 항 :
r-x => 4 + 0 + 1 =
5
어느 것이 :
755
따라서 755는 '다른 사람들이이 파일을 읽거나 실행해도 괜찮지 만 수정할 수 있어야합니다'라고 말하는 간결한 방법이며 777은 '모든 사람이이 파일에 대한 모든 액세스 권한을 갖습니다'
Linux에서 ext에 대한 기본 마운트 옵션 중 하나? fs는 멍청한 | sysvgroups '. 따라서 첫 번째 터치 un은 fsgid = egid 인 작성 프로세스의 그룹 ID가 fsgid 인 파일을 작성합니다.
chmod g + s., 후속 파일 / 디렉토리 작성은 상위 폴더에서 그룹 ID를 상속하며 작성된 항목이 디렉토리 인 경우 g + s도 상위로 설정됩니다.
여기 터치 deux는 그룹 canard와 함께 deux를 만듭니다.
mount 옵션이 'grpid | 이 경우 bsdgroups '의 경우 새 파일 / 디렉토리 작성은 상위 자체에 g + s를 설정하지 않아도 상위 폴더에서 그룹 ID를 상속합니다.
cp
은 실제로 새로 생성됩니다. 그룹 권한을 상속받지 못하면 복사 프로그램은 임시 파일로 복사 한 다음 대상 디렉토리로 이동하는 등 게임을하고 있습니다.