Следующая проблема: мы запускаем веб-сервер CentOS и хотели бы предоставить доступ внешнему подрядчику, которому требуется только доступ к нашей веб-папке «/ var / www» для изменения / загрузки файлов.
Я попробовал настроить тюремное заключение SFTP (согласно следующей документации: http://www.thegeekstuff.com/2012/03/chroot-sftp-setup/), но я не могу заставить его работать по следующей причине: вся веб-папка назначила Apache User apache: apache, как обычно в CentOS. Но SFTP должен иметь права root: root, иначе появится следующая ошибка:
фатальный: неправильное владение или режимы для компонента каталога chroot "/ var / www /" [postauth] Итак, как я могу настроить SFTP или другое решение, чтобы сохранить папку "www" apache: apache и разрешить доступ другому пользователю Это?
Есть ли другие варианты решения этой проблемы, кроме SFTP, или SFTP - правильный выбор?
Заранее спасибо за вашу помощь!
Наконец, я использовал SFTP для решения упомянутой проблемы. Основные проблемы, связанные с файлом permissions. Я сделал следующие шаги (запустил CentOS 7.2):
Права доступа к папке Установлены следующие права доступа к файлам. Включая липкий бит (поясняется после кода).
sudo find /var/www/html/ -type f -exec chmod 664 {} \;
sudo find /var/www/html/ -type d -exec chmod 775 {} \;
sudo find /var/www/html/ -type d -exec chmod g+s {} \; # Set SGID in order to keep group for newly created files
sudo chown -R apache:webmasters /var/www/html/website/data/ # As data directory must be writable by apache
chown root:root /var/www/
Создать группу и пользователей
Создайте пользователя для внешнего провайдера и установите новый пароль.
groupadd webmasters
useradd -g webmasters -d /var/www/ -s /sbin/nologin externalProvider
passwd externalProvider
Настроить подсистему sftp-server в sshd_config
vim /etc/ssh/sshd_config
Удалите комментарии из существующей подсистемы и добавьте:
Subsystem sftp internal-sftp
Добавить добавить конец sshd_config
Match Group sftpusers
Match Group webmasters
ChrootDirectory /var/www/
AllowTCPForwarding no
X11Forwarding no
ForceCommand internal-sftp
Перезапустить службу sshd
systemctl restart sshd
Войдите через SFTP, чтобы проверить соединение
sftp externalProvider@hostname
Безопасность
SELinux является принудительным и никогда не был проблемой в отношении этой настройки SFTP.