NGinx와 PHP는 어떤 사용자로 실행해야합니까?


15

권한은 리눅스와 함께 잠시 혼란 스러웠습니다. 따라서 NGinx 및 PHP-FPM 인스턴스가 모두 사용자 및 그룹과 함께 실행됩니다.

www-data

이 표준입니까? 파일 업로드를 할 때 문제가 발생합니다.

예를 들어 , 파일은 사용자 및 그룹 www-data와 함께 업로드됩니다. 이제 웹 응용 프로그램에서 권한을 설정하는 방법 (0440)으로 인해 일반 계정으로 ssh를 통해 해당 파일을 다운로드 할 수 없습니다. 변경할 수 없습니다.

그룹을 유지하기 위해 nginx 및 php 인스턴스를 변경하려고 생각했지만 내 사용자 이름으로 실행되도록 변경했습니다.

여기에서 권한을 처리하는 올바른 방법은 무엇입니까? 감사합니다.

답변:


12

작동 방식은 다음과 같습니다. FTP / SSH를 통해 로그인하여 파일을 업로드하면 권한으로 생성됩니다. 아마도 귀하의 웹 루트는 세계 쓰기 가능 (0777), 안전하지 않습니다-시스템의 모든 사용자가 거기에 무언가를 쓸 수 있습니다. PHP는 다른 사용자 권한으로 실행되며 (nginx 구성이 아닌 PHP-FPM 구성에 지정됨) 디렉토리가 세계 쓰기 가능하므로 PHP 사용자 (www-data)도 작성할 수 있습니다. 그러나이 파일의 소유자는 귀하의 계정이 아닌 www-data입니다. 파일 시스템 권한 수준에서 2 개의 서로 다른 계정입니다.

webroot 디렉토리를 소유하고 FTP / SSH 업로드에 사용되며 PHP를 실행할 수있는 최소한의 권한을 가진 전용 사용자를 만드는 것이 좋습니다. PHP-FPM 구성을 변경해야합니다. 작업자 섹션에는 사용자 입력 및 NGINX 구성이 있으므로 웹 사이트 파일을 읽을 수없고보다 안전하게 만들 수 있습니다.

서버 보안을 손상시킬 수있는 권한이있는 (sudo 기능, 쓰기 권한 외부 docroot 권한) 사용자로 PHP를 실행하지 마십시오.


1
좋은 대답, 나는 새로운 사용자, 새로운 폴더를 만들고 모든 것을 복사하고 올바른 권한을 적용하고 사용자를 뿌리 뽑았습니다. 잘 작동합니다. 감사합니다.
픽셀 개발자

www-data전용 사용자를 만드는 대신 FTP 사용자를 그룹에 추가 할 수 있습니까? @ThePixelDeveloper의 문제를 해결합니까? 감사.
Vladyslav Turak

2

www-data사용자 및 그룹은 매우 표준입니다. 다른 시스템에서는 www 또는 web 일 수 있지만 아이디어는 동일합니다. 전용 계정으로 웹 서비스를 실행하십시오. 따라서 웹 서버가 손상되면 공격자는이 계정에 부여 된 파일에만 액세스 할 수 있습니다.

사용자가 웹 서비스를 관리해야하는 경우 사용자를 관련 그룹 (www-data)에 추가하거나 관련 사용자에게 su (또는 sudo)하도록 허용해야합니다 (여전 www-data).


10
www-data의 이유는 권한이 0 인 계정이기 때문입니다. 전체 파일 시스템의 파일에는 쓸 수 없으며 세계가 읽을 수있는 파일 이외의 파일에는 쓸 수 없습니다. 이전에는 내장 사용자 "nobody"를 사용하여이를 달성했습니다. 그러나 "www-data"를 작성 하면 해당 파일을 세계 쓰기 가능 (나쁜)으로 만들지 않고도이 사용자가 일부 파일에 쓸 수 있습니다. "www-data"가 다른 방식으로 "아무도"만큼 특권을 가진다는 기본 원칙은 사실입니다.
thomasrutter

@thomasrutter, 내가 이해 한 바에 따르면 www-data 그룹에있는 www-data 사용자 아래에서 Nginx와 PHP-FPM을 실행해야합니다. 나는이 사용자가 할 수 있도록하려면 readwrite일부 폴더에, 나는 그에게 적절한 권한을 부여하면된다. 대부분의 경우 이것은 웹 루트 폴더 /var/www/html755권한입니다. 내가 맞아? 감사!
Vladyslav Turak

1

보안상의 이유로 nginx / php가 www-data로 소유 한 스크립트를 실행하지 않도록 노력합니다.


9
그것에 대해 자세히 설명 하시겠습니까?
Karussell
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.