편집하다

편집하다

나는 오랫동안 리눅스를 사용해왔고,아직파일 권한이 실제로 어떻게 작동하는지 완전히 알지 못합니다. 그런 점을 염두에 두고, 사물을 완전히 이해하기 위해 읽을 수 있는 책이나 철저한 안내서가 있는 사람이 있습니까? 나는 시스템 관리에 대한 상당한 몫을 해왔기 때문에 디렉터리를 읽고 쓸 수 있게 만들고, 파일을 실행 가능하게 만들고, 파일 소유자를 변경하는 것과 같은 쉬운 일을 알고 있지만, 사용자 간에 파일을 공유할 때 길을 잃습니다.

내 주요 문제는 다음과 같습니다. 내 음악 라이브러리를 동기화하려는 여러 컴퓨터가 있습니다. 나는 한동안 Unison을 사용해 왔으며 방금 설정한 로컬 네트워크에서 SSH를 통해 쉽게 실행할 수 있기 때문에 훌륭한 선택입니다. 윈윈.

지금까지 저는 2TB 외장 하드 드라이브를 사용하여 컴퓨터를 동기화해왔습니다. (컴퓨터 1의 유니슨을 HD로, 컴퓨터 2의 유니슨을 HD로, 등) 이것은 매우 지루한 일입니다. 특히 드라이브를 암호화했기 때문에 드라이브를 모든 컴퓨터에 연결하고 동기화하는 것이 매우 번거롭습니다. 어쨌든 드라이브는 ext4(TrueCrypt에서)를 실행하므로 소유자 및 그룹과 같은 모든 Unix 파일 시스템 정보를 유지합니다. 방금 새 컴퓨터를 설정하고 음악을 가져오기 위해 Unison을 실행했는데 이제 내 모든 권한이 허위라는 것을 깨달았습니다. 외부 드라이브에서 파일을 가져올 수 있는 유일한 방법이기 때문에 Unison을 루트로 실행해야 했습니다. 분명히 모든 컴퓨터에서 평소 "rfkrocktk"와는 다른 사용자 이름을 이 컴퓨터에서 사용하고 있기 때문에 본질적으로 기어에 큰 렌치가 발생합니다.

내 사용 사례는 다음과 같습니다. 이 노트북에는 "leandra"와 "rfkrocktk"라는 두 명의 유효 사용자가 있습니다. 나는 이 두 사용자 간에 음악을 공유하고 싶기 때문에 /home/rfkrocktk/Music이 /home/leandra/Music을 가리키도록 심볼릭 링크했습니다. (a) 두 사용자 모두 이 폴더에 있는 파일을 읽고/쓰고/삭제할 수 있도록 허용하고, (b) 파일 소유권을 손상시키지 않고 모든 것을 동기화 상태로 유지하려면 어떻게 해야 합니까?


편집하다

나는 일을 제대로 할 수 있었지만 아직 완전히는 아니었습니다. 내 음악 디렉토리의 그룹 ID를 내 그룹에 설정 하고 내 기본 사용자 와 공유 사용자를 모두 그룹에 media-users추가했습니다 . 이제 파일에 완벽하게 액세스할 수 있지만 디렉터리에서는 아무것도 볼 수 없습니다. 내 ID는 다음과 같습니다.rfkrocktkmt-daapdrfkrocktkmt-daapd

$ id rfkrocktk
> uid=1000(rfkrocktk) gid=1000(rfkrocktk) groups=1000(rfkrocktk),4(adm),20(dialout),24(cdrom),29(audio),46(plugdev),104(lpadmin),115(admin),120(sambashare),124(vboxusers),1001(jupiter),2002(media-users)

$ id mt-daapd
> uid=123(mt-daapd) gid=65534(nogroup) groups=65534(nogroup),2002(media-users)

mt-daap님의 기본 그룹 ID를 그룹에 설정해 보았지만 media-users아무 것도 변경되지 않습니다.

디렉토리 에 대한 내 권한은 다음과 같습니다 /home/rfkrocktk/Music.

drwxr-Sr-- 201 rfkrocktk media-users 12288 2011-01-13 12:26 Music

