Назад | Перейти на главную страницу

find / -perm -4000 -o -perm -2000> suid .. помогите с сценарием bash запускать каждую ночь.?

помогите мне с этой проблемой. пока что у меня есть аргумент «find / -perm -4000 -o -perm -2000 | xargs ls -l> suild.list», который я хочу написать как сценарий bash.

Я хотел бы написать это как сценарий bash и иметь возможность запускать его каждую ночь. Но я не знаком с языком сценариев Unix.

для работы crontab мне нужно написать как * 24 * * *? Думаю? но у меня проблемы с написанием сценария.

Не обязательно использовать xargs в таком случае. Просто используйте -ls с участием find.

#!/bin/bash
find / -perm -4000 -o -perm -2000 -ls > suild.list

Если вы хотите отправить его по почте и зарегистрировать, добавив в файл:

#!/bin/bash
find / -perm -4000 -o -perm -2000 -ls | tee -a suild.list

Ваша команда уже является сценарием bash.

Вам нужно будет добавить заголовок:

#!/usr/bin/env bash

И вам нужно будет установить исполняемый бит (+ x) в скрипте.

Если вы хотите отправить результаты по почте администратору, вы можете удалить перенаправление на suild.list в конце.

! / bin / bash

найти / -сперм -4000 -о -перм -2000 -ls | тройник -a suild.list

Как я могу использовать оператор if / else с этим, если я хочу создать полный скрипт. например я хотел сказать, что если этот файл suild.list не существует, используйте команду find для создания нового suid или используйте команду find / -perm -4000 -o -perm -2000 -ls | tee -a аргумент suild.list и сравните изменения, если был создан новый suid. по соображениям безопасности.

Похоже, вам не столько нужен полный список при каждом запуске скрипта, сколько список любых новых / неизвестных файлов, для которых установлено suid / guid. Если это так, то:

Получите список текущих результатов:

# find / -path '/proc' -prune -perm -4000 -o -perm -2000
/usr/bin/write
/usr/bin/wall
/usr/bin/crontab
/usr/bin/locate
/usr/bin/ssh-agent

Создайте сценарий оболочки, который находит и сравнивает результаты с предыдущим списком. Список - это просто переменная в скрипте. Однако вы могли бы получить его собственный файл.

#!/bin/bash

approved="
/usr/bin/write
/usr/bin/wall
/usr/bin/crontab
/usr/bin/locate
/usr/bin/ssh-agent
"

results=$(/usr/bin/find / -path '/proc' -prune -perm -4000 -o -perm -2000)

for line in $results; do
    if ! echo -n $approved | /bin/grep -q $line; then
        ls -a $line
    fi
done

Результат при появлении нового файла:

# ./suid_check.sh 
/sbin/netreport

Бросьте его в cron и настройте cron для отправки по электронной почте STDOUT.