Вот такая ситуация. У меня есть пользовательский доступ к серверу и root-доступ к тому же серверу. Я хочу редактировать файлы для пользователя, для которого у меня нет пароля на сервере. ssh'ing как root отключен, поэтому я обычно ssh в качестве своего пользователя, а затем su для root. Затем я перехожу к домашнему каталогу интересующего пользователя, а затем su к интересующему пользователю (при условии, что у интересующего пользователя есть доступ к оболочке). Если у пользователя нет доступа к серверу через оболочку, я вынужден изменить файлы с правами root, что мне не нравится. Итак, мой первый вопрос: как я могу безопасно изменять файлы пользователя, не будучи root, если у пользователя нет доступа к оболочке?
Второй вопрос касается передачи файлов в учетную запись пользователя с помощью графического SFTP программа с моего рабочего стола. Поскольку у меня нет информации для входа в систему интересующего пользователя (и у пользователя может не быть доступа к оболочке), я не могу использовать sftp непосредственно в учетной записи пользователя, а также не могу sftp как root. Поэтому вместо этого я использую свою графическую программу SFTP для sftp в домашний каталог моей учетной записи на сервере. Затем я передаю файлы через программу SFTP в домашний каталог моей учетной записи на сервере, а затем вручную копирую их как root из домашнего каталога моего пользователя в домашний каталог интересующего пользователя. Очевидно, это неэффективно, и я хочу найти лучшее решение. Что это?
Примечание: я понимаю, что могу использовать командную строку scp
программа для передачи файлов непосредственно в домашний каталог интересующего пользователя, но я хочу использовать графическую программу SFTP.
Настройте пару ключей rsa / dsa на своем компьютере (ssh-keygen -t rsa), затем добавьте открытый ключ в файл ~ / .ssh / authorized_keys соответствующего пользователя. Если ~ / .ssh не существует - создайте его с разрешениями 700, принадлежащими пользователю.
Затем вы сможете войти в систему как этот пользователь, используя только ключи (без паролей).
http://winscp.net/eng/docs/faq_su
Ни один из протоколов (SFTP, FTP и SCP), поддерживаемых WinSCP, не позволяет изменять пользователя в середине сеанса передачи файлов. Вам необходимо начать сеанс с правильным пользователем.
В некоторых случаях (с сервером Unix / Linux) вы можете использовать команду sudo сразу после входа в систему, чтобы изменить пользователя, до начала сеанса передачи файлов.
Протоколы SFTP и SCP позволяют это, но фактический метод зависит от платформы.
su -c bash --login должен предоставить вам оболочку в качестве этого пользователя независимо от их оболочки входа по умолчанию (отключенной). Вы также можете поместить строку для себя в их файл ~ / .ssh / authorized_keys, и это позволит вам войти в систему под их именем без использования их пароля.
Проголосовали за ключевые решения неизвестного WinSCP и SSH Брента.
Замечу, что вы можете использовать эти два решения вместе.
Если вы не уверены в генерации ключа, вы можете использовать PuTTyGen и WinSCP будет счастлив использовать созданный формат.
У su есть опция -s, чтобы указать оболочку, которая будет использоваться, если у пользователя нет доступа к оболочке. Например:
su -s /bin/bash www-data
Если я понимаю ваши вопросы, самый простой ответ - игнорировать проблемы SSH и рассматривать их как проблему с разрешениями. Когда пользователи хотят предоставить общий доступ к файлам, они помещаются в одну группу, а права доступа к файлам устанавливаются таким образом, чтобы эта группа имела доступ.