Httpd 디렉터리 읽기 권한만 문제

Httpd 디렉터리 읽기 권한만 문제

내 시나리오에서는 'devs' 그룹(Amazon Linux 2)의 사용자가 읽을 수 있도록 '/var/log/'에 'httpd' 디렉터리가 필요합니다. 누구든지 이 작업을 수행하는 방법을 안내해 줄 수 있습니까?

시스템을 유지 관리하는 개발자가 몇 명 있는데 루트 액세스 없이도 /var/log/httpd의 로그 파일을 쉽게 읽을 수 있기를 바랍니다.

이게 도움이 될까요 ??

chmod -R go+r /var/log/httpd

또는chmod -R go+rX /var/log/httpd

아니면 다음과 같이 가야 하나요?

chmod 644 /var/log/httpd

chgrp -R apache /var/log/httpd
chmod 02750 /var/log/httpd
chmod 0640 /var/log/httpd/*
create 0640 root apache

ㅋㅋㅋ

[root@ip-10-0-10-165 httpd]# ls -la
total 48
drwx------ 19 root   devs   4096 Apr  3 03:42 .
drwxr-xr-x 11 root   devs   4096 Apr  8 07:45 ..
-rw-r--r--  1 root   root      0 Feb 15 14:55 access_log
drwxr-xr-x  2 root   devs     41 Mar  1 20:44 u1-dev.qwerty.com
-rw-r--r--  1 root   root   1648 Apr  3 03:42 error_log
-rw-r--r--  1 root   root    883 Mar 13 03:41 error_log-20220313
drwxr-xr-x  2 root   devs     41 Mar  1 20:44 u4-dev.qwerty.com
drwxr-xr-x  2 root   root     41 Mar  1 20:44 langs.qwerty.com
drwxr-xr-x  2 root   devs     41 Mar  1 20:44 u8-dev3.qwerty.com
-rw-r--r--  1 root   root      0 Feb 15 14:55 ssl_access_log
-rw-r--r--  1 root   root    314 Apr  3 03:42 ssl_error_log
-rw-r--r--  1 root   root    157 Mar  6 03:50 ssl_error_log-20220313
-rw-r--r--  1 root   root      0 Feb 15 14:55 ssl_request_log
drwxr-xr-x  2 apache apache  253 Apr  3 03:42 www.qwerty.com
drwxr-xr-x  2 root   devs     41 Mar  1 20:44 u13-dev.qwerty.com
[root@ip-10-0-20-173 httpd]#

해당 권한 집합을 수정하는 방법은 무엇입니까? 여기서 가장 좋은 접근 방식은 무엇입니까?

답변1

이 디렉터리에 acl을 사용하고 devs 그룹에 권한을 부여할 수 있습니다. 예를 들어:

setfacl -m g:devs:rx httpd/

디렉터리에 대한 파일 액세스 목록을 설정할 수 있습니다. 귀하의 예에는 사용자/그룹 루트에 대해서만 권한이 설정된 httpd 디렉토리가 있습니다.

# ls -la| grep httpd
drwx------   2 root     root        4096 Apr  8 10:11 httpd

이 디렉토리에 acl 목록이 없는지 확인할 수 있습니다.

getfacl httpd/
# file: httpd/
# owner: root
# group: root
user::rwx
group::---
other::---

읽기 및 실행 권한으로 devs 그룹에 대한 권한을 설정합니다.

setfacl -m g:devs:rx httpd/

권한을 설정하면 다음과 같습니다.

getfacl httpd/
# file: httpd/
# owner: root
# group: root
user::rwx
group::---
group:devs:r-x
mask::r-x
other::---

ls 명령에서 기존 acl에 대한 추가 기호(+)를 확인하세요.

# ls -la| grep httpd
drwxr-x---+  2 root     root        4096 Apr  8 10:11 httpd

기본 권한을 설정하려면 -b 스위치와 함께 setfacl 명령을 반복하는 것이 좋습니다. 나는 보통 그렇게 한다.

-d, --default
           All operations apply to the Default ACL. Regular ACL entries in the input set are promoted to Default ACL entries. Default ACL entries in the input set are discarded. (A warning  is  issued
           if that happens).

문안 인사

답변2

질문에 태그를 지정하는 방법에 따라 Redhat 스타일 환경을 사용하고 있는 것입니다. 기본 Apache httpd 설치를 사용한다고 가정하면 아마도 뒤에서 logrotate를 다루고 있을 것입니다. 기본적으로 logrotate는 매일 에서 실행됩니다 /etc/cron.daily. 현재 로그 파일을 다른 곳으로 옮기고 새 로그 파일을 생성한 후 다시 시작하여 httpd새로 생성된 빈 로그 파일을 사용하기 시작합니다.

확인하다 /etc/logrotate.d/httpd. 예를 들어, 스톡 버전에는 다음이 표시됩니다.

/var/log/httpd/*log {
    missingok
    notifempty
    sharedscripts
    delaycompress
    postrotate
        /bin/systemctl reload httpd.service > /dev/null 2>/dev/null || true
    endscript
}

중괄호 안에 다음과 같은 줄을 추가하면 logrotate는 올바른 소유자 및 그룹 멤버십으로 로그 파일을 적절하게 회전하고 다시 생성합니다.

    create 0640 root devs

root이는 소유자 읽기/쓰기 및 그룹 읽기 권한을 사용하여 소유자, devs그룹으로 새 로그 파일을 생성하도록 logrotate에 지시합니다 .

그런 다음 다음과 같이 권한과 소유권을 사용하여 httpd 로그 디렉터리를 설정할 수 있습니다.

chown root:devs /var/log/httpd
chmod 0750 /var/log/httpd

첫날에는 로그 파일에 대한 권한을 수동으로 설정할 수도 있으며, 다음 날에는 logrotate가 선택됩니다.

chown root:devs /var/log/httpd/*log
chmod 0640 /var/log/httpd/*log

위의 @KuchnMar에서 설명한 것처럼 ACL을 사용하면 멋질 수 있지만 이 솔루션은 다양한 *nix 및 파일 시스템 유형에서 작업을 단순하고 호환되게 유지합니다.

이는 Debian 스타일 호스트와 유사할 수 있지만 apache2대신 logrotate 구성 파일이 호출될 수 있습니다.

자세한 내용은 여기에서 확인할 수 있습니다.

관련 정보