'chmod g + s'명령


44

안녕하세요 chmod g+s, 유닉스 에서 명령 의 역할을 이해하고 싶습니다 .

또한이 특정 상황에서 그것이 무엇을하는지 알고 싶습니다.

cd /home/canard;
touch un;
chgrp canard .;
chmod g+s .;
touch deux ;

내가 제외한 모든 명령의 역할을 이해 chmod g+s하고 난 파일의 차이점을 알고 싶어 un하고 deux명령이 시리즈의 결과를.

답변:


60
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 .

1
로 복사 된 파일 cp은 실제로 새로 생성됩니다. 그룹 권한을 상속받지 못하면 복사 프로그램은 임시 파일로 복사 한 다음 대상 디렉토리로 이동하는 등 게임을하고 있습니다.
Kaz

1
@Kaz 좋은 지적. cp -psetgid 설정을 무시 한다는 것을 명확히하기 위해 답변을 업데이트했습니다 .
John1024

그러나 cp -psetgid 설정을 무시합니까? 존재하는 모든 단일 유닉스 구현에서? POSIX에 따르면 cp -p에서 사용자 ID 또는 그룹 ID를 복사하지 못하면 진단 메시지가 표시되는지 여부는 지정되지 않았습니다. 그러나 해당 상황에서 S_SUID 및 S_SGID 비트를 각각 지워야합니다 (예 : 파일이 setuid bob이지만 bob의 소유권을 복사하여 파일을 janet이 소유하도록 복사 할 수없는 경우 setuid로 설정하지 마십시오) janet.)
Kaz

" cp -psetgid 설정을 무시합니까?" POSIX 사양에 따르면, 그것이해야 할 일입니다. 내가 사용한 모든 유닉스 시스템에서 그렇게합니다. 그룹 ID 복제 할 수없는 경우 보안을 보호하기 위해 수행 할 작업과 관련하여 사양의 일부를 인용했습니다 . 그런 "할 수없는"상황에 처한 적이 없습니다.
John1024

7

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은 '모든 사람이이 파일에 대한 모든 액세스 권한을 갖습니다'

완벽한 참조


0

ls 명령의 결과는 umask에 따라 다릅니다.

g + s는 sgid를 파일로 설정합니다. SUID SGID에 대한 자세한 내용은 여기 를 확인 하십시오.

예를 들어 umask가 022이면 결과는 다음과 같습니다.

-rw-r--r--    1 romeo    canard     0 Jan 31 20:58 deux
-rw-r-Sr--    1 romeo    UsersGrp   0 Jan 31 20:58 un

0

Linux에서 ext에 대한 기본 마운트 옵션 중 하나? fs는 멍청한 | sysvgroups '. 따라서 첫 번째 터치 un은 fsgid = egid 인 작성 프로세스의 그룹 ID가 fsgid 인 파일을 작성합니다.

chmod g + s., 후속 파일 / 디렉토리 작성은 상위 폴더에서 그룹 ID를 상속하며 작성된 항목이 디렉토리 인 경우 g + s도 상위로 설정됩니다.

여기 터치 deux는 그룹 canard와 함께 deux를 만듭니다.

mount 옵션이 'grpid | 이 경우 bsdgroups '의 경우 새 파일 / 디렉토리 작성은 상위 자체에 g + s를 설정하지 않아도 상위 폴더에서 그룹 ID를 상속합니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.