Отказано в разрешении Rsync mkdir

#linux #ubuntu #rsync

#linux #ubuntu #rsync

Вопрос:

Я пытаюсь использовать «Rsync» для копирования моего каталога spark на все подчиненные компьютеры с помощью этой команды:

 rsync -avL --progress /path/to/spark-0.9.0-incubating ubuntu@<Public_ip_of_slave>:/usr/local` 
  

Я следую инструкциям на этом сайте:

http://docs.sigmoidanalytics.com/index.php/Setup_hadoop_2.0.0-cdh4.2.0_and_spark_0.9.0_on_ubuntu_aws_cluster«

но я столкнулся с ошибкой, в которой отказано в разрешении создавать папки в пункте назначения.

Кто-нибудь может мне помочь?

Комментарии:

1. у вас неверный целевой синтаксис. это должно быть user@host:/some/dir (хотя /some/dir может быть ~ , вам следует избегать использования ~ )

2. Я тоже пробовал это, но не работает

3. Можете ли вы создать целевой каталог вручную в командной строке после ssh на удаленный сервер?

4. Я думаю, проблема в том, что у меня не было папки назначения, у root был. Поэтому я должен использовать команду chown в папке назначения, чтобы сделать ее своей, а не root, но как я не знаю.

5. попробуйте вручную воспроизвести то, что будет делать rsync, то есть ssh на удаленный сервер, и mkdir /path/to/spark-0.9.0-incubating . затем попробуйте создать файлы в этом каталоге. если вы не можете, значит, не можете rsync

Ответ №1:

У ubuntu пользователя (для которого вы используете scp ) нет соответствующих разрешений на каталог /usr/local на удаленном сервере.

Неправильная настройка может привести к проблемам безопасности, поэтому изменение разрешения каталога /usr/local не рекомендуется. Если вы хотите это сделать, запустите:

 ssh ubuntu@remote-server 'sudo chown root:ubuntu /usr/local'
  

где remote-server имя хоста или IP-адрес удаленного сервера, и предполагается, что ubuntu это администратор. Вы также можете разрешить всем другим пользователям выполнять запись в каталог:

 ssh ubuntu@remote-server 'sudo chmod o w /usr/local'
  

но это более опасно, чем предыдущий вариант.

В качестве альтернативы, вы можете сначала скопировать его в свой домашний каталог, а затем выполнить sudo команду для перемещения файлов в /usr/local :

 rsync -avL --progress /path/to/spark-0.9.0-incubating ubuntu@remote-server:~
ssh ubuntu@remote-server 'sudo mv ~/spark-0.9.0-incubating /usr/local'
  

~ будет расширен до домашнего каталога пользователя, который в данном случае, вероятно, будет /home/ubuntu/ .

Не забудьте соответствующим образом изменить разрешения /usr/local/spark-0.9.0-incubating , чтобы разрешить доступ авторизованным пользователям с помощью chmod команды.