Как узнать, что изменяет разрешение каталогов на Linux?

У нас есть сервер Ubuntu 12.04 / apache и каталог в разрешениях «/ var / www / foo» и root.

Что-то неоднократно меняет разрешение этого каталога.

Вопрос : Как мы можем расследовать, что меняет разрешение?

  • Запуск исполняемых файлов в разделе NTFS?
  • Разрешения для пользователей Apache и FTPd
  • Создать каталог в / var / run / при запуске
  • Как установить разрешения для каталога, чтобы файлы и каталоги, созданные под ним, поддерживали разрешения на групповую запись?
  • Почему исходный файл имеет бит выполнения?
  • Почему не удается записать файл?
  • Загадочные ошибки разрешения Samba после миграции службы
  • Btrfs снимок, поскольку пользователь не разрешен
  • 2 Solutions collect form web for “Как узнать, что изменяет разрешение каталогов на Linux?”

    Вы можете исследовать с помощью аудита, чтобы найти это. В ubuntu пакет называется auditd .

    Используйте эту команду для начала расследования, если файл или папка:

     auditctl -w /var/www/foo -pa 
    • -w означает просмотр файла / папки
    • -pa означает следить за изменениями в атрибутах файлов

    Теперь запустите tail -f /var/log/audit/audit.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 

    Я выполнил chmod 700 /var/www/foo чтобы вызвать его.

    • В 1-й строке вы видите
      • какой исполняемый файл выполнил: exe="/bin/chmod"
      • pid процесса: pid=32041
      • Вы также можете узнать, какой именно пользователь: uid=0 , root в моем случае.
    • В третьей строке вы видите измененный режим: mode=040700

    Я не думаю, что есть какой-либо способ ответить, как вы могли знать, что изменило разрешения в прошлом, но вы можете использовать команду lsof, чтобы узнать, какой пользователь или процесс использует файл в любой момент времени. Вы можете попробовать положить это на cron и, возможно, поймать. Если что-то случайно изменяет ваши права на файл и вы не знаете, что это такое, его может быть очень сложно найти.

    Вы можете запретить изменения ваших файлов с помощью команды chattr. Chattr блокирует файл, чтобы даже корневые пользователи не могли изменять его, не запускав при этом соответствующую команду chattr.

    chattr + i filename (Сделать свойства имени файла «неизменяемым», отметить, что никто не может записать в файл) chattr -i filename (Удалить неизменяемый флаг, чтобы можно было снова изменить права собственности на файл и разрешения).

    Linux и Unix - лучшая ОС в мире.