Как позволить некорневому пользователю освободить кэш-буфер Linux

Вы можете использовать find с perl Posixly:

$ find ! -name . -prune -print | perl -lne '
    $h{$_} = -M;
    END { print for sort {$h{$a} <=> $h{$b}} keys %h }
'

Это означает, что в имени файла нет символа новой строки.

Для работы с новой строкой можно:

$ find ! -name . -prune -exec printf "%s\0" {} + | perl -0lne ...

или использовать perl -le, а затем разделить /\0/,<> в своем коде.

1
18.11.2014, 16:16
1 ответ

Из вашего списка только четвертая возможность (написание небольшого скрипта SETUID в безопасном каталоге, например / usr / local / bin , не изменяемый пользователем) может работать и Может быть в безопасности, но в настоящее время часто отключен от распределения.

Чем проще и лучший вариант - добавить следующую строку в / etc / sudoers (используйте e.g. Visudo для этого)

YOURUSERNAME     ALL = NOPASSWD: /sbin/sysctl vm.drop_caches=3

, а затем включите строку

sudo /sbin/sysctl vm.drop_caches=3

в вашем скрипте.

1
27.01.2020, 23:51

Теги

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