사용자가 모든 상위 항목에 대한 rx 대신 디렉터리에 대한 cd에 절대 경로를 사용하면 안되는 이유는 무엇입니까?

사용자가 모든 상위 항목에 대한 rx 대신 디렉터리에 대한 cd에 절대 경로를 사용하면 안되는 이유는 무엇입니까?

Windows에서는 사용자가 lev5디렉토리에 대한 읽기/쓰기 권한을 가지고 있지만 모든 상위 항목에 대한 권한은 없는 경우에도 cd c:\lev1\lev2\lev3\lev4\lev5여전히 작동하는 것 같습니다.

Linux에서는 사용자에게 전체 권한 lev5및 사용 rx권한을 부여하더라도 //에 대한 권한이 없으면 작동하지 않습니다.lev4setfaclrxlev1lev2lev3cd /lev1/lev2/lev3/lev4/lev5

Windows처럼 작동하게 하는 방법이 있나요?

내가 알아차린 한 가지는 사용자의 쉘이 /lev1/lev2/lev3/lev4/(sudo 사용자가 있는 곳)에서 시작 /lev1/lev2/lev3/lev4/하고 거기에서 사용자를 사용하도록 전환하면 sudo -u사용자가 cd ./lev5. 잠시 동안 이것이 사용자와 마찬가지로 lev1또는 lev2사용자로부터 상위 디렉토리의 존재를 숨기는 보안 기능인지 궁금했습니다(즉, 사용자는 lev5그 아래에 존재하는 디렉토리 만 알고 lev4그 이상은 알 수 없음). pwd사용자 쉘에서 실행하는 경우 전체 경로가 주어지므로 /lev1/lev2/lev3/lev4/lev5사용자가 전체 경로를 사용하는 것을 막을 필요는 없을 것 같습니다 cd.

답변1

/lev1/lev2/lev3/lev4/lev5본질적으로 유사한 것을 하나의 것으로 보는 방법이나 연속적인 것 /, , , , , 로 보는 두 가지 방법이 있습니다 . 전자를 수행한다면 객체에 대한 액세스를 요청하지 못할 이유가 없습니다. 그러나 이를 시퀀스로 처리하고 한 번에 한 단계씩 해결하면 더 복잡한 작업을 수행할 수 있습니다. 예를 들어, 이름을 확인하면 네트워크 저장소로 이동될 수 있습니다. 컴퓨터의 운영 체제가 사용자가 최종 개체에 액세스할 수 있는지 여부를 결정할 수 있도록 연결할 수 있는 모든 네트워크 저장 장치의 세부 정보를 알고 있다고 기대하는 것은 무리입니다.lev1lev2lev3lev4lev5

사용은 pwd기만적일 수 있습니다. 이는 일반적으로 쉘의 내장 기능이며 환경 변수에서 초기화됩니다 PWD. 과거에는 로 변경 한 다음 현재 디렉터리에서 현재 위치와 일치하는 항목을 찾는 /bin/pwd방식으로 작동했습니다 . ..도달할 때까지 이를 반복합니다 /. 이 접근 방식을 사용하면 일부 상위 디렉터리에서 액세스 권한을 제거하면 오류가 발생할 수 있습니다 /bin/pwd. 오늘날 Linux에서 커널은 사용자의 현재 위치를 추적하고 시스템 호출 /bin/pwd만 호출합니다 .getcwd

관련 정보