Como investigar o que está modificando uma permissão de diretórios no Linux?

4

Temos um servidor Ubuntu 12.04 / apache e um diretório na permissão "/ var / www / foo" e root.

Algo é repetidamente altera a permissão deste diretório.

Pergunta : Como podemos investigar o que está mudando a permissão?

    
por freaking-good-question 17.04.2015 / 15:31

2 respostas

7

Você pode investigar usando a auditoria para encontrar isso. No Ubuntu o pacote é chamado auditd .

Use esse comando para iniciar uma investigação se um arquivo ou pasta:

auditctl -w /var/www/foo -p a
  • -w significa observar o arquivo / pasta
  • -p a significa observar alterações nos atributos do arquivo

Agora inicie tail -f /var/log/audit/audit.log . Quando os atributos mudarem, você verá algo parecido com isto no arquivo de log:

type=SYSCALL msg=audit(1429279282.410:59): arch=c000003e syscall=268 success=yes exit=0
  a0=ffffffffffffff9c a1=23f20f0 a2=1c0 a3=7fff90dd96e0 items=1 ppid=26951 pid=32041
  auid=4294967295 uid=0 gid=0 euid=0 suid=0 fsuid=0 egid=0 sgid=0 fsgid=0 tty=pts5
  ses=4294967295 comm="chmod" exe="/bin/chmod"
type=CWD msg=audit(1429279282.410:59):  cwd="/root"
type=PATH msg=audit(1429279282.410:59): item=0 name="/var/www/foo" inode=18284 dev=00:13
  mode=040700 ouid=0 ogid=0 rdev=00:00

Eu executei chmod 700 /var/www/foo para ativá-lo.

  • Na primeira linha, você vê
    • qual executável fez isso: exe="/bin/chmod"
    • o pid do processo: pid=32041
    • Você também pode descobrir qual usuário era: uid=0 , root no meu caso.
  • Na terceira linha, você vê o modo alterado: mode=040700
por 17.04.2015 / 16:06
3

Não creio que exista uma maneira de responder como você poderia saber o que mudou as permissões no passado, mas é possível usar o comando lsof para ver qual usuário ou processo está usando um arquivo em determinado momento. Você poderia tentar colocar isso em um cron e possivelmente pegá-lo. Se alguma coisa está mudando aleatoriamente suas permissões de arquivo e você não sabe o que é, pode ser muito difícil de encontrar.

Você pode impedir que suas permissões de arquivo sejam alteradas com o comando 'chattr'. O Chattr bloqueia o arquivo para que até mesmo os usuários root não possam modificar sem primeiro executar o comando chattr apropriado.

chattr + i filename (Torna as propriedades do nome do arquivo 'immutable', note que ninguém pode gravar no arquivo também) chattr -i filename (Remova o sinalizador imutável para que a propriedade e as permissões do arquivo possam ser alteradas novamente.)

    
por 17.04.2015 / 15:41