Linux에서의 디렉토리 권한 문제

Linux에서의 디렉토리 권한 문제

내 Linux 서버에 NFS 공유 디렉터리가 있습니다.

ls: cannot access file: Permission denied
ls: cannot access res: Permission denied
total 20
d????????? ? ?       ?           ?            ? file
drwx------ 2 root    root    16384 May 19  2015 lost+found
drwxr-x--- 9 lma     lum 4096 Feb 18  2020 lum
d????????? ? ?       ?           ?            ? res

권한을 변경하려고 하면루트 사용자카탈로그 파일에

chmod 775 file
chmod: cannot access `file': Permission denied

chown root:root file
chown: cannot access `file': Permission denied

오류가 발생했습니다 Permission denied. 디렉토리의 권한을 변경하는 방법을 알려주세요.

답변1

내보내기 옵션을 사용하여 NFS 공유를 내보내지 않는 한 NFS 클라이언트 호스트의 UID 0( )은 no_root_squashNFS 서버(또는 일부 운영 체제)의 UID 65534에 매핑됩니다. 이렇게 하면 클라이언트 호스트의 루트 사용자가 NFS 공유에 악의적인 setuid-root 실행 파일을 생성하고 이를 사용하여 동일한 공유를 사용하는 다른 NFS 클라이언트 또는 NFS 서버 자체에 대한 루트 액세스 권한을 불법적으로 얻는 것을 방지할 수 있습니다.rootnobodynfsnobody

이상한 물음표는 사용자에게 nobody읽기 권한이 있지만 x문제의 디렉터리에 대한 액세스 권한이 없음을 나타낼 수 있습니다. 이 조합은 사용자가 일반 ls디렉터리 목록을 읽을 수만 있고 디렉터리에 있는 파일에는 액세스할 수 없음을 의미합니다. 따라서 stat(2)이러한 파일의 크기/소유권/권한 정보를 얻기 위한 모든 시스템 호출도 실패합니다.

and는 정상적으로 표시 되지만 물음표를 file표시하는 디렉토리 합계만 클라이언트 호스트의 루트 사용자 그룹 멤버십, 서버 시스템의 ACL 또는 SELinux 사용 또는 이러한 요소의 조합으로 인해 발생할 수 있습니다.reslost+foundlum

이것이 문제라면 NFS로는 해결할 수 있는 방법이 없습니다. NFS 서버 시스템에 로그인하고 로컬로 파일 시스템에 액세스해야 합니다.

이상적으로는 NFS 서버의 사용자가 공유에서 어떤 것도 소유하지 않도록 root(명시적으로 읽기 전용이거나 모든 클라이언트가 액세스할 수 없는 경우를 제외하고) NFS 공유 디렉터리의 그룹 할당을 설계해야 합니다.

클라이언트/서버 연결 전체에서 소유권을 보존해야 하는 경우 NFS 서버의 파일 에 있는 공유 정의 에 내보내기 옵션을 추가한 다음 공유를 다시 내보내면 root됩니다 . 하지만 이렇게 하려면 마운트 옵션을 사용하여 NFS 서버에 공유가 포함된 파일 시스템을 마운트해야 합니다.no_root_squash/etc/exportsnoexec,nosuid

관련 정보