Práva ve /var/log

jejda

Práva ve /var/log
« kdy: 11. 06. 2018, 02:28:43 »
Ahojte
Potřeboval bych pro uživatele povolit čtení všech logů ve /var/log Problém je, že každý daemon vytváří logy s jinačíma právama a některé dokonce nemůže kromě roota číst nikdo. Za další ty logy rotujou, takže ručně změnit práva na souboru většinou pomůže jenom do doby než daná služba vytvoří log znovu. Někam ty logy jako root pravidelně kopírovat je taky k prdu, žralo by to místo na disku, výkon a vůbec, chtěl bych aby je mohl uživatel číst v reálném čase. Používat sudo nechcu, protože to by mohl potom ty logy mazat nebo měnit, potřebuju povolit jenom čtení. Adresář /var/log má práva drwxr-xr-x. Do teď jsem toto dělal přes sudo, ale začal jsem používat nějaké windows programy a pouštět wine s právy roota se mi fakt moc nechce. Jde toto nějak řešit?
Ještě taková zajímavost ...

Kód: [Vybrat]
$️ ls -l /var/log/fail2ban.log
-rw----r-- 1 root root 11118 Jun 10 23:50 /var/log/fail2ban.log
$️ tail /var/log/fail2ban.log
tail: cannot open '/var/log/fail2ban.log' for reading: Permission denied

Proč to nejde číst?
« Poslední změna: 11. 06. 2018, 09:25:22 od Petr Krčmář »



Setgid

Re:práva ve /var/log
« Odpověď #2 kdy: 11. 06. 2018, 08:39:35 »

ByCzech

  • *****
  • 1 870
    • Zobrazit profil
    • E-mail
Re:práva ve /var/log
« Odpověď #3 kdy: 11. 06. 2018, 08:43:47 »
acl

jejda

Re:Práva ve /var/log
« Odpověď #4 kdy: 11. 06. 2018, 15:03:41 »
Stím sticky bitem se mi to nějak nedaří. Když mají adresáře práva drwxr-s--- nebo drwxr-x--T a nejsu vlastník nebo ve skupině tak z nich stejně nejde číst. Původní plán byl ten, že vytvořím skupinu log, šoupnu do ní uživatele, změním skupinu na log pro všecko ve /var/log nějak takto:
dir=/var/log; chgrp -cR log $dir; chmod g+r -cR $dir; find $dir -type d -exec chmod g+x -c '{}' \;
ale přišlo mi to jako prasečina, možná by se tím i něco rozbilo ...
S ACL už to dopadlo o poznání líp. Doteď jsem ani netušil že něco takovýho existuje. :o Po krátkém zagůglení jsem vypotil toto:
find /var/log -type d -exec setfacl -m g:log:rx '{}' \;
find /var/log -type f -exec setfacl -m g:log:r '{}' \;

a všeci co jsou ve skupině log můžou číst všecko a nesmí zapisovat do souboru který není jejich.  Tak nějak jsem si to představoval :)
Teď ještě nějak vyřešit to rotování. Ani nemám spuštěný logrotate, momentálně si to dělají ti daemoni sami. Někteří si to rotujou denně (apache), někteří podle velikosti logu, někteří vůbec. Docela anarchie. Když ten logrotate zapnu bude potřeba ručně pro každou službu zvlášť nastavit kdy má zarotovat nebo to celé proběhne nějak automaticky, jako že si to všeci přestanou rotovat sami a spolehnou se na logrotate, kde bude natvrdo nastaveno třeba 1x za týden? Spouštět ty dva findy cronem preventivně co pět minut mi přijde takový nesystémový řešení, ale když by to jinak nešlo ...


jvb

Re:Práva ve /var/log
« Odpověď #5 kdy: 11. 06. 2018, 15:47:03 »
Teď ještě nějak vyřešit to rotování. Ani nemám spuštěný logrotate, momentálně si to dělají ti daemoni sami. Někteří si to rotujou denně (apache), někteří podle velikosti logu, někteří vůbec. Docela anarchie. Když ten logrotate zapnu bude potřeba ručně pro každou službu zvlášť nastavit kdy má zarotovat nebo to celé proběhne nějak automaticky, jako že si to všeci přestanou rotovat sami a spolehnou se na logrotate, kde bude natvrdo nastaveno třeba 1x za týden? Spouštět ty dva findy cronem preventivně co pět minut mi přijde takový nesystémový řešení, ale když by to jinak nešlo ...

mrkni se na parametr '-d' u setfacl.

jejda

Re:Práva ve /var/log
« Odpověď #6 kdy: 11. 06. 2018, 16:52:55 »
mrkni se na parametr '-d' u setfacl.
Aha :D ... takže tímto je to vyřešeno a žádný logrotate ani crony nejsou potřeba.
dík všem za účast!