Возможный дубликат:
Разрешения каталога Linux
Я работаю с некоторыми сторонними разработчиками, и я хотел бы предоставить SFTP (или FTP) доступ к корневой папке для веб-сайта, над которым они работают, т.е. '/var/www/html/website_abc'
чтобы они могли загружать туда файлы. Обратите внимание, что я размещаю другие свои веб-сайты на том же экземпляре EC2, например. '/var/www/html/website_xyz'
.
Просто чтобы подчеркнуть, что я работаю с несколькими веб-сайтами на одном экземпляре EC2, структура веб-сайтов следующая:
/ var / www / html /
/ var / www / html / website_abc
...
/ var / www / html / website_xyz
Мои цели следующие:
Я провел поиск, но большинство людей говорили о том, как получить доступ к EC2 через SFTP, который я уже могу использовать с WinSCP.
Разъяснения:
/var/www/html/website_abc
это разрешение на запись/var/www/html/
, и в идеале даже без разрешения на "чтение"/var/www/html/
уже имеет разрешение 777, так как это моя папка DocumentRoot. Итак, как мне остановить «разработчик» от доступа к другому моему сайту?Частично решено Мне удалось достичь своих целей с помощью OpenSSH (я создаю папку .ssh внутри / var / www / html / website_abc / и генерирую закрытый ключ и передаю его сторонним разработчикам). Я также узнал, что никогда не должен отдавать файл закрытого ключа, который мне дал AWS. Все еще изучаю chroot.
По умолчанию службы, которые предоставляют удаленную оболочку, например ssh или telnet, или интерактивный удаленный сеанс для таких команд, как sftp, позволяют локальному пользователю переходить в любой каталог, для которого у него есть разрешения, и извлекать копию любого файла, к которому у него есть доступ.
Как общая конфигурация безопасности это неудачно, потому что есть много файлов и каталогов, которые по необходимости доступны для чтения всем. Например, вот я - пользователь без полномочий root на каком-то удаленном сервере CentOS;
$ cd /etc
-bash-3.2$ ls -1
acpi
adjtime
aliases
...
например Я могу получить доступ к множеству вещей, которые в идеале вы хотели бы ограничить от какого-то неизвестного пользователя, которому вы хотите предоставить локальный доступ.
Вот я смотрю на всех локальных пользователей, настроенных в /etc/passwd
файл;
$ cat /etc/passwd
root:x:0:0:root:/root:/bin/bash
bin:x:1:1:bin:/bin:/sbin/nologin
...
Системы Unix предоставляют chroot
команда, которая позволяет сбросить /
пользователя в какой-либо каталог в иерархии файловой системы, где они не могут получить доступ к файлам и каталогам «более высокого уровня».
Однако в вашем случае было бы целесообразно предоставить виртуальный chroot, реализованный службой удаленной оболочки. sftp можно легко настроить, чтобы ограничить локального пользователя определенным подмножеством файловой системы, используя конфигурацию в
следовательно, в вашем случае вы хотите chroot
в adeveloper
пользователя в /var/www/html/website_abc
каталог.
Вы можете установить каталог chroot для вашего пользователя, чтобы ограничить его подкаталогом /var/www/html/website_abc
как в /etc/ssh/sshd_config
;
Для этого требуется openssh-server более поздней версии, чем 4.8 ?, поэтому, вероятно, потребуется CentOS 6.2.
Match Group sftp
ChrootDirectory %h
AllowTcpForwarding no
(не проверено, см. man sshd_config
для подтверждения синтаксиса)
а затем добавьте этих пользователей в группу sftp;
groupadd sftp
usermod -d /var/www/html/website_abc adeveloper
usermod -G sftp adeveloper
Что касается общих ключей
вам следует создать дополнительную пару ключей для пользователей-разработчиков и отправить ее своему консультанту. (или, альтернативно, попросите их отправить вам свой открытый ключ и добавить его в файл authorized_keys для adeveloper
)
никогда не отдавайте свой закрытый ключ, поэтому он называется закрытым ;-)
традиционные альтернативы ftp
vsftp / proftp и т. д. также поддерживают конфигурации chroot, но в наши дни конфигурации на основе ssh являются нормальным способом, а поддержка ftp является только исторической.
здесь есть пара ссылок на руководства;
http://www.techrepublic.com/blog/opensource/chroot-users-with-openssh-an-easier-way-to-confine-users-to-their-home-directories/229
http://www.howtoforge.com/chrooted-ssh-sftp-tutorial-debian-lenny