Выполнять команды sudo через Midnight Commander и sftp.

Вопрос или проблема

Я использую Midnight Commander для SFTP на моем Ubuntu VPS.

VPS требует sudo для любых важных действий, например, для копирования/перемещения/удаления файлов. Так для примера, я не могу нажать F5 для копирования (за исключением ~).

Возможно ли, чтобы mc запрашивал повышение привилегий / использовал sudo, когда это необходимо?

Да, это возможно. Я не знаю внутренностей mc, но в общем, вы должны вызывать sftp-server на удаленном хосте с помощью sudo. Есть два способа это сделать: на клиенте или на сервере. На клиенте вам нужно знать, как mc вызывает sftp, и изменить способ его вызова. Это проще сделать на сервере, где вы можете заставить его работать с помощью ForceCommand. См. https://unix.stackexchange.com/a/637624/330987

Изменение на клиенте (sudo на удаленном хосте настроен)

Для справки, нельзя использовать опцию RemoteCommand, sftp завершается с ошибкой Cannot execute command-line and remote command. (потому что в фоновом режиме sftp вызывает ssh ... -oRemoteCommand="/usr/bin/sudo /usr/libexec/sftp-server" ... -- localhost sftp, и sftp в конце фоновой команды, похоже, конфликтует с опцией RemoteCommand)

sftp -b - -s '/usr/bin/sudo /usr/libexec/sftp-server'

Но поскольку неясно, как mc использует SFTP, я бы рекомендовал перейти к подходу на стороне сервера (см. ниже).

Изменение на сервере

LogLevel DEBUG3
AuthorizedKeysFile      .ssh/authorized_keys
ChallengeResponseAuthentication no
UsePAM yes
PrintMotd no
Subsystem       sftp    /usr/libexec/sftp-server
Match User <mc user>
        X11Forwarding no
        AllowTcpForwarding no
        PermitTTY no
        ForceCommand /usr/bin/sudo /usr/libexec/sftp-server

Ответ или решение

Как выполнять команды sudo через Midnight Commander и SFTP на Ubuntu VPS

Midnight Commander (mc) является мощным файловым менеджером, который значительно упрощает работу с файлами на сервере. Однако, когда у вас есть права sudo на удалённом сервере, встречаются определенные ограничения, особенно когда вы хотите использовать функции, такие как копирование и перемещение файлов, которые требуют повышенных прав доступа. В данной статье мы рассмотрим, как эффективно использовать mc с SFTP для выполнения команд с правами sudo.

1. Проблема с использованием SFTP и sudo

При попытке выполнить команды, требующие прав суперпользователя (например, копирование файлов в защищенные директории), вы столкнетесь с тем, что стандартное использование SFTP с Midnight Commander ограничено. Ключи, такие как <kbd>F5</kbd> для копирования, работают только в домашней директории пользователя (~) без использования sudo. Это происходит из-за того, что mc не инициирует сессию SFTP с повышенными правами, и, следовательно, не может обращаться к системным директориям.

2. Подходы к решению проблемы

Существует два основных подхода, которые вы можете использовать для решения этой проблемы: изменение настроек на клиентской стороне или настройка сервера.

2.1 Изменение настроек на клиентской стороне

Для начала, если вы хотите изменить конфигурацию клиента, нужно протестировать, как именно mc вызывает SFTP. К сожалению, использование параметра RemoteCommand может вызвать проблемы, так как его использование с SFTP заканчивается ошибкой.

sftp -b - -s '/usr/bin/sudo /usr/libexec/sftp-server'

Этот подход может быть полезен, однако сложности в конфигурации mc могут сделать его менее эффективным.

2.2 Изменение настроек на серверной стороне

Более надежный подход заключается в конфигурации на стороне сервера. Вы можете использовать директиву ForceCommand в вашем файле конфигурации SSH, чтобы запускать sftp-server с правами sudo для определенного пользователя. Выполните следующие шаги:

  1. Редактирование конфигурационного файла SSH:
    Откройте файл конфигурации SSH на вашем сервере, обычно это /etc/ssh/sshd_config.

  2. Добавьте необходимые параметры:

    LogLevel DEBUG3
    AuthorizedKeysFile      .ssh/authorized_keys
    ChallengeResponseAuthentication no
    UsePAM yes
    PrintMotd no
    Subsystem       sftp    /usr/libexec/sftp-server
    Match User <mc_user>
           X11Forwarding no
           AllowTcpForwarding no
           PermitTTY no
           ForceCommand /usr/bin/sudo /usr/libexec/sftp-server

    Здесь <mc_user> замените на имя пользователя, под которым вы будете использовать Midnight Commander.

  3. Перезапустите SSH сервис:

    После внесения изменений сохраните файл и перезапустите SSH-сервер для применения изменений:

    sudo systemctl restart ssh

3. Проверка работоспособности

После выполнения всех вышеперечисленных шагов вы сможете подключаться к вашему VPS через Midnight Commander и выполнять команды, которые требуют повышения прав. Теперь, когда вы будете копировать или перемещать файлы, mc автоматически выполнит необходимые команды через sudo, что значительно упростит вашу работу.

Заключение

Использование Midnight Commander через SFTP с повышенными правами доступа возможно и может быть реализовано несколькими способами. С учетом предоставленных решений, вы сможете эффективно управлять файлами на вашем Ubuntu VPS даже при ограничениях, наложенных на использование sudo. Однако, рекомендуется предпочесть серверный подход с использованием ForceCommand, так как он обеспечивает лучшую безопасность и управляемость.

Эти шаги помогут вам оптимизировать ваш рабочий процесс и улучшить производительность при работе с удаленными серверами. Проводя необходимые настройки, вы значительно упростите выполнение команд с правами sudo в Midnight Commander, что сделает вашу работу более эффективной и удобной.

Оцените материал
Добавить комментарий

Капча загружается...