Считайте файлы, принадлежавшие другому пользователю как некорневые

Поскольку @jordanm сказал отбрасывание sudo. Вы можете хороший Ваши собственные процессы для предоставления им более низкого приоритета:

nice -20 matlab

Нет sudo.

9
24.05.2014, 02:35
6 ответов
[1179503] Используйте [1179957] sudo[1179958].

  1. Если в вашем файле [1179959] sudoers[1179960] указана точная и конкретная команда, то она должна быть вызвана точно так же, как указана в файле [1179961] sudoers[1179962], иначе она будет отклонена. Например:
  2. В данном примере пользователь [1179963] backup[1179964] может выполнить команду точно так, как показано на рисунке:
  3. Если он вызовет [1179965] sudo rsync. ...[1179966] вместо [1179967]sudo /usr/bin/rsync[1179968] команда не работает, или если флаги или пути разные, команда не работает.
  4. Если вы делаете это в скрипте, то вы хотите включить использование этих команд без пароля:
  5. Подробнее смотрите man-страницу [1179969]sudoers(5)[1179970] в разделе [1179971]Cmnd_list[1179972].[1179516].
4
27.01.2020, 20:06
[1177061] Вы можете написать [1177505] suid[1177506] версию [1177507] cat[1177508], которая исполняется только вашим пользователем резервного копирования (сделайте группу эксклюзивной для пользователя резервного копирования и сделайте исполняемый файл читаемым только этой группой). Этот [1177509]cat[1177510] позволит вам читать файлы только в интересующей вас директории. (Возможно, вы захотите запретить символические ссылки и обратить внимание на такие трюки, как [1177511]/dir/.../otherdir/[1177512].)

Тогда ваш скрипт сможет использовать этот исполняемый файл для чтения файлов, не имея привилегий root.[1177064].

4
27.01.2020, 20:06

ПРЕДУПРЕЖДЕНИЕ:[1177498] Как отметила Стефан в комментариях ниже, владельцы файлов все равно смогут отозвать ACL.

Если у вас есть root доступ к машине, вы можете сделать это с помощью [1177499]ACLs[1177500]:

time prince \
   --verbose \
   --no-author-style \
   --style=http://www.princexml.com/howcome/2008/wikipedia/wiki2.css \
     http://en.wikipedia.org/wiki/Color_management \
     http://en.wikipedia.org/wiki/Gamut \
     http://en.wikipedia.org/wiki/RGB \
     http://en.wikipedia.org/wiki/CMYK \
     http://en.wikipedia.org/wiki/Color_space \
     http://en.wikipedia.org/wiki/ICC_profile \
     http://en.wikipedia.org/wiki/Color_calibration\
     http://en.wikipedia.org/wiki/Linux_color_management \
   --output=prince-colormanagement-wikipedia.pdf

Это даст возможность использовать [1177501]USERNAME[1177502] доступ на чтение ко всем файлам и директориям в разделе [1177503]/путь/к/директорию[1177504].[1177060].

4
27.01.2020, 20:06
[12144]Bindfs[1177854] - это файловая система [1177855]FUSE[1177856], которая обеспечивает представление дерева каталогов с различными правами и принадлежностями. Порта для FreeBSD нет, но вы можете скомпилироваться из исходных текстов.[12145]Чтобы дать пользователю [1177857] backupper[1177858] (и только этому пользователю) вид [1177859]/some/files[1177860], где все файлы доступны для чтения, смонтируйте вид [1177861]/some/files[1177862] в закрытом каталоге [1177863]backupper[1177864]. [12146]
1
27.01.2020, 20:06

ZFS имеет некоторые механизмы для этого.

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

Лучшим решением, вероятно, является ACL в стиле ZFS nfsv4

.
0
27.01.2020, 20:06

У меня есть две идеи, как решить эту проблему с помощью технологий, специфичных для FreeBSD, хотя я не пробовал ни одну из них:

  • Использовать Capsicum. Это мой предпочтительный метод. Кроме того, поскольку он недавно был перенесен на Linux, он должен работать и там. Это выглядит так:

    1. Создайте команду drop-cap-write, которая отменяет CAP_WRITE, а затем выполняет команду, заданную в командной строке
    2. Используйте sudo, чтобы разрешить резервному пользователю выполнять эту команду без пароля
    3. Как вариант, используйте директиву ForceCommand в sshd_config, чтобы автоматически выполнять эту команду всякий раз, когда резервный пользователь входит в систему. Таким образом, удаленному пользователю не нужно будет указывать drop-cap-write в своем сценарии резервного копирования.
  • Используйте обязательный контроль доступа. Это не работает в Linux AFAIK, и это более неудобно в настройке. Это будет выглядеть так:

    1. Создайте backup-jail, чьим корневым каталогом является /. Жестко закодируйте jailid.
    2. запустите sshd в резервной тюрьме. Разрешите root вход здесь, даже если вы не разрешаете вход root в обычном sshd
    3. Установите ugidfw_enable="YES" в /etc/rc.conf
    4. Используйте правило ugidfw, которое выглядит примерно так:

    ugidfw add subject uid root jailid BACKUP_JAIL_ID mode rsx

0
27.01.2020, 20:06

Теги

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