Windows에서 원격 폴더에 대한 권한을 살펴보면 계정은 컴퓨터 이름이나 도메인, 즉 계정 이름에 대한 권한으로 한정됩니다.
Linux에서 원격 드라이브에 마운트된 VM이 있고 마운트에 있는 폴더의 소유자가 '루트'인 경우 이것이 내 루트입니까, 아니면 원격 시스템의 루트입니까?
Linux에서는 네트워크가 포함되자마자 작동하기에는 모든 것이 너무 단순해 보입니다. 나는 분명히 뭔가를 놓치고 있습니다.
루크
답변1
불행하게도 이는 유닉스에서의 파일 공유에 관해 가장 혼란스러운 점 중 하나입니다. 그리고 나는 혼란스러운 것을 설명하는 데 능숙하지 않습니다.
당신은 무엇을보다예를 들어 출력 에서 ls -l
로컬 시스템의 관점에서 변환된 원격 사용자의 ID입니다.
같은 프로그램이 ls
표준 기능을 사용하여 파일 정보를 조회할 때 파일 시스템 드라이버는 텍스트 이름이 아닌 숫자 사용자 ID만 제공할 수 있습니다.(지금까지는 Windows와 크게 다르지 않습니다.)UID를 이름으로 변환하려면 ls
완전히 다른 OS 구성 요소인 이름 서비스 라이브러리를 호출합니다. 이름 서비스 라이브러리는 해당 UID를 어디서 얻었는지 알지 못하므로 운영 체제가 알고 있는 계정만 변환할 수 있지만 돌아가서 물어볼 수는 없습니다. 도움이 필요한 파일 시스템 드라이버.(여기서 차이가 발생합니다.)
예를 들어 서버에 두 개의 파일이 있는 경우 하나는 루트(UID 0)가 소유하고 다른 하나는 Luke(UID 1000)가 소유하며 해당 파일이 ls
"0"과 "1000"의 소유라는 것만 알 수 있습니다. ~을 위한현지의동일한 UID를 가진 계정. "0"은 항상 루트이지만 "1000"은 Luke일 수도 있고 아닐 수도 있습니다. UID가 LDAP, NIS 또는 AD에 저장된 계정에 속해 있고 클라이언트 OS가 실제로구성된사용자 계정을 LDAP에서 찾으려면 올바른 사용자 이름이 제공됩니다. 그렇지 않으면 로컬 계정 UID(1000, 1001, ...)가 다른 컴퓨터의 다른 사람과 일치하는 경향이 있기 때문에 실제로 거짓말을 할 수 있습니다.
(파일 시스템 드라이버가 "확장 속성"의 형태로 프로그램에 전체 사용자 이름을 알릴 수 있는 방법이 있습니다. 불행하게도 다양한 시도에도 불구하고 이를 수행하는 표준 방법은 없으며 일반적으로 프로그램은 ls
파일 시스템 관련 트릭을 피하려고 시도합니다. 더욱 불행하게도 모든 네트워크 파일 시스템 프로토콜이 그런 것은 아닙니다.~할 수 있다사용자 이름 전송: CIFS(SMB라고도 함)는 가능하고 NFSv4는 가능하며 대부분의 다른 이름은 불가능합니다.)
하지만 그 어느 것도 별로 중요하지 않습니다.당신이 무엇 이후로할수있다파일 사용 여부는 클라이언트가 보는 내용이 아니라 항상 서버가 알고 있는 내용에 따라 결정됩니다. 예를 들어 를 사용하면 sshfs
사용자 이름(예: )을 사용하여 SSH를 통해 서버에 로그인하며 sshfs luke@fileserver
, 서버에서는 사용자가 해서는 안 되는 작업을 수행하도록 허용하지 않습니다. CIFS, AFS 등도 마찬가지입니다.
답변2
소유자는 원격 시스템의 루트 사용자입니다. 원격 시스템에서 루트로 액세스하려면 원격 시스템에 루트로 마운트해야 합니다.
즉, 다음과 같이 작동합니다(로컬 사용자는 예, 원격 사용자는 루트).
aye@ayes-machine$ sshfs root@bees-machine:/path /local-path
이것은 작동하지 않습니다(로컬 사용자 루트, 원격 사용자 bee).
aye@ayes-machine$ sudo sshfs bee@bees-machine:/path /local-path