sync
방금 해당 위치에 라는 새 디렉터리를 만들었습니다 /home/sync
. 나는 사용자로 디렉토리를 생성 한 liam
다음 chown -R rslsync:rslsync /home/sync
. rslsync
나는 그룹 liam
에 나를 추가했다.rslsync
test
그런 다음 now 라는 디렉토리에 또 다른 폴더를 만들었습니다 /home/sync/test
. rslsync
폴더 위치를 지정 하려고 하면 해당 폴더에 대한 쓰기 권한이 없다는 /home/sync/test
메시지가 나타납니다 . rslsync
나는 그것을 실행 ls -l
하고 그것은 보여줍니다 root
root
.
최상위 디렉터리 폴더의 소유자가 rslsync
자신과 같은 그룹에 있는 다른 사용자가 만든 하위 폴더 중 하나에 액세스할 수 없는 이유는 무엇입니까? 여기서 뭔가 빠졌나요?
편집하다
drwxr-xr-x. 3 rslsync rslsync 18 Aug 26 17:09 /home/sync
drwxr-xr-x. 2 root root 6 Aug 26 17:09 /home/sync/test
test
내가 사용하는 폴더를 만들 때 sudo
그렇지 않으면 폴더를 만들 수 없습니다.
그룹 리암은 이런 느낌이에요
liam : liam wheel rslsync
답변1
기본적으로 생성된 새 디렉터리와 파일은 생성 프로세스의 사용자와 그룹을 상속합니다. 프로세스는 명시적으로 이를 다른 그룹(프로세스가 구성원임)으로 설정할 수 있습니다. 그렇지 않으면 디렉토리에 다음이 있어야 합니다.setuid/setgid비트가 설정되면 소유자/그룹이 디렉터리와 일치하도록 설정됩니다.
기본 파일 권한은 프로세스에 의해 결정됩니다.마스크. 일반적인 umask 값( 022
및 027
)은 파일과 디렉터리를 누구나 쓸 수 있도록 만들지 않습니다.
디렉토리의 소유자 및 그룹은 root:root
귀하가 디렉토리에 쓸 수 없기 때문입니다. 또한 설명에 따르면 파일을 만든 것 같습니다.뿌리(sudo 사용?) 사용자 대신리암.
또한 Linux의 파일 권한 검사는 현재 디렉터리에서 시작하는 전체 경로에 대해 수행됩니다. 경로의 디렉터리에 프로세스 사용자/그룹에 대한 실행(+x) 권한이 없으면 액세스가 거부됩니다.
파일 권한을 설정하는 또 다른 방법은 POSIX 액세스 제어 목록을 사용하는 것입니다.man 5 acl
. ACL 지원은 사용 중인 파일 시스템에 따라 다르며 이를 활성화하려면 플래그를 설치해야 할 수도 있습니다.
답변2
Linux에서 각 파일이나 폴더의 소유권과 권한은 상위 디렉터리 상태와 관계없이 다른 모든 폴더 및 파일과 별도로 처리됩니다. 어떤 위치에서든 새 폴더를 생성하면 해당 폴더를 생성한 사용자의 소유권을 갖게 됩니다. 이는 Linux 보안 모델에 있어 좋은 일이자 결정적인 사항입니다.
ls
명령이 "root:root"를 제공 하면 루트는 파일/폴더를 생성했습니다(또는 누군가가 생성했습니다chown root:root
. 그러나 분명히 사용자 rslsync(또는 liam)는 "root" 그룹에 속하지 않습니다(그리고 속해서는 안 됩니다). 이것이 바로 그 이유입니다. 그룹 "루트")는 권한 플래그의 "그룹" 필드에 있는 권한을 얻지 못하지만 "기타" 필드에 명시된 권한을 얻습니다. 이러한 필드에 대한 표준 권한은 권한이 없습니다. 모두...
답변3
귀하의 질문에 답변하셨습니다.
ls -l 쇼루트: 루트당신이 쓴chown -R rslsync:rslsync.
이는 적어도 rslsync 사용자가 다음에 속하지 않는 경우를 의미합니다.뿌리 이 디렉터리에는 그룹을 쓸 수 없습니다.
여기서 초점을 맞추지 않는 것은 사용자가 liam
폴더를 로 만든 이유 root:root
이지만 이는 다른 질문입니다.
groups
사용자에게 출력을 보여줄 수 있나요?
답변4
해결책을 찾았습니다.
.service 파일로 이동
sudo vi /usr/lib/systemd/system/resilio-sync.service
이 줄을 현재 사용자 이름으로 변경하세요.
사용자=aurelien.izoulet
그룹=aurelien.izoulet
환경=”SYNC_USER=aurelien.izoulet”
환경=”SYNC_GROUP=aurelien.izoulet”
systemctl을 다시 시작하십시오.
sudo systemctl daemon-reload
그런 다음 rslsync 서비스를 다시 시작하면 작동합니다!