Разрешить удаленный запуск rsync от имени пользователя root, но только для чтения файлов. Пользователь root только для чтения?

awkрешение:

awk 'NR==FNR{ a[$1]=$2; next };{ len=split($4,b,","); s=0; 
     for(i=1;i<=len;i++) s+=a[b[i]]; $6=s/$5 }1' file2 OFS='\t' file1 | column -tx

Выход:

1  100  371  R1,R2,R4  12  0.0416667
5  167  16   R2,R5     5   0.066
8  242  490  R1,R3,R4  11  0.0440909

  • a[$1]=$2-захват ключей/значений из 2-го файла

  • split($4,b,",")-разбиение 4-го поля 1-го файла на массив "ключей"

  • len-количество чанков

  • s+=a[b[i]]-накопление значений для совпавших "ключей"

1
05.09.2019, 14:03
2 ответа

Запускайте сторону чтения rsync как выделенный не -пользователь root, но с возможностью CAP_DAC_READ_SEARCH. Пользователь должен иметь полное представление о файловой системе (конечно )и доступ к копии /usr/bin/rsync, которая имеет эту возможность. Я не очень хорошо разбираюсь в возможностях Linux, но думаю, как это настроить:

cp /usr/bin/rsync /usr/local/sbin/rsync-for-backup
chown root.root /usr/local/sbin/rsync-for-backup
chmod 700 /usr/local/sbin/rsync-for-backup
setfacl -m user:backupuser:rx /usr/local/sbin/rsync-for-backup
setcap cap_dac_read_search+ep /usr/local/sbin/rsync-for-backup

Не забывайте обновлять копию при каждом обновлении rsync. Пройдите --rsync-path=/usr/local/sbin/rsync-for-backupна другую сторону.

(Я предполагаю Linux. Для других вариантов Unix потребуются другие решения.)


Некоторые другие потенциальные подходы:

  • Решение bindfs изhttps://unix.stackexchange.com/a/91522позволяло читать содержимое файла, но искажало некоторые метаданные. Я не уверен навскидку, есть ли способ заставить это работать для резервных копий.
  • Запуск от имени пользователя root, но с ограничительными правилами SELinux должен помочь, но не спрашивайте меня, какими должны быть эти правила.
4
27.01.2020, 23:22

Я столкнулся с точно такой же проблемой. Основная причина заключалась в том, что сервер kerberos поддерживал только тип шифрования rc4 -hmac.

решение:в использовании ktutil

ktutil: addent -password -p foo@bar -k 0 -e rc4-hmac
Password for foo@bar:
ktutil: wkt foo.keytab
ktutil: quit
ktinit -kt foo.keytab foo

Мне это помогло. Если это не сработает, попробуйте все разные типы шифрования по одному.

-121 ---285528 ​​-

Вам потребуется запустить rsyncот имени пользователя удаленной системы с правами -только на чтение. Например.rsync -a read_only_user@target_machine:/path/to/files /backup/location

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

Вы можете взглянуть на оболочку rsync rrsync, где вы можете указать флаг -ro.

Для вашего варианта использования я бы также рекомендовал взглянуть на rsnapshot, так как это довольно удобно для централизованного резервного копирования при сохранении дискового пространства за счет использования жестких ссылок(https://rsnapshot.org).

0
27.01.2020, 23:22

Теги

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