Почему ncdu сообщает данные, отличные от df?

Просто настройте свою политику безопасности sudo, создав правило в /etc/sudoers.d, которое позволяет:

  • определенный набор пользователей (возможно, только один пользователь или группа по мере необходимости ),
  • для выполнения ТОЛЬКО modprobeи rmmod,
  • ТОЛЬКО для аргумента cmd psmouse,
  • С паролем sudo или БЕЗ него.

Это именно то, для чего обычно используется '/etc/sudoers.d'. Итак, приступим... (предполагая конфигурацию с одним хостом и помня, что файлы, расположенные в /etc/sudoers.d, анализируются sudoв отсортированном лексическом порядке.)

  • убедитесь, что /etc/sudoersвключает строку#include /etc/sudoers.d
  • Я обычно работаю с личным файлом по умолчанию /etc/sudoers.d/00_aliases, где я определяю псевдонимы пользователя, cmd, хоста и группы по вкусу. Таким образом, я не только радикально сокращаю использование sudo visudoдля настройки /etc/sudoers, который содержит базовые системные настройки -по умолчанию, но и другие мои файлы в /etc/sudoers.d/получают возможность использовать псевдонимы, сначала проанализированные sudoв /etc/sudoers.d/00_aliases.
  • перетащите файл в /etc/sudoers.d, с именем, например, 20 _psmouse

Если вы не планируете широко использовать drop -в файлах sudoers.d, вы можетенесоздавать /etc/sudoers.d/00_aliasesи вместо этого включать псевдонимы ad -hoc непосредственно в свой поместите -в файлы, как показано ниже.

User_Alias  MOUSE_TWKR = user1[, user2[, user3[,...]]]
Cmnd_Alias  MOUSE_MOD_TWK = /usr/bin/modprobe, /usr/bin/rmmod
MOUSE_TWKR  your-host = NOPASSWD: MOUSE_MOD_TWK psmouse

Истина в пудинге, поэтому вам нужно будет:
1 )обратитесь кman sudoers(по Archlinux, примеры начинаются со строки 1911 из 2038 строк !! )и
2 )немного поэкспериментируйте.
Например, если приведенное выше правило является слишком разрешающим, и вы хотите ограничить использование любых параметров вместе с cmds modprobeи rmmodв контексте, которым вы управляете, замените запись файла на:

 MOUSE_TWKR  your-host = NOPASSWD: MOUSE_MOD_TWK [!-] psmouse

...и с обязательным вводом пароля:

 MOUSE_TWKR  your-host = MOUSE_MOD_TWK [!-] psmouse

(*)замените «ваш -хост» на ваше имя хоста или на ALL, чтобы разрешить все хосты, что сводится только к вашему хосту, если ваша система является отдельной -одиночной машиной и/или вы не работа с удаленным администратором в подсети, например...

0
29.03.2020, 21:59
1 ответ

Вывод duоснован на статистике уровня файловой системы -, тогда какncdu(и обычныйdu)генерируют свои результаты путем сканирования каталогов, считывания размеров отдельных файлов и их суммирования.

Если команды стиляdu-выполняются от имени пользователя, отличного от -root, им необязательно будет иметь полный доступ ко всем каталогам, и поэтому они не смогут видеть все.

Попробуйте запустить du -hs /и сравните его результаты с «общим использованием диска», сообщаемым ncdu /. Вы можете обнаружить, что результаты похожи... и с duвы также можете увидеть сообщения о группе каталогов, к которым команда не имеет доступа и поэтому не принимает их во внимание. То же самое, вероятно, верно и для ncdu, но он просто скрывает сообщения об ошибках.

Кроме того, мне кажется, что ncduмог не быть обновлен для понимания виртуальных файловых систем современных дистрибутивов Linux и может запутаться в них. В моей системе Debian 10 ncdu /сообщает:

Total disk usage:  75.6 GiB  Apparent size: 128.1 TiB  Items: 469143

В моем случае «Видимый размер» явно бессмыслен и бесполезен. «Общее использование диска» примерно такое же, как то, что я получаю с du -hs /... но, поскольку это включает в себя количество виртуальных файловых систем на основе RAM -(devtmpfs, tmpfs), это число также вряд ли будет очень полезно.

Но если я ограничу команду только одной файловой системой (, например. ncdu -x /), я, кажется, получаю более разумные результаты, которые также совпадают с выводом du -shx /с точностью до ошибки округления, а также с выводом df -h, если вспомнить, что файловой системе может потребоваться некоторое пространство для ее внутренних метаданных.

Другим возможным источником ошибок может быть использование расширенных функций файловой системы, таких как моментальные снимки файловой системы BTRFS. Конечно, у вас может быть только 1,8 ГБ файлов в вашей корневой файловой системе, но если файловая система также содержит два снимка своих предыдущих состояний,общий объем используемого дискового пространства может быть в 3 раза больше, чем сумма размеров файлов, которую вы могли бы ожидать (и любуюdu-подобную команду ).

Поскольку команда dfполучает информацию, запрашивая драйвер файловой системы, большее «используемое» значение, сообщаемое ею, может включать моментальные снимки, которые в противном случае могли бы быть невидимыми до тех пор, пока к ним не будет получен доступ с помощью надлежащего метода.

1
19.03.2021, 02:31

Теги

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