У меня есть сервер Ubuntu, к которому я подключаюсь как администратор, который может делать sudo. На этом сервере я создал dir /opt /myapp. Я должен был сделать sudo mkdir, иначе это не сработало бы. Теперь с моего рабочего стола я хочу сделать:

scp myfile admin@example.com:/opt/myapp

но я получаю разрешение отказано. Но если я

scp myfile admin@example.com:

отлично работает и myfile находится в каталоге /home /admin.

Как решить эту проблему?

2 ответа2

1

Во-первых ... может быть, это не очень хорошая идея. Может случиться так, что разрешения установлены таким образом, чтобы не дать людям делать то, что вы пытаетесь сделать, по какой-то уважительной причине. Тем не менее, вы капитан своей судьбы.

Узнайте, кто может написать в этот каталог. Делать:

ls -ld /opt/myapp

и вы получите что-то вроде:

drwxr-xr-x 6 myapp_user myapp_group 55 Sep 10  2016 /opt/myapp

Потенциальный вариант 1: переключиться на учетную запись пользователя, созданную для этого приложения. например:

scp myfile myapp_user@example.com:/opt/myapp

Но у вас, вероятно, нет пароля для этого пользователя. Потенциально, вы можете решить это путем аутентификации с помощью ключа. https://www.techrepublic.com/article/how-to-use-secure-copy-with-ssh-key-authentication/

Потенциальный вариант 2: Измените права доступа к каталогу /opt /myapp на 774 (или 770)

chmod 774 /opt/myapp

Затем сделайте пользователя с правами администратора членом группы, которая теперь имеет права на запись. https://www.howtogeek.com/50787/add-a-user-to-a-group-or-second-group-on-linux/ Это не очень хорошо, так как вы можете столкнуться с проблемами из-за блокировки от более -запись файлов (в зависимости от того, что происходит).

0

Либо сделать это в два этапа:

  1. Скопируйте файл на свой домашний каталог на сервере
  2. Войдите на сервер и переместите файл с помощью sudo

Или, если вы можете сделать что-нибудь с помощью sudo без ввода пароля, вы можете проявить творческий подход с помощью cat , tee и redirections:

cat myfile | ssh admin@example.com 'sudo tee /opt/myapp/myfile > /dev/null'

обратите внимание, что вам придется указать имя файла дважды. Это не рекомендуется, хотя есть много вещей, которые могут дать сбой и привести к нежелательным результатам.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .