Проблема только с разрешениями на чтение каталога Httpd

Проблема только с разрешениями на чтение каталога Httpd

В моем сценарии мне нужно, чтобы каталог «httpd» в «/var/log/» был доступен для чтения пользователям в группе «devs» (Amazon Linux 2). Может ли кто-нибудь подсказать, как этого добиться?

У нас есть несколько разработчиков, которые обслуживают систему, и я хочу, чтобы они могли легко читать файлы журналов в /var/log/httpd без необходимости иметь права root.

может ли это помочь?

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 с разрешениями, установленными только для пользователя/группы root.

# 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::---

Обратите внимание на дополнительный знак (+) у любого существующего acl в команде ls.

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

Может быть хорошей идеей будет повторить команду setfacl с ключом -b, чтобы задать разрешения по умолчанию. Я обычно так и делаю.

-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

Это указывает logrotate на необходимость создания новых файлов журнала с rootуказанием владельца, devsгруппы и правами доступа «Чтение/запись» для владельца и «Чтение» для группы.

Затем вы можете задать каталог журнала 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 выше, но это решение упрощает задачу и обеспечивает совместимость с различными типами *nix и файловых систем.

Это может быть похоже на хост в стиле Debian, но apache2вместо этого может вызываться ваш файл конфигурации logrotate.

Более подробную информацию можно найти здесь:

Связанный контент