Как добавить пользователя с доступом SFTP/ FTP в папку "/var/www/html/website_abc" в Amazon EC2 Centos?
Возможный дубликат:
Разрешения для каталога 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
Мои цели заключаются в следующем:
- Пользователь 'adeveloper' имеет доступ к '/var/www/html/website_abc' и только к '/var/www/html/website_abc'
- Я полагаю, что пользователь "adeveloper" будет использовать "adeveloper@[мой эластичный IP]" в качестве имени пользователя для входа в SFTP (или FTP), я прав?
- Пользователь 'adeveloper' не имеет доступа к '/ var / www / html /' или любым другим каталогам в моем экземпляре EC2
- Как насчет файла закрытого ключа?
- Передам ли я свой файл закрытого ключа сторонним разработчикам - это целесообразно?
- Есть ли способ создать для них другой файл с закрытым ключом или разрешить им входить в систему с именем пользователя и паролем?
Я провел поиск, но большинство людей говорили о том, как получить доступ к EC2 через SFTP, что я уже могу использовать WinSCP.
Разъяснения:
- Мне нужно было бы "Разработчик", чтобы иметь возможность загружать материалы в
/var/www/html/website_abc
что является разрешением "запись" - Мне нужно было бы "adeveloper", чтобы не иметь разрешения на "запись" для любых файлов / каталогов в
/var/www/html/
и, в идеале, даже не "чтение" разрешение - Однако здесь, похоже, есть большая проблема:
/var/www/html/
уже имеет разрешение 777, так как это моя папка DocumentRoot. Итак, как мне запретить доступ "разработчика" к моему другому веб-сайту?
Частично решено. Мне удалось достичь своих целей с помощью OpenSSH (я создаю папку.ssh внутри /var/www/html/website_abc/, создаю закрытый ключ и передаю его сторонним разработчикам). Я также узнал, что никогда не должен передавать файл с закрытым ключом, который мне дал AWS. Все еще учусь о chroot.
1 ответ
По умолчанию службы, предоставляющие удаленную оболочку, например 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-сервер более поздней версии, чем 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
Относительно общих ключей
Вы должны создать дополнительную пару ключей для пользователей-разработчиков и отправить ее своему консультанту. (или, альтернативно, пусть они отправят ваш открытый ключ и добавят его в файл author_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