스크립트를 분석 중인데 온라인에서 chgrp 0
다음 줄의 의미를 찾을 수 없습니다.
find $1 -follow -exec chgrp 0 {}
그래서
find $1
매개변수를 수락하고,
-follow
find가 심볼릭 링크를 따르도록 합니다.
-exec
주문을 실행하고,
chgrp 0
그룹 소유권 변경,그런데 0은 무엇을 하는가?,
{}
find 명령으로 찾은 모든 항목에 적용됩니다.
제가 틀린 부분이 있다면 바로잡아주세요.
답변1
chgrp 0 file
파일의 그룹 소유권을 file
GID가 있는 그룹으로 변경합니다 0
. 이는 거의 항상 root
Linux의 그룹입니다(BSD에서는 거의 항상 그렇습니다 wheel
). 따라서 명령은 find
첫 번째 위치 인수( )가 제공하는 경로에 $1
포함된 모든 파일 시스템 개체를 검색하고 해당 대상에 대한 기호 링크를 추적하며 이러한 개체의 그룹 소유자를 GID 0
( root
또는 wheel
)로 만듭니다.
답변2
기본적으로 Linux의 모든 파일/디렉토리에 대한 소유권은 다음 위치에 저장됩니다.인덱스 노드. 정수(사용자는 정수, 그룹은 두 번째 정수)로 저장됩니다. ls에 표시되는 이름은 NSS(예: /etc/passwd 파일 또는 ldap)에 따라 다릅니다. 시스템처럼 수행하면 chgrp root file
"루트" 그룹의 GID(제 경우에는 0)를 얻고 해당 0을 inode에 씁니다. 다음과 같이 할 수도 있습니다.
# touch testfile
# chgrp 135543 testfile
# ls -l testfile
-rw-r--r--. 1 root 135543 0 Aug 21 18:05 testfile
# groupadd -g 135543 testgroup
# ls -l testfile
-rw-r--r--. 1 root testgroup 0 Aug 21 18:05 testfile
답변3
0은 루트의 UID 및 GID입니다. 따라서 chgrp 0을 수행하면 파일/디렉토리의 그룹 소유권이 루트로 변경됩니다.