다음 줄을 사용하여 fstab을 통해 원격 공유를 마운트했습니다.
//path/to/target /media/f cifs gid=<mygroup's id>,dir_mode=0775,file_mode=0775 0 0
따라서 아래의 모든 항목에는 /media/f
다음과 같은 권한이 있습니다.
$ ls -al
drwxrwxr-x 0 root mygroup ...
Django 웹 www-data
애플리케이션 이 . 그러나 이것은 작동하지 않습니다. 권한 오류가 발생합니다.mygroup
/media/f
이 문제를 해결하기 위해 설치 줄을 설정으로 변경했습니다.둘 다그리고 마운트 지점에 user 및 group 을 갖게 gid
합니다 . 이제 내 마운트 지점은 다음과 같습니다.uid
www-data
mygroup
$ ls -al
drwxrwxr-x 0 www-data mygroup ...
모두 괜찮습니다.
질문: 내 웹 애플리케이션이 /media/f
폴더를 소유할 때는 폴더에 쓸 수 www-data:mygroup
있지만 폴더가 소유할 때는 쓸 수 없는 이유는 무엇입니까 root:mygroup
(폴더가 www-data
의 구성원임을 알면서 mygroup
)
www-data
(사용자의) 그룹 멤버십을 "고정" 하기 위해 재설치 및 재부팅을 시도했지만 mygroup
작동하지 않았습니다.
이상한 점은 root:mygroup
소유권이 설정된 후 sudo su www-data
터미널에서 쓰기를 시도 하면 /media/f
모든 것이 잘 작동한다는 것입니다. 거기서 무슨 일이 일어났는지 아세요? uwsgi
이는 django를 실행하는 프로세스가 내가 부여하려는 전체 권한으로 실제로 실행되지 않는 것과 같습니다 www-data
.
아이디어?
답변1
이는 위의 맥락에 매우 특정한 것으로 밝혀졌습니다. 저는 황제 패턴을 사용하여 웹 사이트를 제공하기 위해 uWSGI를 사용하고 있습니다. 매개변수 uid=www-data
와 를 설정했습니다 gid=www-data
. 이로 인해 내 클라이언트 프로세스가 사용자 및 그룹과 관련된 권한을 갖게 될 것으로 예상했습니다.www-data
또한www-data
(사용자)가 속한 그룹과 관련된 권한입니다. 가정은잘못된. Vassals는 실행되지 않습니다(기본적으로)어느보충 그룹 ID.
uWSGI(최신 버전)가 이 문제를 해결한 것으로 나타났습니다. add-gid=mygroup
uWSGI 구성에서 이를 수동으로 지정할 수 있습니다 . 이 매개변수를 여러 번 지정하여 원하는 대로 가신 프로세스에 많은 gid를 추가할 수 있습니다. 이 기능은 uWSGI 1.9.15부터만 사용할 수 있으므로 이 방법을 사용하려면 업그레이드해야 할 수도 있습니다.
완전한 서면 기록여기.