파일을 만들 수는 있지만 읽을 수는 없습니다.

파일을 만들 수는 있지만 읽을 수는 없습니다.

저는 한동안 리눅스를 사용해왔지만 항상 루트 접근권한을 갖고 있었기 때문에 권한 문제는 별 문제가 되지 않습니다. 하지만 지금은 루트 액세스 권한이 없어서 미칠 지경입니다.

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

chcontmp 디렉터리가 필요합니다 (컨텍스트 변경)...

> chcon -R -t httpd_sys_content_t /path/to/your/tmp

다음은 좋은 SELinux FAQ입니다.

도움이 되었기를 바랍니다!

답변2

새로 생성된 파일에 대한 권한은 pass 입니다 umask. 하지만 umask이 경우에는 괜찮아 보입니다.

-rw-r--r-- 1 apache apache 0 Jun 15 19:37 QQ

플래그 2, 3, 4는 소유자의 권한입니다. rw-이는 Apache가 이러한 파일을 읽고 쓸 수 있음을 의미합니다.

읽고 쓰려고 할 때 Apache로 로그인했는지 확인하십시오.

관련 정보