Як додати користувача з доступом SFTP / FTP до папки '/ var / www / html / website_abc' в Amazon EC2 Centos?


19

Можливий копій:
дозволи на каталог 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 @ [мій пружний IP]' як ім'я користувача для входу в SFTP (або FTP), я прав?
  • Користувач 'adeveloper' не має доступу до '/ var / www / html /' або будь-яких інших каталогів у моєму екземплярі EC2
  • Як щодо файлу приватного ключа?
    • Я передаю файл свого приватного ключа стороннім розробникам - чи доцільно це зробити?
    • Чи є спосіб створити для них інший файл приватного ключа або дозволити їм увійти, замість цього ім'я користувача та пароль?

Я здійснив пошук, але більшість людей говорили про те, як отримати доступ до EC2 через SFTP, який я вже зможу використовувати WinSCP.

Роз'яснення:

  • Мені знадобиться "адевелопер", щоб можна було завантажувати матеріали, на /var/www/html/website_abcякі є дозвіл "написати"
  • Мені знадобиться "adeveloper", щоб не було дозволу "write" для будь-яких файлів / каталогів /var/www/html/, а в ідеалі навіть не було дозволу "read"
  • Однак тут, здається, є велика проблема:
    • /var/www/html/вже має дозвіл 777, оскільки це моя папка DocumentRoot. Отже, як я можу зупинити "адекватний" доступ до свого іншого веб-сайту?

Частково вирішивши, мені вдалося досягти своїх цілей за допомогою OpenSSH (я створюю папку .ssh всередині / var / www / html / website_abc / і генерую приватний ключ і надаю його стороннім розробникам). Я також дізнався, що ніколи не повинен видавати файл приватного ключа, який мені дав AWS. Ще дізнаюся про chroot.


1
Вибачте @lain, але ви, мабуть, мене зрозуміли неправильно. Я думаю, ви могли б витратити час, роблячи щось інше, більш значиме, ніж давати помилкове судження, як це. Можливо, якщо ви уважно прочитаєте моє запитання, ви б дійсно мали більше стосунку до SSH / SFTP, ніж дозволів для файлів / папок Linux, або, скоріше, це було плутанини між собою (чому я плутався? Не знаю, ось чому Мені була потрібна допомога). Це не точний дублікат іншого потоку, як ви вважали. У будь-якому разі мені вдалося досягти своїх цілей за допомогою OpenSSH. Я все ще дізнаюся про chroot, як це запропонував Том Х і деякі результати пошуку. Спасибі
ericn

"Я також дізнався, що ніколи не повинен передавати файл приватного ключа. AWS дав мені" Чому .....
Майкл Бейлі,

Відповіді:


11

За замовчуванням служби, які надають віддалену оболонку, наприклад ssh або telnet, або інтерактивний віддалений сеанс для команд, таких як sftp, дозволяють місцевому користувачу переходити до будь-якого каталогу, до якого вони мають дозволи, і отримують копію будь-якого файлу, до якого вони мають доступ.

Як загальну конфігурацію безпеки, це прикро, оскільки є багато файлів і каталогів, які читаються на усьому світі за необхідністю. Наприклад, ось я некорінний користувач на якомусь віддаленому вікні 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

Щодо спільних ключів

ви повинні створити додатковий ключ для відповідних користувачів і надіслати його своєму консультанту. (або, можливо, дозволити їм надіслати ваш відкритий ключ та додати його у файл дозволених ключів для 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


Я досі не міг розібратися з chroot, але я все ще в навчанні і ще не відмовився. Мені вдалося досягти зазначених вище цілей, використовуючи OpenSSH. Ще раз
дякую
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.