Как мне узнать, какой процесс приводит к потере разрешений для файла? [дубликат]

Используйте, например, unoconv для преобразования в CSV, а затем преобразуйте CSV в столбцы, разделенные вкладками.

Вот сценарий Bash, который использует unoconv и Python для этого:

#!/bin/bash
if [ $# -lt 1 -o "$1" = "-h" -o "$1" = "--help" ]; then
    exec >&2
    printf '\n'
    printf 'Usage: %s [ -h | --help ]\n' "$0"
    printf '       %s FILE.ods [ ... ] [ > output.txt ]\n' "$0"
    printf '\n'
    exit 0
fi

unoconv --stdout -f csv "$@" | python -c '
import sys
import csv
from string import maketrans
whitespace = maketrans("\t\r\n", "   ")
def fix(s):
    return str(s).translate(whitespace)
for row in csv.reader(sys.stdin):
    print("\t".join(map(fix, row)))'

Этот сценарий параноидальный, так как он гарантирует, что поля не содержат табуляции или новой строки (они заменяются пробелом, если встречаются), которые иначе запутали бы вывод.

Если вы сохраните вышеуказанный файл (временно) как ods2tsv, вы можете установить его с помощью

sudo install -o root -g root -m u=rwx,g=rx,o=rx ods2tsv /usr/bin/ods2tsv

и использовать, например, как

ods2tsv somefile.ods > your.txt
2
10.01.2017, 01:35
1 ответ

Для таких действий нет журнала по умолчанию, вам нужно настроить его заранее.

Вы можете рассмотреть возможность использования auditd, и настроить его на поиск изменений в найденных вами файлах с измененными разрешениями. Затем вы можете найти информацию о том, какие пользователи и процессы изменили какие файлы.

Например, вы можете сделать что-то вроде этого ad-hoc:

auditctl -w /etc/init.d/nfs-kernel-server -k nfs-kernel-server

Вы также можете добавить это в /etc/audit/audit.rules для долгосрочного использования:

cat > /etc/audit/audit.rules << 'EOF'
-w /etc/init.d/nfs-kernel-server
EOF

После этого вам нужно запустить и включить auditd. В большинстве дистрибутивов systemd это можно сделать так:

systemctl enable auditd
systemctl start auditd

Для систем, не поддерживающих systemd, вам нужно обратиться к документации, но, скорее всего, это служба с именем "auditd".

После этого вы можете просмотреть журналы в /var/log/audit/audit.log, или везде, где auditd настроен на ведение журналов. Вы увидите результаты, подобные этим:

type=SYSCALL msg=audit(1349582090.742:414): arch=c000003e syscall=268 success=yes exit=0 a0=ffffffffffffff9c a1=17be0f0 a2=1ff a3=4000 items=1 ppid=2859 pid=3069 auid=1001 uid=0 gid=0 euid=0 suid=0 fsuid=0 egid=0 sgid=0 fsgid=0 tty=pts1 ses=2 comm="chmod" exe="/usr/bin/chmod" subj=unconfined_u:unconfined_r:unconfined_t:s0-s0:c0.c1023 key=(null)
type=CWD msg=audit(1349582090.742:414):  cwd="/root"
type=PATH msg=audit(1349582090.742:414): item=0 name="/var/www/html/1" inode=6171184 dev=fd:00 mode=040755 ouid=0 ogid=0 rdev=00:00 obj=unconfined_u:object_r:httpd_sys_content_t:s0
4
27.01.2020, 21:59

Теги

Похожие вопросы