권한 거부 오류로 인해 Sudo mkdir이 실패함

권한 거부 오류로 인해 Sudo mkdir이 실패함

일부 파일을 한 곳에서 다른 곳으로 복사하는 스크립트를 작성했는데 소스 폴더에 대한 권한이 없었기 때문에 sudo를 사용하여 실행해 보았습니다. 문제는 이제 대상 폴더 생성이 실패한다는 것입니다. 다음은 간단한 테스트 사례입니다.

내 홈 디렉토리에서는 다음이 작동합니다.

mkdir testDir

하지만 권한 거부 오류로 인해 실패합니다.

sudo mkdir testDir2

내 홈 디렉토리에는 755개의 권한이 있으며 내 것입니다.

나는 달려가서 sudo groups확실히 그 root그룹이 거기에 있다는 것을 알았지만 이상하게도 users그렇지 않았습니다. 또한 groups나 자신으로 실행하면 내가 sudo 그룹에 속하지 않음을 보여줍니다.

어떤 아이디어가 있나요? sudo로 실행할 때 홈 폴더에 쓸 수 없는 이유는 무엇입니까?

답변1

이는 NFS 서버의 "루트 스쿼싱"으로 인해 발생합니다. 매뉴얼 페이지 에서 exports(5)(강조):

nfsd는 각 NFS RPC 요청에 제공된 uid 및 gid를 기반으로 서버 시스템의 파일에 대한 액세스를 제어합니다. 사용자가 기대하는 일반적인 동작은 일반 파일 시스템처럼 서버의 파일에 액세스할 수 있다는 것입니다. 이를 위해서는 클라이언트와 서버 시스템에서 동일한 uid 및 gid를 사용해야 합니다. 이는 항상 옳은 것도 아니고 항상 바람직한 것도 아닙니다.

일반적으로 NFS 서버의 파일에 액세스할 때 클라이언트 시스템의 루트 사용자가 루트로 간주되는 것을 원하지 않습니다.이러한 이유로 uid 0은 일반적으로 소위 익명 또는 인간 uid라는 다른 ID에 매핑됩니다.이 작동 모드("루트 스쿼시"라고 함)는 기본 모드이며 no_root_squash를 사용하여 끌 수 있습니다.

즉, sudoNFS 클라이언트의 루트가(예: 런타임 시) NFS 서버의 루트와 동일한 방식으로 파일 및 파일 속성을 수정하도록 허용하는 것은 일반적으로 보안상 위험합니다. 이는 효과적으로 클라이언트의 루트를 서버의 루트와 동일하게 만들고 악의적인 클라이언트가 서버를 장악할 수 있게 합니다.

~에서RHEL 6 보안 가이드:

no_root_squash를 사용하면 원격 루트 사용자가 공유 파일 시스템의 모든 파일을 변경할 수 있으며 다른 사용자가 실수로 실행하도록 트로이 목마에 감염된 응용 프로그램을 남길 수 있습니다.

관련 정보