Как я использую команду скопления Linux, чтобы препятствовать тому, чтобы другой корневой процесс удалил файл?

Функция быстрого запуска:

# findLatestModifiedFiles(directory, [max=10, [format="%Td %Tb %TY, %TT"]])
function findLatestModifiedFiles() {
    local d="${1:-.}"
    local m="${2:-10}"
    local f="${3:-%Td %Tb %TY, %TT}"

    find "$d" -type f -printf "%T@ :$f %p\n" | sort -nr | cut -d: -f2- | head -n"$m"
}

Найти последний измененный файл в каталоге:

findLatestModifiedFiles "/home/jason/" 1

Вы также можете указать свой собственный формат даты / времени в качестве третьего аргумента.

9
задан muru 4 June 2019 в 06:45
поделиться

3 ответа

Нет, flock НЕ мешает никому что-либо делать. Блокировки Unix являются РЕКОМЕНДУЕМЫМИ, что означает, что они не позволяют другим процессам также вызывать flock (или, в случае разделяемой блокировки, предотвращать использование монопольной блокировки другим процессом).

Это не мешает пользователю root или кому-либо еще чтение, запись или удаление файла.

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

35
ответ дан 4 December 2019 в 06:06
поделиться

sudo chattr + i ./file.xml

MarkR верен, так что файл не удалит его:

-(~)-------------------------------------------------------------------------------------------------------(08:40 Mon Mar 29)
risk@DockMaster [2135] --> sudo chattr +i junk.txt
[sudo] password for risk: 
-(~)-------------------------------------------------------------------------------------------------------(08:40 Mon Mar 29)
risk@DockMaster [2136] --> sudo rm ./junk.txt 
rm: cannot remove `./junk.txt': Operation not permitted
zsh: exit 1     sudo rm ./junk.txt
-(~)-------------------------------------------------------------------------------------------------------(08:40 Mon Mar 29)
risk@DockMaster [2137] --> sudo rm -f ./junk.txt
rm: cannot remove `./junk.txt': Operation not permitted
zsh: exit 1     sudo rm -f ./junk.txt
-(~)-------------------------------------------------------------------------------------------------------(08:40 Mon Mar 29)
risk@DockMaster [2138] --> 
7
ответ дан 4 December 2019 в 06:06
поделиться

Flock не подходит для этой работы. Если у вас есть программа, которая удаляет файлы, вам не следует запускать эту программу от имени пользователя root. Вы должны запустить его как другой пользователь. Unix имеет очень хорошую поддержку прав доступа к файлам, но root - это учетная запись бога. Root может все, а для root нет прав.

4
ответ дан 4 December 2019 в 06:06
поделиться
Другие вопросы по тегам:

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