Linux 커널의 파일 시스템에 대해 배운 후, 두 개의 서로 다른 파일 시스템 간에 파일이 복사되면 어떤 일이 발생하는지에 대한 질문이 있습니다.
Linux에서 NTFS를 마운트 할 수 있으므로 mount -t ntfs DEV_BLK MOUNT_POINT
커널은 디스크에서 데이터가 어떻게 구성되어 있는지 알아야 합니다. 따라서 NTFS에서 ext4로 파일을 복사하려고 하면 커널이 데이터, 속성, 권한 등을 처리해야 합니다.
그러나 NTFS와 ext4는 서로 다른 권한 제어를 사용합니다. Linux 커널은 dentry, inode 등을 생성할 때 NTFS에서 복사된 파일에 기본적으로 777 권한을 부여합니까?
답변1
Linux 커널 소스 코드 4.19에서 발췌한 내용입니다.
/* We do not support NTFS ACLs yet. */
대부분의 권한은 다음 주석 코드를 기반으로 설정됩니다.
/* Everyone gets all permissions. */
vi->i_mode |= S_IRWXUGO;
/* If read-only, no one gets write permissions. */
if (IS_RDONLY(vi))
vi->i_mode &= ~S_IWUGO;
if (m->flags & MFT_RECORD_IS_DIRECTORY) {
vi->i_mode |= S_IFDIR;
/*
* Apply the directory permissions mask set in the mount
* options.
*/
vi->i_mode &= ~vol->dmask;
/* Things break without this kludge! */
if (vi->i_nlink > 1)
set_nlink(vi, 1);
} else {
vi->i_mode |= S_IFREG;
/* Apply the file permissions mask set in the mount options. */
vi->i_mode &= ~vol->fmask;
}
즉, 파일 시스템에서 상속된 ACL 권한이 아니라 주로 마운트 옵션의 권한입니다.
답변2
mount -t ntfs DEV_BLK MOUNT_POINT를 사용하여 Linux에서 NTFS를 마운트할 수 있으므로 커널은 데이터가 디스크에서 어떻게 구성되어 있는지 알아야 합니다. 따라서 NTFS에서 ext4로 파일을 복사하려고 하면 커널이 데이터, 속성, 권한, 기타.
정확히. 상황은 이렇습니다어느파일 시스템: 운영 체제가 데이터를 읽고 저장하는 방법을 알 수 있도록 파일 시스템 드라이버가 필요합니다.
그러나 NTFS와 ext4는 서로 다른 권한 제어를 사용합니다. Linux 커널은 dentry, inode 등을 생성할 때 NTFS에서 복사된 파일에 기본적으로 777 권한을 부여합니까?
서로 다른 파일 시스템이 서로 다른 액세스 제어 의미를 지원하는 것은 매우 일반적인 현상입니다. 이것이 바로 대부분의 파일 시스템 드라이버(및 설치 도우미)가 설치 시 매핑을 설정할 수 있도록 허용하는 이유입니다.
따라서 설치 시 ntfs/ntfs3g 드라이버에 대해 구성할 수 있습니다. man mount.ntfs-3g
알고 있는 옵션, 사용자 및 권한이 매핑되는 방법 등을 알려줍니다.