
일반적인 공유 Linux 웹 호스팅 계정의 파일 권한을 이해하려고 합니다. 파일이나 디렉터리의 OWNER GROUP 및 PUBLIC 엔터티에 대해 rwx 권한을 설정하는 방법을 알고 있습니다. 나에게 명확하지 않은 점은 일반적으로 액세스 권한이 어디에 매핑됩니까? 나는 다음과 같이 추측한다:
사용자권한이 무엇에 영향을 미칠지... 음... 여기서는 잘 모르겠습니다
그룹권한은 서버에서 실행되는 PHP 또는 기타 스크립트가 수행할 수 있는 작업에 영향을 미칩니다.
다른(때때로 PUBLIC 또는 WORLD라고도 함) 권한은 웹 사이트 방문자의 UA가 수행할 수 있는 작업에 영향을 미칩니다.
누구든지 이에 대한 내 이해를 수정, 확인 또는 확장할 수 있습니까?
설명:
서버에서 실행되는 PHP 스크립트에 파일 쓰기 권한을 허용하려면 해당 권한을 USER, GROUP 또는 OTHER에 지정해야 합니까? 웹 사이트 방문자의 브라우저가 디렉토리의 내용을 보는 것을 거부하려면 디렉토리의 USER, GROUP 또는 OTHER에 해당 권한을 지정해야 합니까?
답변1
몇 가지 키워드를 주먹으로 지정해 보겠습니다.
FTPUSER = you with your ftp client
WWWDAEMON = program (servers) that's responsible for processing your web pages and scripts
WWWUSER = user as which the WWWDAEMON processes your pages
BROWSER = Someone looking at your website with a browser
FILES = files that reside in your www/ftp site
yourgroup = group that your FTPUSER belongs to and WWWUSER does not
FTP 프로그램을 사용하여 FTPUSER로 파일에 액세스합니다.
-rwxr-xr-x 2 FTPUSER yourgroup 72 2012-01-18 13:56 somescript.php
이제.. WWWDAEMON 사용자 WWWUSER가 귀하(FTPUSER)가 아니기 때문에 read
스크립트를 시도할 때 OTHER 권한을 존중합니다. (FTPUSER로 스크립트를 실행하는 호스팅 사이트가 있습니다). 다른 읽기 및 실행 권한을 제거하면 somescript.php 사용이 차단됩니다.
# this scipt is unusable trough a browser
-rwxr-x--- 2 FTPUSER yourgroup 72 2012-01-18 13:56 somescript.php
누구나 쓰기 가능한 권한이 있는 디렉터리를 생성하면 스크립트가 거기에 쓸 수 있지만, 해당 디렉터리를 어떻게든 보호하지 않는 한(예: .htaccess를 사용하거나 www 디렉터리 외부에 두는 경우) 다음과 같은 이유로 BROWSER가 해당 파일에 직접 액세스할 수 있음을 의미할 수도 있습니다.
BROWSER contacts WWWDAEMON which runs as WWWUSER so
BROWSER can see everything processed by WWWDAEMON that the WWWUSER can.
또한 처리됨은 WWWDAEMON이 .htaccess 또는 차단 액세스와 유사한 형식도 존중한다는 의미입니다.
조언은 say를 생성 phpwritedir
하고 a+rwx 권한을 부여하는 것입니다. 거기에 파일을 추가하세요 .htaccess
(호스팅 서비스에서 허용하는 경우).
deny from all
WWWUSER로 실행되는 스크립트는 해당 디렉토리를 계속 사용할 수 있지만 WWWDAEMON은 해당 디렉토리에 대한 모든 BROWSER 액세스를 차단합니다.
답변2
당신은 그것을 꽤 많이 혼동했습니다.
ugo
ugo는 이고 , user
- 아닙니다 . 소유자는 일반적으로 가장 많은 권한을 보유하는 사용자입니다.group
other
owner
GROUP 권한은 서버에서 실행되는 PHP 또는 기타 스크립트가 수행할 수 있는 작업에 영향을 미칩니다.
그룹 권한은 수행할 수 있는 작업(읽기, 쓰기, 실행)에는 영향을 미치지 않지만 해당 작업을 수행할 수 있는 사람은 누구입니까? 사용자에게도 동일합니다.
USER(때때로 PUBLIC이라고도 함) 권한은 웹 사이트 방문자의 UA가 수행할 수 있는 작업에 영향을 미칩니다.
사용자는 소유자이지만 공개라고 부르는 o
에 사용됩니다 . other
그리고 다시 말하지만, 중요한 것은 무엇을 할 수 있는지가 아니라 누가 할 수 있는지입니다.
ugo
를 사용할 때 약어를 사용할 수 있는데 chmod
, 이는 숫자 코드보다 더 쉽습니다.
chmod ug+w sample1
chmod go-r sample2
chmod g=w sample3
- 샘플1: 사용자 및 그룹에 쓰기 권한 추가
- 샘플2: 그룹 및 기타 그룹에서 읽기 권한 제거
- 샘플3: 쓰기 권한을 그룹에 설정
모든 파일은 사용자와 그룹의 소유입니다. 으로 확인하세요 ls -l
. 예:
ls -l /var
insgesamt 12
drwxr-xr-x 2 root root 592 2012-01-12 08:02 backups
drwxr-xr-x 28 root root 776 2011-08-18 05:12 cache
drwxrwxrwt 2 root root 48 2010-06-22 01:46 crash
drwxr-xr-x 2 root root 3704 2010-06-05 22:01 games
drwxr-xr-x 84 root root 2296 2011-10-16 13:25 lib
drwxrwsr-x 2 root staff 48 2007-10-08 12:47 local
drwxrwxrwt 3 root root 80 2012-01-19 08:03 lock
drwxr-xr-x 22 root root 5992 2012-01-19 08:01 log
drwxrwsrwt 2 root mail 72 2012-01-18 07:56 mail
/var 목록의 일부입니다. 대부분의 디렉토리(d...)는 사용자이자 그룹인 root.root에 속합니다. 그러나 메일과 물건은 그룹이므로 사용자와 동일하지 않습니다.
업데이트(질문 업데이트 후):
서버에서 실행되는 PHP 스크립트에 파일 쓰기 권한을 허용하려면 해당 권한을 USER, GROUP 또는 OTHER에 지정해야 합니까? 웹 사이트 방문자의 브라우저가 디렉토리의 내용을 보는 것을 거부하려면 디렉토리의 USER, GROUP 또는 OTHER에 해당 권한을 지정해야 합니까?
글쎄요, 이런저런 일을 하는 것은 스크립트의 허가가 아닙니다. 항상 스크립트를 실행하는 사용자의 권한입니다.
스크립트를 실행하려면 사용자가 스크립트를 읽을 수 있어야 합니다. 즉, 스크립트를 디스크에서 읽어 메모리에 저장하고 실행할 수 있어야 합니다. 읽지 않고는 실행할 수 없습니다.
파일에 쓰려면 사용자에게 스크립트나 프로그램이 아닌 디렉토리에 쓸 수 있는 권한이 있어야 합니다.
디렉토리에 쓰는 프로그램이 서버인 경우 일반적으로 웹의 익명 사용자가 아니라 'www'와 같은 특수 사용자로부터 시작됩니다.
답변3
공유 호스팅에 대해 말씀하셨으니, 제가 자주 함께 일하는 공유 호스팅 업체에 대한 재미있는 세부 정보를 추가하겠습니다. 내 경험에 따르면 이와 같은 설정은 공유 호스팅 환경에서 드문 일이 아닙니다.
공유 호스팅 환경에서는 여러 사용자가 동일한 호스트를 공유하는 것은 드문 일이 아닙니다. 당연히 그들은 모두 사용자 계정을 가지고 있습니다.
내 사용자 계정은 123456-user1
. 이제 수행된 작업은 기본 그룹을 nobody
또는 으로 설정하여 nogroup
내가 생성한 모든 새 파일과 폴더가 에 속하도록 하는 것입니다 123456-user1:nobody
.
내가 생각하는 보안 문제 때문에 호스트의 모든 사용자를 동일한 기본 그룹에 넣지 않습니다.
이제 내 파일을 읽을 수 있고 어떤 그룹도 읽을 수 없습니다(왜냐하면 그룹은 입니다 nobody
). Apache는 어떻게 그것을 읽습니까?
Apache는 자신의 사용자 계정으로 인스턴스를 실행하여 이를 읽습니다. 예를 들어, PHP를 사용하면 다음과 같이 실행됩니다.CGI 모드귀하의 계정에서 파일을 실행합니다.
따라서 권한의 첫 번째 옥텟은 전체 시스템과 관련된 것입니다. 이는 귀하와 웹 사이트 방문자(가령)가 파일에 대해 수행할 수 있는 작업을 정의합니다. 그룹을 무시할 수 있습니다. 그리고 다른 것의 마지막 옥텟은 소유자 부분과 어느 정도 동일합니다.