Unix는 파일 권한을 어떻게 구현합니까?

Unix는 파일 권한을 어떻게 구현합니까?

foo.txtLinux 배포판에 루트 권한이 있는 텍스트 파일이 있습니다. 다른 컴퓨터의 다른 Linux 배포판에 복사했습니다.

파일 권한이 여전히 유지됩니까 foo.txt?

그렇다면 Unix/Linux Linux는 어떻게 파일의 권한을 알고 복사합니까?

파일에 추가 바이트를 추가합니까(권한을 나타냄)?

답변1

Eric의 답변에 추가하려면(담당자가 댓글을 달지 않음) 권한이 파일에 저장되지 않습니다.인덱스 노드(디스크에 있는 파일의 물리적 위치에 대한 파일 시스템 포인터)를 소유자 및 타임스탬프와 함께 메타데이터로 사용합니다. 즉, POSIX가 아닌 파일 시스템(예: NTFS 또는 FAT)에 파일을 복사하면 권한과 소유자 데이터가 제거됩니다.

파일 소유자와 그룹은 사용자 ID(UID)와 그룹 ID(GID)의 숫자 쌍일 뿐입니다. 표준 루트 UID는 0이므로 (거의) 모든 UNIX 호환 시스템에서 파일은 루트가 소유한 것으로 나타납니다. 반면, 루트가 아닌 소유자는 의미 있는 방식으로 저장하지 않습니다.

즉, extX usbstick 등을 통해 압축하거나 복사하면 루트 소유권이 유지됩니다. 루트가 아닌 소유권은 신뢰할 수 없습니다.

답변2

어떻게 재현하느냐에 따라 다릅니다. tar공에 넣어서 복사하신 후 압축을 풀어주시면 tar권한이 유지됩니다. 이를 사용하면 rsync플래그에 따라 권한도 유지됩니다. 이러한 애플리케이션은 권한을 담당합니다. 이렇게 하면 scp권한이 유지되지 않습니다.

복사를 수행하는 명령은 새로 생성된 파일에 대한 권한을 관리합니다.

답변3

소유자/그룹의 경우 복사를 수행하는 사람과 방법에 따라 다릅니다.

  • 일반 사용자: 항상 모든 명령 사본의 소유자입니다.
  • root사용자도 사용 가능 cp(옵션 사용 외에 --preserve)
  • rootwith의 기본값은 "보존"입니다.tar

관련 정보