Làm cách nào để thêm người dùng có quyền truy cập SFTP / FTP vào thư mục '/ var / www / html / website_abc' trên Amazon EC2 Centos?


19

Có thể trùng lặp:
quyền thư mục Linux

Tôi đang làm việc với một số nhà phát triển bên thứ ba và tôi muốn cấp quyền truy cập SFTP (hoặc FTP) vào thư mục gốc cho một trang web họ đang làm việc tức là '/var/www/html/website_abc'để họ có thể tải lên các tệp ở đó. Lưu ý rằng tôi đang lưu trữ các trang web khác của tôi ở đó trên cùng một ví dụ EC2, vd '/var/www/html/website_xyz'.

Chỉ cần nhấn mạnh rằng tôi đang làm việc với nhiều trang web trên 1 phiên bản EC2, cấu trúc của các trang web như sau:

/ var / www / html /
/ var / www / html / website_abc
...
/ var / www / html / website_xyz

Mục tiêu của tôi như sau:

  • Người dùng 'nhà phát triển' có quyền truy cập vào '/ var / www / html / website_abc' và chỉ '/ var / www / html / website_abc'
    • Tôi cho rằng người dùng 'nhà phát triển' sẽ sử dụng 'nhà phát triển @ [IP đàn hồi của tôi]' làm tên người dùng để đăng nhập vào SFTP (hoặc FTP), phải không?
  • Người dùng 'nhà phát triển' không có quyền truy cập vào '/ var / www / html /' hoặc bất kỳ thư mục nào khác trong ví dụ EC2 của tôi
  • Làm thế nào về các tập tin khóa riêng?
    • Tôi có chuyển tệp khóa riêng của mình cho nhà phát triển bên thứ ba không - có nên làm như vậy không?
    • Có cách nào để tạo một tệp khóa riêng khác cho họ hoặc cho phép họ đăng nhập bằng tên người dùng và mật khẩu thay thế không?

Tôi đã thực hiện tìm kiếm nhưng hầu hết mọi người đang nói về cách truy cập EC2 thông qua SFTP mà tôi đã có thể sử dụng WinSCP.

Làm rõ:

  • Tôi sẽ cần 'nhà phát triển' để có thể tải lên /var/www/html/website_abcnhững thứ được phép 'viết'
  • Tôi sẽ cần 'nhà phát triển' để không có quyền 'ghi' cho bất kỳ tệp / thư mục nào bên dưới /var/www/html/ , và lý tưởng nhất là không có quyền 'đọc'
  • Tuy nhiên, dường như có một vấn đề lớn ở đây:
    • /var/www/html/đã có quyền 777 vì đây là thư mục DocumentRoot của tôi. Vậy, làm cách nào để tôi ngăn 'nhà phát triển' truy cập trang web khác của mình?

Đã giải quyết được một phần Tôi đã quản lý đạt được mục tiêu của mình bằng OpenSSH (Tôi tạo thư mục .ssh bên trong / var / www / html / website_abc / và tạo khóa riêng và cung cấp cho nhà phát triển bên thứ ba). Tôi cũng học được rằng tôi không bao giờ nên đưa tệp khóa riêng AWS đưa cho tôi. Vẫn đang học về chroot.


1
Tôi xin lỗi @lain nhưng bạn đã hiểu lầm tôi. Tôi đoán bạn có thể dành thời gian để làm một việc khác có ý nghĩa hơn là đưa ra phán xét sai lầm như thế này. Có lẽ nếu bạn đọc kỹ câu hỏi của tôi, bạn thực sự có liên quan nhiều đến SSH / SFTP hơn là quyền của tệp / thư mục Linux hay đúng hơn là sự nhầm lẫn giữa (tại sao tôi lại bối rối? Tôi không biết, đó là lý do tại sao Tôi cần giúp đỡ). Đây không phải là một bản sao chính xác của các chủ đề khác như bạn cho là. Dù sao, tôi đã xoay sở để đạt được mục tiêu của mình bằng OpenSSH. Tôi vẫn đang tìm hiểu về chroot theo đề xuất của Tom H và một số kết quả tìm kiếm. Cảm ơn
ericn

