FAT32 파일 시스템은 파일 권한을 지원하지 않는 것 같지만 ls -l
FAT32 파티션에서 이 작업을 수행 하면 ls -l
파일에 권한이 있는 것으로 표시됩니다.
-rw-r--r-- 1 john john 11 Mar 20 15:43 file1.txt
-rw-r--r-- 1 john john 5 Mar 20 15:49 file2.txt
ls -l
파일 권한이 표시되는 이유는 무엇입니까 ?
답변1
디스크에 저장된 파일 시스템은 모든 파일 권한을 저장하지 않지만 파일 시스템 드라이버는 이를 운영 체제에 제공해야 합니다. 이는 Unix 파일 시스템 개념의 필수 부분이고 시스템 호출 인터페이스는 누락된 권한을 표현할 수 없기 때문입니다.
또한 파일에 권한 비트가 전혀 없으면 어떻게 되는지 생각해 보세요. 와 동일하여 0777
모든 항목에 액세스합니까, 아니면 동일하여 0000
아무에게도 액세스하지 않습니까? 하지만 이 둘은예파일 권한이 있는데 왜 표시되지 않습니까? 아니면 좀 더 유용한 작업을 수행하고 합리적인 권한을 설정하는 방법이 있습니다.
따라서 드라이버는 일부 권한, 즉 모든 파일에 대해 대부분 동일한 권한을 위조합니다. 권한과 파일 소유자 및 그룹은 설치 시 구성할 수 있습니다. 이는 "Fat 설치 옵션"에 설명되어 있습니다.mount(8) 매뉴얼 페이지:
지방 장착 옵션
(참고: FAT는 별도의 파일 시스템이 아니라 msdos, umsdos 및 vfat 파일 시스템의 공통 부분입니다.)
uid=value
그리고gid=value
모든 파일의 소유자와 그룹을 설정합니다. (기본값: 현재 프로세스의 UID, GID)
umask=value
umask(존재하지 않는 권한의 비트마스크)를 설정합니다. 기본값은 현재 프로세스의 umask입니다. 값은 8진수로 제공됩니다.
dmask=value
디렉토리에만 적용되는 umask를 설정합니다. 기본값은 현재 프로세스의 umask입니다. 값은 8진수로 제공됩니다.
fmask=value
일반 파일에만 적용되는 umask를 설정합니다. 기본값은 현재 프로세스의 umask입니다. 값은 8진수로 제공됩니다.
chmod ugo-w file
FAT 파일 시스템에 저장된 유용한 권한 중 하나 는 실행 시 사라지는 읽기 전용 비트입니다 .
이는 위 옵션이 차단 권한으로서의 가치를 갖는 이유이기도 합니다.떠나다, 따라서 모든 파일에 대한 fmask=0133
모든 권한이 그룹 및 다른 파일에서 x
제거되고 제거됩니다. w
그러면 파일은 읽기 전용 비트가 지워졌는지 아니면 설정되었는지에 따라 0644
/ rw-r--r--
또는 0444
/ 권한을 갖게 됩니다.r--r--r--
또한 기본값은 호출 프로세스에서 상속되므로 명령줄에서 호출 mount()
하면 mount
셸의 값이 umask
적용됩니다.
답변2
그러나 이러한 파일에는 권한이 있습니다. 사용자남자RW 액세스 권한이 있는 반면 일부 임의 사용자는 읽기 액세스 권한만 갖습니다. 이러한 권한은 파일 시스템 자체에서 나오는 것이 아니라 마운트 옵션(-o uid/gid/umask)에서 나오는데, 이로 인해 현실성이 떨어지지는 않습니다.
다양한 옵션을 사용하여 여러 vfat 파티션을 마운트할 수 있으며 다음을 사용할 수 있습니다.엘에스그 옵션이 무엇인지 결정하는 것입니다. 당신은 사용할 수도 있습니다마운트-바인드단일 디렉토리에 다양한 vfat 파티션의 파일이 포함되도록 하고엘에스각 파일에 지정된 권한이 올바르게 표시됩니다.
답변3
ls
FAT32에 대해서는 모르고 open
POSIX // 시스템 호출을 통해 커널에 의해 노출된 readdir
VFS(가상 파일 시스템) 인터페이스 에 대해서만 알고 있습니다.stat
Linux는 파일 개념을 지원하지 않습니다.아니요사용자/그룹/기타 권한 비트에는 커널에서 고려하는 멤버(및 uid 및 gid 멤버) struct stat
만 포함됩니다 .mode_t st_mode;
~ 해야 하다ls -l
제작시 채워주세요stat(2)
시스템 호출.
이러한 필드가 "사용할 수 없음" 또는 "해당 없음"임을 나타내는 특수 코드가 없으므로 커널의 vfat 드라이버~ 해야 하다뭔가를 만들어보세요. FAT16/FAT32에는 읽기 전용 플래그가 있지만 소유자/그룹은 umask와 마찬가지로 마운트 옵션에서 나옵니다.