Windows에서는 사용자가 lev5
디렉토리에 대한 읽기/쓰기 권한을 가지고 있지만 모든 상위 항목에 대한 권한은 없는 경우에도 cd c:\lev1\lev2\lev3\lev4\lev5
여전히 작동하는 것 같습니다.
Linux에서는 사용자에게 전체 권한 lev5
및 사용 rx
권한을 부여하더라도 //에 대한 권한이 없으면 작동하지 않습니다.lev4
setfacl
rx
lev1
lev2
lev3
cd /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
본질적으로 유사한 것을 하나의 것으로 보는 방법이나 연속적인 것 /
, , , , , 로 보는 두 가지 방법이 있습니다 . 전자를 수행한다면 객체에 대한 액세스를 요청하지 못할 이유가 없습니다. 그러나 이를 시퀀스로 처리하고 한 번에 한 단계씩 해결하면 더 복잡한 작업을 수행할 수 있습니다. 예를 들어, 이름을 확인하면 네트워크 저장소로 이동될 수 있습니다. 컴퓨터의 운영 체제가 사용자가 최종 개체에 액세스할 수 있는지 여부를 결정할 수 있도록 연결할 수 있는 모든 네트워크 저장 장치의 세부 정보를 알고 있다고 기대하는 것은 무리입니다.lev1
lev2
lev3
lev4
lev5
사용은 pwd
기만적일 수 있습니다. 이는 일반적으로 쉘의 내장 기능이며 환경 변수에서 초기화됩니다 PWD
. 과거에는 로 변경 한 다음 현재 디렉터리에서 현재 위치와 일치하는 항목을 찾는 /bin/pwd
방식으로 작동했습니다 . ..
도달할 때까지 이를 반복합니다 /
. 이 접근 방식을 사용하면 일부 상위 디렉터리에서 액세스 권한을 제거하면 오류가 발생할 수 있습니다 /bin/pwd
. 오늘날 Linux에서 커널은 사용자의 현재 위치를 추적하고 시스템 호출 /bin/pwd
만 호출합니다 .getcwd