사용자/그룹 권한은 어떻게 작동하나요?

사용자/그룹 권한은 어떻게 작동하나요?

내 사이트를 설정하는 중이며 일부 파일을 이동해야 합니다. mkdir(), copy() 등과 관련된 간단한 PHP 스크립트를 만들었지만 권한 오류가 발생합니다.

영향을 받는 폴더를 777로 설정하면 모든 것이 작동하지만 이전 사이트에서는 755로 설정되었습니다.

Plesk의 내 사용자가 Johnnie이고 파일의 사용자가 Johnnie이고 그룹이 psacln인 경우 PHP 스크립트에 액세스 권한이 없어야 합니까? 그렇지 않은 경우 브라우저에서 파일을 이동할 수 있도록 사용자를 어떻게 설정해야 합니까?

답변1

액세스란 무엇을 의미하나요? - 파일 속성을 보려면; - 읽기 위해 파일을 엽니다. - 쓰기 위해 파일을 엽니다. - 읽기/쓰기를 위해 파일을 엽니다. - 실행을 위해 파일을 엽니다.

PHP 애플리케이션의 사용자 이름은 이름이 동일하더라도 Unix 사용자와 동일하지 않습니다.

apache/php는 apache, www, www-data, none... 사용자로 실행되고 있다는 점에 유의하세요. 이는 Apache 구성에서 구성됩니다. 다음을 사용하여 이를 찾으세요.

egrep -r '^User|^Group' /etc/{apache*,http*}

변경하기 전에 백업을 실행하십시오.

사용자와 Apache 사용자가 속한 공통 그룹을 찾으십시오. 그렇지 않은 경우 하나를 만드십시오.

DocumentRoot에 있는 파일 및 폴더 그룹을 다음 그룹으로 변경합니다.

chown -R myuser:commongroup /var/www/

해당 그룹이 새 파일을 소유하도록 폴더의 SUID를 변경합니다.

find /var/www/ -type d -print0|xargs -0r chmod g+rxs
chmod -R u+r,g+r,o= /var/www/

쓰기를 위해 PHP에 대한 액세스 권한을 부여하려는 폴더 및 파일에 대해 다음을 수행하십시오.

chmod g+w /var/www/folder/subfolder   /var/www/folder/file.txt

답변2

권한을 처리하기 위해 추가 패치/모듈 없이 cgi 또는 mod-php를 통해 PHP를 사용하는 경우 PHP 스크립트는 아마도 웹 서버 계정으로 실행되고 있을 것입니다. 이는 www-data, none 또는 기타 루트가 아닌 계정인 경우가 많습니다.

웹 서버가 실행 중인 사용자를 그룹에 추가하거나 웹 서버와 액세스가 필요한 다른 사용자를 포함하는 그룹을 만들어야 할 수도 있습니다.

관련 정보