이는 시나리오를 통해 가장 잘 설명될 수 있습니다. "Test: OK" 또는 "Test: Failed"라고 쓰면 Apache 서버(httpd 서비스)를 다시 시작합니다. 기본적으로 target_host에서 루트로 모든 작업을 수행합니다.
scp user@source_host:/etc/httpd/conf.d/custom.conf /home
mv /home/custom.conf /etc/httpd/conf.d/
테스트 실패
scp user@source_host:/etc/httpd/conf.d/custom.conf /etc/httpd/conf.d/
테스트: OK
scp user@source_host:/etc/httpd/conf.d/custom.conf /
mv /custom.conf /etc/httpd/conf.d/
테스트: OK
다음을 사용할 때 동작은 동일합니다.
scp root@source_host...
테스트가 실패할 때:
Iniciando httpd: httpd: Syntax error on line 221 of /etc/httpd/conf/httpd.conf: Could not open configuration file /etc/httpd/conf.d/custom.conf: Permission denied
이니치안도(Iniciando)는 스페인어로 '시작'이라는 뜻이다.
conf.d 내의 권한은 항상 (ls -ln)입니다:
-r--r--r--. 1 0 0 311 Jun 18 14:19 custom.conf
scp는 아파치가 읽을 수 있거나 읽을 수 없도록 이러한 파일의 내용을 변경합니까?
답변1
예, scp
권한을 변경합니다. 복사할 때 새 파일이 생성되며 해당 새 파일은 해당 파일을 만든 디렉터리의 기본 권한으로 생성됩니다.
terdon@local$ ls -l aa
-rwx------ 1 root root 0 Jun 19 15:37 aa
terdon@local$ scp aa terdon@remote:/home/terdon/aa
terdon@remote$ ls -l aa
-rw-r--r-- 1 terdon terdon 587 2013-06-19 15:38 aa
이를 원하지 않으면 다음 -p
플래그를 사용하십시오.
-p Preserves modification times, access times, and modes from the original file.
terdon@local$ scp -p aa terdon@remote:/home/terdon/aa
terdon@remote$ ls -l aa
-rwx------ 1 terdon terdon 587 2013-06-19 15:38 aa
또 다른 가능한 문제는 파일 사용자가 변경되었다는 것입니다. 필요할 수 있는 구성 파일을 복사하려면 root
반드시 scp root@remote
.
답변2
SELinux는 Apache 프로세스가 사용자 홈 디렉터리 콘텐츠(user_home_t) 또는 데이터베이스 데이터(mysql_db_t)로 표시된 데이터를 읽지 못하게 합니다.
또한 SELinux가 파일에 할당하는 레이블에 차이점이 있다는 것도 배웠습니다. 로 확인할 수 있습니다 ls -Z
. 나는:
-r--r--r--. root root unconfined_u:object_r:home_root_t:s0 custom.conf
-r--r--r--. root root unconfined_u:object_r:httpd_config_t:s0 custom_ok.conf
두 번째 파일을 사용하면 Apache가 다시 시작됩니다. 첫 번째는 실패했습니다. 사실 custon_ok.conf를 홈으로 옮겼을 때 아무것도 바뀌지 않았습니다. 하지만 집으로 cp 또는 cp -p를 실행하면 새 파일에 태그가 있습니다.
unconfined_u:object_r:home_root_t:s0
이렇게 하면 Apache는 다시 이동될 때 /etc/httpd/conf.d를 읽을 수 없습니다.