우리는 웹 애플리케이션을 사용하여 자산 관리 애플리케이션을 만들었습니다 php
. 이 애플리케이션을 통해 사용자는 자산(이미지 및 3D 모델과 같은 바이너리 파일)을 찾아보고, 업로드하고, 이름을 바꾸고, 교체할 수 있습니다.
우리는 Windows 환경에서 개발하고 모든 것이 잘 작동하지만 Linux 서버(joyent)에서 호스팅할 때 경우에 따라 권한 문제가 발생합니다. 다음은 환경설정입니다
공개 웹 루트 폴더는 home/jill/web/public
(webroot)에 있습니다. 모든 자산은 home/jill/web/public/assets
(자산 루트) 및 하위 폴더에 있습니다.
자산 관리에 접근하는 방법에 대한 사용 사례는 다음과 같습니다.
- FTP 프로그램과 FTP 사용자(ftpuser)를 사용하여 모든 자산을 일괄 업로드합니다.
- 모든 자산을 일괄 업로드하려면 webadmin 사용자(jill)를 사용하십시오.
home/jill/web/public
- 웹 애플리케이션을 사용하여 리소스 업로드(기본 웹 사용자는 www)
위의 모든 사용 사례에서 최신 수정 파일로 자산을 덮어씁니다. 이제 웹루트에서 호스팅되는 Flash 애플리케이션(게임)이 있는데, 이는 이러한 모든 리소스에 액세스하여 애플리케이션에 로드할 수 있습니다.
이제 다른 사용자가 원래 생성한 것과 다른 사용자 ID를 사용하여 파일을 덮어쓰거나 업데이트하려고 하면 권한 오류가 발생합니다.
예:원래 FTP 사용자를 사용하여 업로드한 웹 애플리케이션으로 파일을 덮어쓰거나 그 반대로 시도해 보세요.
모든 사용자가 webroot\assets 아래에 생성한 파일이나 디렉터리를 모든 사용자가 수정할 수 있도록 이 상황을 어떻게 처리할 수 있습니까?
저는 unix/linux를 처음 접하는 개발자이지만 이것이 그룹 및 그룹 권한 처리와 관련이 있다고 생각하지만 이를 설정하는 방법을 잘 모르겠습니다.
답변1
다음을 시도해 보세요. (이것은 Lubuntu에서 테스트되었습니다)
가다집/길/웹/공공그리고 다음을 수행하십시오:
ls -la
거기에 있는 파일과 폴더의 세부 정보가 표시됩니다. 그 중 하나가 자산입니다(이는 단지 예시일 뿐이며 자산 세부정보는 다양함).
-rw-r----- 1 user group 9275204 Jun 13 15:27 assets
아이디어는 새 그룹을 생성하고 이를 자산의 소유자로 만든 다음 모든 사용자를 해당 그룹에 추가하는 것입니다.
서버에 새 그룹을 만듭니다.
groupadd assetgroup
새 그룹에 사용자 추가:
usermod -a -G assetgroup ftpuser
usermod -a -G assetgroup jill
usermod -a -G assetgroup www
소유권을 변경하고자산폴더자산 그룹. (-R은 재귀적 변경을 의미함)
sudo chgrp -R assetgroup assets/
답변2
이는 기본적으로 다음 두 가지 작업을 수행합니다.
1) 기존 파일 및 디렉터리에 대한 권한:
Alan의 답변은 대부분 다음을 다룹니다. 특수 그룹을 만들고 필요한 모든 사용자를 추가하세요.쓰다문서. 확실하게 하다목차업로드하는 곳은 그 자체입니다.쓰기 가능이 그룹의 경우: chmod 0775 path/to/the/directory
.모든 기존 파일이 필요합니다 chmod 0664
.
"매직" 숫자는 8진수이며 setuid, 소유자 권한, 그룹 권한, 세계 권한이라는 세 가지 권한을 나타냅니다. setuid에 관심이 없으므로 유지하십시오 0
. 나머지의 경우 8진수(0-7)는 권한을 알려줍니다. 비트 0이 켜져 있으면 파일/디렉토리가 실행 가능합니다(디렉토리의 경우 이는 입력할 수 있음을 의미함). 비트 1이 켜져 있으면 파일 / 디렉토리는 쓰기 가능하고 두 번째 디렉토리는 관리적으로 읽을 수 있습니다. 즉, 0754
소유자는 모든 권한을 갖고 있고 그룹 구성원은 읽고 실행할 수 있지만 나머지 사람들은 읽기만 가능합니다. 다음과 같이 니모닉을 사용하여 동일한 내용을 작성할 수 있습니다 chmod u=rwx,g=rx,o=r
. man chmod
자세한 설명은 Linux 시스템을 참조하세요 .
2) 새 파일에 대한 권한:
umask
업로드할 때 설정을 찾아보세요. 새 파일을 생성할 수 있는 권한에 대해 설명합니다. Linux/UNIX 시스템에서 다시 man umask
보면, 설정한 비트 umask
( chmod
위에서 설명한 것과 동일한 표기법)는들어오지 못하게 하다다음에서 새로 생성된 파일에 대한 권한 - 예를 들어 로 설정하면 umask
파일 0023
이 모든 권한으로 생성되며 기본 그룹에서는 쓸 수 없고 다른 사람은 쓰기도 실행도 불가능합니다. 여기서 비트 0을 설정하는 것은 일반적으로 나쁜 생각입니다. 디렉토리가 생성될 때 실행할 수 없게 되어 디렉토리에 완전히 진입하는 것을 방지하기 때문입니다( 0023
예: "다른 사람"의 경우 비트가 설정된 사용자 집합의 경우 ).
그 외에도 기본 파일 시스템이 기본 ACL을 지원하는 경우 해당 ACL을 디렉터리에 할당하는 것이 좋습니다. 이를 통해 보다 세분화된 액세스 제어가 가능해집니다(ACL은 Windows와 유사하게 Access Control List를 나타냄). 자세한 내용은 을 참조하세요 man setfacl
.
살이 많이 찐다는 경고:파일을 전역적으로 쓰기 가능하게 만드는 것은 좋은 생각이 아닙니다! 유효한 권리를 최소한으로 유지하세요.