Làm cách nào để thêm người dùng ssh chỉ có quyền truy cập vào thư mục cụ thể?


17

Làm cách nào để thêm người dùng ssh chỉ có quyền truy cập vào thư mục cụ thể?

useradd -d /var/www/xyz.com.tr/musteri  -s /bin/bash -g sshd musteri

Tôi đã tạo một người dùng được gọi là musteri. Tôi đặt thư mục nhà và nhóm của nó. Vì vậy, tôi muốn tích hợp musteringười dùng vào "/var/www/xyz.com.tr/musteri". Tôi không muốn nó truy cập vào một thư mục khác.


Bạn có muốn người dùng có quyền truy cập shell đầy đủ, hoặc chỉ các giao thức sao chép tệp như sftp và rsync?
Gilles 'SO- đừng trở nên xấu xa'

Nếu sau này, bạn có thể muốn xem xét scponlynhư một trình bao, có thể hoạt động trong chrootchế độ để hạn chế quyền truy cập của anh ta vào thư mục đó và không ở đâu khác.
Shadur

1
@Gilles - Tôi muốn truy cập thông qua sftp. Nhưng, tôi không muốn nó truy cập vào một thư mục khác.
Ô-

1
@ Cell-o: Nếu bạn chỉ cần một vài giao thức truyền tệp và không phải shell, hãy sử dụng chroot plus scponly hoặc rssh (Google scponly chroothoặc rssh chrootsẽ dẫn bạn đến howtos).
Gilles 'SO- ngừng trở nên xấu xa'

Làm thế nào về việc sử dụng ACL?
fpmurphy

Câu trả lời:


19

Có vẻ như bạn muốn müşteriler của bạn có quyền truy cập tập tin vào một thư mục mà không thực sự cung cấp cho họ shell. Đây là một điều tốt bởi vì như binfalse đã chỉ ra , việc cung cấp cho mọi người những chiếc vỏ có quyền truy cập hạn chế là rất khó vì vỏ cần phải truy cập tất cả các loại thứ nằm rải rác trên hệ thống chỉ để chạy.

Để cấp quyền truy cập SFTP vào một thư mục cụ thể, bạn có thể làm một cái gì đó như thế này.

  1. Thêm một nhóm mới vào hệ thống, nói 'sftponly'.
  2. Thêm bất kỳ người dùng nào trên hệ thống của bạn nên có quyền hạn chế đối với nhóm này. Bạn cũng có thể cung cấp cho họ các shell bị hạn chế như / bin / true, nhưng không bắt buộc.
  3. Thay đổi tệp cấu hình ssh của bạn (Thông thường /etc/ssh/sshd_config) bằng các dòng này
    Hệ thống con sftp nội bộ-sftp

    Nhóm phù hợp sftponly
        ChrootDirectory% h
        Cho phépTCPForwarding không
        X11 không có
        ForceCommand nội bộ-sftp

Điều này sẽ kích hoạt hệ thống con sftp bên trong SSH và buộc các thành viên của nhóm hệ thống đó chỉ sử dụng hệ thống đó khi đăng nhập. Nó cũng sẽ chroot chúng vào thư mục nhà của chúng. Bạn có thể thay đổi đó thành một thư mục con của giám đốc nhà của họ cũng như một cái gì đó tương tự ChrootDirectory %h/musteri_sftpđể họ không thể lấy phần còn lại của tệp hệ thống mà sẽ đăng nhập trực tiếp vào thư mục con đặc biệt của thư mục nhà của họ.

Kolay gelsin.


Öncelikle teşekkürler. ;) Như bạn đã đề cập, tôi đã thiết lập SFTP. Nhưng, tôi có một vấn đề liên quan đến iptables. Đây là quy tắc của tôi. -> Trạng thái RH-Firewall-1-INPUT -m --state MỚI -m tcp -p tcp --dport 21 -j CHẤP NHẬN
Cell-o

1
Birşey değil. Mặc dù FTP sẽ sử dụng cổng 21, SFTP là giao thức giống như ftp chạy trên kênh SSH, do đó, nó sẽ sử dụng cổng SSH mà theo mặc định là 22.
Caleb

Lưu ý rằng bạn cũng nên xác định vị trí và nhận xét bất kỳ lệnh Hệ thống con nào hiện có trước đây (ví dụ: Hệ thống con sftp / usr / lib / openssh / sftp-server)
CnrL

Giải quyết vấn đề của tôi VÀ học một số cụm từ tiếng Thổ Nhĩ Kỳ tiện dụng! Tặng kem!
eimajenthat

2

Theo tôi điều này rất khó, nếu không nói là không thể. Khi người dùng kết nối qua SSH, anh ta ít nhất cũng cần một vỏ, trong trường hợp của bạn là bash. Để thực thi /bin/bashanh ta cần có quyền truy cập /bin. bashchính nó cần phải đọc một số thứ từ /etc(ví dụ /etc/bash.bashrc), vì vậy người dùng cũng cần truy cập /etc. Giả sử người dùng không chỉ muốn quanh quẩn trong thư mục này, anh ta có thể muốn đọc một tệp, nhưng để thực thi, ví dụ vimanh ta cũng cần truy cập /usr/bin.
Đây chỉ là một minh chứng nhỏ, có thêm một số phụ thuộc, ví dụ tôi không thực sự biết điều gì sẽ xảy ra nếu người dùng không có quyền truy cập vào /tmp..

Bạn nên suy nghĩ về ý định của bạn. Bạn có muốn ai đó có quyền truy cập đọc / ghi vào một phần của dịch vụ web của bạn không? Sau đó, bạn có thể thiết lập một cái gì đó như FTP để xuất một thư mục cụ thể cho người dùng này. Vì vậy, anh ta có thể đọc / ghi tệp này mà không cần truy cập SSH.
Một giải pháp tốt đẹp khác sẽ là một kho lưu trữ. Ví dụ: thiết lập repo GIT và cho phép người dùng sao chép nó. Anh ấy có thể thực hiện các thay đổi của mình tại địa phương và gửi cho bạn một bản vá. Bạn có thể quyết định có nên áp dụng bản vá này hay không, việc khôi phục các bản vá lỗi cũng rất dễ dàng.


rbashđược thiết kế để làm chính xác điều này.
bahamat

Điều này được gọi là vỏ hạn chế . Nhưng vì Cell-o chỉ muốn cho phép truyền tệp, nên đây không phải là công cụ phù hợp.
Gilles 'SO- ngừng trở nên xấu xa'
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.