Как синхронизировать /home/userA/transfer и /home/userB/transfer?

Даже если вы не примените мой ответ, я надеюсь, что кое-что вам поможет.

Я не буду приводить подробности реализации, так как это зависит от вашего API.

Предположим, что вы используете «bash», поэтому в домашнем каталоге для каждого пользователя вы можете создать «.bashrc» (, если он еще не существует )и поставить какую-нибудь программу, которая просто отправляет SMS пользователю и возвращает пароль который отправил. Если тайм-аут или пароль не совпадают, выйдите из системы. Необходимо перехватывать сигналы 2, 11, 15, чтобы предотвратить события STOP/KILL. Я пишу код псевдо -для уточнения:

~/.bashrc:

trap_signals
sent_password = send_sms_program <msisdn> <timeout>
print "Enter password: "
input_password = read_password_from_console
if (<timeout>) {
   logout
} else {
  if (input_password == key) {
     exit
  } else {
    logout
  }
}
1
04.03.2020, 14:33
1 ответ

Домашние каталоги пользователя требовательны к доступу других пользователей. Предполагается, что все в домашнем каталоге принадлежит пользователю этого дома. Вы, вероятно, сталкиваетесь с проблемами разрешений, поэтому символические ссылки определенно неправильный путь. Если вам не нужна реальная -синхронизация времени, а только синхронизация время от времени, у вас должны быть права доступа к обоим каталогам, наиболее вероятный вариант — стать суперпользователем. Затем вы можете выполнить синхронизацию и восстановить естественное владение. Вот как вы можете пойти:

id userB  # figure out the group of the userB, suppos the output is groupB
sudo -i   # become a superuser
rsync  -aP /home/userA/transfer/ /home/userB/transfer/ #sync using rsync
chown -R userB.groupB /home/userB/transfer # restore ownership

Если это работает для вас, это может быть оптимизировано для не -интерактивной одной -линейной команды:

sudo bash -c "rsync -a /home/userA/transfer/ /home/userB/transfer/ && chown -R userB.$(id -gn userB) /home/userB/transfer/"

ОБНОВЛЕНИЕ пример:

→ sudo ls -al /home/joker/trans/
total 8
drwxrwxr-x. 2 joker joker 4096 Feb 12 20:44.
drwx------. 9 joker joker 4096 Feb 12 20:33..
-rw-rw-r--. 1 joker joker    0 Feb 12 20:33 file1
-rw-rw-r--. 1 joker joker    0 Feb 12 20:33 file2

→ sudo ls -al /home/vagrant/trans/
total 8
drwxrwxr-x. 2 vagrant vagrant 4096 Feb 12 20:33.
drwx------. 4 vagrant vagrant 4096 Feb 12 20:34..
-rw-rw-r--. 1 vagrant vagrant    0 Feb 12 20:33 file1

→ sudo bash -c "rsync -aP /home/joker/trans/ /home/vagrant/trans/ && chown -R vagrant.$(id -gn vagrant) /home/vagrant/trans"
sending incremental file list
./
file2
              0 100%    0.00kB/s    0:00:00 (xfr#1, to-chk=0/3)

Здесь транс-подкаталог пользователя Joker синхронизирован с пользователем vagrant. Попробуйте воспроизвести с вами пользователей и увидите разницу. (Джокер имеет права sudo)

(*)Обратите внимание на косые черты в конце команд rsync, они важны

2
28.04.2021, 23:23

Теги

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