Eu tenho um comando nagios notifcation que se parece com isso:
/usr/bin/printf "%b" "NotificationType=$NOTIFICATIONTYPE$\nService=$SERVICEDESC$\nHost=$HOSTALIAS$\nAddress=$HOSTADDRESS$\nState=$SERVICESTATE$\nDateTime=$LONGDATETIME$\nAdditionalInfo=$SERVICEOUTPUT$\n" > $$(mktemp -p $CONTACTADDRESS1$ service.XXXXXXXX.alert)
Adicionando novas linhas de legibilidade
/usr/bin/printf "%b"
"NotificationType=$NOTIFICATIONTYPE$\nService=$SERVICEDESC$\nHost=$HOSTALIAS$\nAddress=$HOSTADDRESS$\nState=$SERVICESTATE$\nDateTime=$LONGDATETIME$\nAdditionalInfo=$SERVICEOUTPUT$\n"
> $$(mktemp -p $CONTACTADDRESS1$ service.XXXXXXXX.alert)
Isso realmente cria um novo arquivo no diretório definido por $CONTACTADDRESS1$
, que no meu caso é /home/alert/NagiosAlerts
. Apenas recentemente investigando permissões e ACLs com essa profundidade, eu entendi que precisava definir o GID e algumas ACLs padrão para essa pasta para garantir que meu usuário nagios pudesse gravar nesse diretório e que meu usuário de alerta pudesse ler e gravar em arquivos criado aqui. Então eu configurei o seguinte
# setfacl -Rdm g:nagios:rw /home/alert/NagiosAlerts/
# setfacl -Rm g:nagios:rw /home/alert/NagiosAlerts/
Portanto, as permissões da pasta ficam assim agora
[kanmonitor01]# pwd
/home/alert/NagiosAlerts
[kanmonitor01]# ll ..
total 4
drwxrws---+ 2 alert nagios 4096 Dec 21 14:27 NagiosAlerts
[kanmonitor01]# getfacl .
# file: .
# owner: alert
# group: nagios
# flags: -s-
user::rwx
group::rwx
group:nagios:rw-
mask::rwx
other::---
default:user::rwx
default:group::rw-
default:group:nagios:rw-
default:mask::rw-
default:other::---
Então, como o usuário nagios eu toco um novo arquivo ....
[nagios@kanmonitor01]$ whoami
nagios
[nagios@kanmonitor01]$ touch file.bagel
[nagios@kanmonitor01]$ ll file.bagel
-rw-rw----+ 1 nagios nagios 0 Dec 21 14:57 file.bagel
Isso parece certo para mim. A permissão de grupo do arquivo é rw - que eu acho que é o resultado esperado. No entanto, quando o serviço nagios executa o comando no início da pergunta, acabo com isso:
[@kanmonitor01]# ll service.iCSThqzg.alert
-rw-------+ 1 nagios nagios 178 Dec 21 14:51 service.iCSThqzg.alert
[kanmonitor01]# getfacl service.iCSThqzg.alert
# file: service.iCSThqzg.alert
# owner: nagios
# group: nagios
user::rw-
group::rw- #effective:---
group:nagios:rw- #effective:---
mask::---
other::---
Por isso, tem uma ACL que não é a que eu queria que ela tivesse. Isso para mim não é o comportamento esperado. Eu vejo muita pergunta sobre certos binários não honrar o ACL por causa do comportamento padrão e tal. Parece que o meu caso é que mktemp
está de alguma forma me causando esse problema. Eu estava tentando evitar algum tipo de necessidade de fazer um chmod
de cada arquivo sempre que eu precisasse.
Não tenho certeza do que é um bom curso de ação aqui. No final do dia, preciso que o usuário nagios possa gravar arquivos nesse diretório e que o usuário esteja alerta para poder ler / gravar esses mesmos arquivos. ACL parece ser o caminho a percorrer .....