Вопрос или проблема
Мне нужно предоставить SSH-доступ только для чтения к определенной директории, чтобы они могли посмотреть мой PHP-код.
Директория – /var/www/html/websitenamehere/
Как я могу создать пользователя и разрешить ему вход через SSH, чтобы он мог увидеть и только читать эту директорию? Это возможно?
Я привык входить только как root.
Что-то вроде:
-
Создать пользователя
useradd readonlyuser
-
Введите его пароль, если хотите использовать аутентификацию по паролю, в противном случае настройте SSH-ключи
passwd readonlyuser
-
Дать разрешения на чтение и выполнение владельцу директории и всем её подпапкам и файлам
chmod -R u+rx /var/www/html/websitenamehere/
(буква
u
вu+rx
обозначаетпользователь
, тогда какo
будет обозначатьдругие
– обычно это наименее привилегированная группа в UNIX-правах) -
Установить домашнюю директорию пользователя
usermod -d /var/www/html/websitenamehere/ readonlyuser
Или вы можете просто создать архив файловой системы и отправить его пользователю с помощью чего-то вроде
tar cfvz websitenamehere.tar.gz /var/www/html/websitenamehere/
.
Ответ или решение
Чтобы предоставить пользователю доступ лишь для чтения к определенному каталогу через SSH, следуйте пошаговой инструкции, охватывающей создание учетной записи пользователя, настройку прав доступа и возможные дополнительные меры безопасности.
Шаг 1: Создание нового пользователя
Первым делом необходимо создать нового пользователя с именем readonlyuser
. Для этого выполните команду:
sudo useradd readonlyuser
Эта команда создаст нового пользователя, но не задаст ему пароль. Для возможности входа пользователя через SSH, рекомендуется установить пароль:
sudo passwd readonlyuser
Следуйте инструкциям для установки надежного пароля.
Шаг 2: Установка SSH-ключей (опционально)
Если вы предпочитаете использовать аутентификацию по ключам SSH (что более безопасно, чем пароли), выполните следующие шаги на компьютере пользователя:
-
Сгенерируйте SSH-ключи, если их ещё нет:
ssh-keygen -t rsa -b 2048
-
Скопируйте публичный ключ на сервер, выполнив:
ssh-copy-id readonlyuser@your_server_ip
Шаг 3: Настройка прав доступа к каталогу
Теперь, чтобы предоставить доступ к каталогу /var/www/html/websitenamehere/
, нужно корректно настроить права доступа. Для этого выполните следующие команды для изменения прав доступа:
sudo chown -R :readonlyuser /var/www/html/websitenamehere/
sudo chmod -R 550 /var/www/html/websitenamehere/
Объяснение команд:
chown -R :readonlyuser
– изменяет группу для всех файлов и подпапок в указанном каталоге наreadonlyuser
.chmod -R 550
– задает права доступа: владелец может читать и исполнять, а группа — только читать.
Важно, чтобы пользователь readonlyuser
находился в группе, которая имеет доступ на чтение файлов.
Шаг 4: Настройка домашнего каталога (необязательно)
Если вы хотите, чтобы пользователь автоматически находился в определенном каталоге при входе в систему, возможно, стоит установить его домашний каталог:
sudo usermod -d /var/www/html/websitenamehere/ readonlyuser
Шаг 5: Дополнительные ограничения (необязательно)
Для дополнительных мер безопасности можно рассмотреть использование chroot
. Это позволит ограничить действия пользователя только в его каталоге. Однако настройка chroot
может быть сложной и требует тщательной настройки.
Заключение
Теперь вы создали пользователя с правами только для чтения к каталогу, который необходим для работы. Этот подход обеспечивает безопасный доступ к вашим файлам без риска их изменения или удаления. При необходимости вы всегда можете дополнительно изучить методы жесткого контроля доступа, такие как ограничение команд через sudo
или использование специальной оболочки (shell).
Соблюдение предложенного порядка действий будет гарантировать, что ваш пользователь получит доступ лишь для чтения нужных файлов, сохраняя работоспособность и безопасность вашей системы.