저는 한동안 리눅스를 사용해왔지만 항상 루트 접근권한을 갖고 있었기 때문에 권한 문제는 별 문제가 되지 않습니다. 하지만 지금은 루트 액세스 권한이 없어서 미칠 지경입니다.
SSH를 통해 웹서버에 접속할 수 있습니다. 이는 내 user 에 액세스할 수 있고 PHP 백틱을 통해 해당 사용자에 액세스 gabitoptalentro
할 수 있음을 의미합니다. apache
일부 폴더에 문제가 있습니다 tmp
(아니요 /tmp
). ls -l
설명하다:
drwxrwxrwx 2 gabitoptalentro toptalentro 4096 Jun 15 19:15 tmp
해당 폴더에 touch
파일( )을 생성하려고 하면 touch tmp/QQ
작동합니다(파일이 생성됨).하지만에는 나타나지 않습니다 ls -l
. 의 항목입니다.내 SSH 계정:
-rw-r--r-- 1 apache apache 0 Jun 15 19:37 QQ
따라서 파일은 실제로 속해 있지만 apache
읽을 apache
수는 없습니다.
chown
또한 전체 폴더를 복사하려고 시도했지만 apache
허용되지 않습니다( chown: changing ownership of ...: Operation not permitted
). 뭐, 내 폴더를 다른 사람이 사용할 수 없게 됩니까?
apache
그럼, 제가 어떻게 이 상황에서 벗어나서 그 파일 자체를 읽는 데 도움을 줄 수 있는지 아시나요 ?
답변1
일반 Unix 파일 권한 또는 SELinux 기반 역할의 확장인 액세스 제어 목록을 사용하도록 서버를 설정할 수 있습니다.
다음과 같이 디렉토리에서 ACL을 확인할 수 있습니다.
> getfacl /path/to/your/tmp
모든 것이 잘 작동한다면 다음과 같은 결과가 나올 것입니다 ...
# file: tmp
# owner: apache
# group: apache
user::rw-
group::r--
other::r--
다음과 같은 줄이 보이면...
user:someotheruser:---
group:someothergroup:---
...ACL을 다루고 있는 파일/디렉토리입니다. 짐작할 수 있듯이 이를 통해 특정 사용자 및 그룹에 대한 권한을 설정할 수 있습니다. 명령을 사용하여 이를 변경할 수 있습니다(권한 허용) setfacl
. 디렉터리의 ACL에는 예상치 못한 권한으로 새 파일이 생성되도록 하는 다양한 기본값이 있을 수도 있습니다.
이것이 효과가 없다면 SELinux에서 역할 기반 보안을 처리해야 할 수도 있습니다. 명령을 실행하십시오 getenforce
. 강제로 설정하면 Apache는 HTTP 컨텍스트의 파일만 읽습니다.
> /usr/sbin/getenforce
Enforcing
chcon
tmp 디렉터리가 필요합니다 (컨텍스트 변경)...
> chcon -R -t httpd_sys_content_t /path/to/your/tmp
도움이 되었기를 바랍니다!
답변2
새로 생성된 파일에 대한 권한은 pass 입니다 umask
. 하지만 umask
이 경우에는 괜찮아 보입니다.
-rw-r--r-- 1 apache apache 0 Jun 15 19:37 QQ
플래그 2, 3, 4는 소유자의 권한입니다. rw-
이는 Apache가 이러한 파일을 읽고 쓸 수 있음을 의미합니다.
읽고 쓰려고 할 때 Apache로 로그인했는지 확인하십시오.