달리면 sudo -i -u mt-daapd ls -l /home/rfkrocktk/Music아무것도 나오지 않습니다. 이 문제를 어떻게 해결할 수 있나요?

답변1

파일 소유자를 루트로 설정하고 그룹을 '음악'과 같은 것으로 설정한 다음 둘 다 "음악" 그룹의 구성원이 되도록 만들었습니다. 그런 다음 음악 디렉토리를 setgid로 만듭니다.(이는 디렉터리에 생성된 항목이 디렉터리 자체의 그룹 소유권을 상속함을 의미합니다.). 그런 다음 파일 권한을 0660으로 설정하면 모든 설정이 완료됩니다.

파일 권한은 사용자, 그룹, 월드이며 종종 8진수(예: 0660)로 표시됩니다.

1 - 실행 2 - 쓰기 4 - 읽기

예를 들어 0751은 파일 소유자가 읽고, 쓰고, 실행할 수 있음을 의미합니다. 그룹은 읽고 실행할 수 있습니다. 다른 모든 사람은 실행만 할 수 있습니다.

답변2

이름은 중요하지 않습니다. Unix 파일 및 그룹 소유권은 파일 시스템에 저장되며 이름이 아닌 숫자로 저장됩니다. 원래 컴퓨터에서 일반 사용자로 터미널을 열고 다음과 같이 말합니다.

id -u

그러면 해당 사용자의 숫자 ID가 제공됩니다. 파일 소유권을 확인할 때 로그인한 사용자 ID와 파일 시스템의 ID를 비교합니다. 사용자 이름을 표시할 때 ID는 passwd를 쿼리하여 텍스트로 변환되어 로컬 이름이 됩니다.

새 컴퓨터에서 위와 동일한 단계를 수행합니다. 아이디가 다른가요? 다르다면 새 시스템의 "귀하"는 파일의 소유자가 아닙니다. 두 컴퓨터 모두 마찬가지로, 다음과 같이 말하면

id -G

사용자가 속한 그룹 ID 목록이 표시됩니다. 각 파일의 그룹은 해당 ID 중 하나와 일치해야 합니다. 그렇지 않으면 귀하가 소유한 그룹이 아닙니다. ls -nd file또는 를 사용하여 파일의 실제 숫자 사용자 및 그룹을 얻을 수 있습니다 stat file.

대부분의 경우 서로 다른 두 시스템의 사용자 ID는 동일하지 않습니다. passwd를 편집하여 수동으로 동기화할 수 있지만 이전 ID를 동등한 새 ID로 변환하려면 시스템의 모든 파일을 주의 깊게 업데이트해야 합니다. 시스템 간 ID를 동기화하는 것은 대부분의 가정 사용자가 귀찮게 하지 않는 복잡한 작업입니다. 이는 LDAP, NIS 및 이와 유사한 기타 솔루션의 도메인입니다.

문제를 해결하려면 두 시스템 모두에 존재하는 그룹 ID가 소유한 모든 파일을 만들고 두 시스템의 사용자가 그룹의 구성원인지 확인한 다음 chmod g+rw해당 그룹에 읽기/쓰기 액세스 권한( ) 을 부여해야 합니다. .

답변3

Music 디렉터리(및 모든 파일과 하위 디렉터리)에 775 권한을 부여하여 파일 소유자와 같은 그룹에 있는 누구나 파일에 대해 원하는 모든 작업을 수행할 수 있도록 설정할 수 있습니다. 그런 다음 다음 비결은 원하는 이름(예: 공유)으로 새 그룹을 만들고 Music 디렉터리(및 모든 파일과 하위 디렉터리)를 새 그룹으로 chgrp하는 것입니다. 이제 공유 파일에 대한 읽기/쓰기 액세스 권한을 부여한 사용자가 "공유" 그룹에 있는지 확인하기만 하면 됩니다. 다른 컴퓨터에서 이 작업을 수행해야 하는 경우 공유 그룹이 모든 컴퓨터에서 동일한 숫자 ID를 가지고 있는지 주의하면 문제가 없습니다.

답변4

여기내가 유용하다고 생각하는 권한에 대한 설명입니다. 이 하나, 도.

관련 정보