"Tôi cũng học được rằng tôi không bao giờ nên đưa tập tin khóa riêng AWS đưa cho tôi" Tại sao .....
Michael Bailey

Câu trả lời:


11

Theo các dịch vụ mặc định cung cấp shell từ xa, như ssh hoặc telnet hoặc phiên từ xa tương tác cho các lệnh như sftp, cho phép người dùng cục bộ thay đổi vào bất kỳ thư mục nào họ có quyền và truy xuất bản sao của bất kỳ tệp nào họ có quyền truy cập.

Là một cấu hình bảo mật chung, điều này thật đáng tiếc bởi vì có nhiều tệp và thư mục có thể đọc được trên thế giới. Ví dụ ở đây là tôi một người dùng không root trên một số hộp CentOS từ xa;

$ cd /etc
-bash-3.2$ ls -1
acpi
adjtime
aliases
...

ví dụ: tôi có thể truy cập nhiều nội dung, lý tưởng nhất là bạn muốn hạn chế từ một số người dùng không xác định mà bạn muốn cung cấp quyền truy cập cục bộ.

Đây là tôi nhìn vào tất cả người dùng cục bộ được cấu hình trong /etc/passwdtệp;

$ cat /etc/passwd
root:x:0:0:root:/root:/bin/bash
bin:x:1:1:bin:/bin:/sbin/nologin
...

Các hệ thống Unix cung cấp chrootlệnh cho phép bạn đặt lại /người dùng vào một số thư mục trong hệ thống phân cấp hệ thống tệp, nơi họ không thể truy cập các tệp và thư mục "cao cấp".

Tuy nhiên, trong trường hợp của bạn, nó sẽ thích hợp để cung cấp một chroot ảo được triển khai bởi dịch vụ shell từ xa. sftp có thể được cấu hình dễ dàng để hạn chế người dùng cục bộ trong một tập hợp con cụ thể của hệ thống tập tin bằng cách sử dụng một cấu hình trong

do đó trong trường hợp của bạn, bạn muốn chrootnhững adeveloperngười sử dụng vào các /var/www/html/website_abcthư mục.

Bạn có thể đặt thư mục chroot cho người dùng của mình để giới hạn chúng vào thư mục con /var/www/html/website_abcnhư vậy trong /etc/ssh/sshd_config;

Công cụ này yêu cầu máy chủ openssh muộn hơn 4,8?, Vì vậy có lẽ cần CentOS 6.2

Match Group sftp
    ChrootDirectory %h
    AllowTcpForwarding no

(chưa được kiểm tra, xem man sshd_configđể xác nhận cú pháp)

và sau đó thêm những người dùng đó vào nhóm sftp;

 groupadd sftp
 usermod -d /var/www/html/website_abc adeveloper
 usermod -G sftp adeveloper

Về khóa chia sẻ

bạn nên tạo một cặp khóa bổ sung cho người dùng nhà phát triển và gửi nó cho chuyên gia tư vấn của bạn. (hoặc cách khác, yêu cầu họ gửi khóa công khai của bạn và thêm nó vào tệp ủy quyền cho adeveloper)

không bao giờ từ bỏ khóa riêng của bạn, đó là lý do tại sao nó được gọi là riêng tư ;-)

lựa chọn thay thế ftp truyền thống

vsftp / proftp vv cũng hỗ trợ các cấu hình chroot, nhưng trong cấu hình dựa trên ssh hiện đại này là cách thông thường và hỗ trợ cho ftp chỉ là lịch sử.

Có một vài liên kết đến các hướng dẫn ở đây;
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/chroote-ssh-sftp-tutorial-debian-lenny


Tôi đã không thể tìm ra chroot cho đến nay nhưng tôi vẫn đang học và chưa từ bỏ. Tôi đã quản lý để đạt được các mục tiêu đã nêu ở trên bằng cách sử dụng OpenSSH. Cảm ơn một lần nữa
ericn
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.