Để tạo người dùng SSH, người chỉ có quyền truy cập vào các thư mục cụ thể


47

Tôi đã cài đặt SSH, nhưng tôi thấy nếu tôi sử dụng tài khoản gốc của mình để đăng nhập vào Ubuntu, nó có quá nhiều quyền.

Tôi muốn hạn chế người dùng chỉ có quyền đối với các thư mục cụ thể trong Ubuntu. Làm thế nào tôi có thể cấu hình một người dùng như vậy?

Câu trả lời:


49

Cái này đơn giản. Chỉ cần tạo một người dùng mới với thư mục chính của nó được đặt thành người dùng mà bạn cần anh ta có quyền truy cập (lệnh này phải được chạy dưới sudohoặc trong vỏ gốc):

adduser --home /restricted/directory restricted_user

Điều này sẽ tạo ra một người dùng restricted_user, thư mục /restricted/directoryvà sau đó quyền trên thư mục sẽ được thiết lập để người dùng có thể ghi vào nó. Theo mặc định, nó sẽ không có khả năng ghi vào bất kỳ thư mục nào khác.

Nếu bạn đã có thư mục, bạn có thể chạy adduserlệnh với --no-create-hometùy chọn được nối thêm và đặt quyền theo cách thủ công (cũng với quyền root), như:

chown restricted_user:restricted_user /restricted/directory
chmod 755 /restricted/directory

Nếu bạn cần làm cho các thư mục có thể ghi được trên thế giới không thể truy cập được đối với người dùng này, có hai biến thể.

1) Nếu bạn muốn cung cấp phiên shell tương tác cho người dùng, thì hãy xem xét việc làm theo hướng dẫn này về cách tạo ra một nhà tù chroot (trong của bạn /restricted/directory).

Sau đó, thêm các mục sau vào sshd_config:

Match user restricted_user
  ChrootDirectory /restricted/directory

2) Nếu bạn chỉ cần anh ấy sao chép các tập tin giữa điểm cuối kết nối của anh ấy và máy chủ của bạn, mọi thứ sẽ dễ dàng hơn nhiều. Thêm những dòng này vào cuối của bạn sshd_config:

Match user restricted_user
  ForceCommand internal-sftp
  ChrootDirectory /restricted/directory

Subsystem       sftp    internal-sftp

Sau đó nhận xét Subsystem sftp /usr/lib/openssh/sftp-serverbằng cách đặt dấu băm ( #) khi bắt đầu.

Sau khi khởi động lại máy chủ SSH của bạn (nó không giết các phiên tương tác khi khởi động lại, vì vậy nó an toàn ngay cả khi bạn định cấu hình sai thứ gì đó, đồng thời, không đóng phiên chạy của bạn trước khi bạn kiểm tra rằng bạn vẫn có thể đăng nhập), mọi thứ sẽ hoạt động như dự định.


1
Tôi đã thử, nhưng dường như tôi vẫn có thể cd .. và duyệt thư mục phía trên. và khi tôi sử dụng vi a.txt trong thư mục trên, nó sẽ hiển thị: nhấn enter hoặc lệnh để tiếp tục và tôi không thể thoát vi
lừa

1
Tôi có thể sử dụng tùy chọn # 2 nếu người dùng chỉ nên truy cập sshfs không?
flickerfly

1
Tất cả mọi thứ hoạt động tốt, ngoại trừ rằng tôi không có quyền viết. Làm thế nào tôi có thể thiết lập quyền ghi cho thư mục bị hạn chế này. Nếu tôi sử dụng chmod 775, người dùng không thể đăng nhập được nữa.
Tên tôi là

3
Bạn nên viết Subsystem sftp internal-sftpdòng trong ví dụ thứ hai của bạn trên Matchkhối. Nếu không, ssh sẽ in ra một lỗi và không bắt đầu.
Tik0

1
Cảnh báo spoiler: không hoạt động với scp
xe đạp

5

Cách dễ nhất để tạo người dùng bị hạn chế không thể đi lang thang khỏi thư mục đã cho (ví dụ: thư mục trên, v.v.) và có một bộ lệnh giới hạn / được chọn để sử dụng, là sử dụng Shell bị hạn chế. Tham chiếu:

http://man.he.net/man1/rbash

Đầu tiên, tạo một symlink gọi là rbash(chạy với tư cách người dùng root).

ln -s /bin/bash /bin/rbash

Sau đó, chỉ cần tạo một người dùng bình thường với Shell bị hạn chế này và đặt thư mục chính của nó vào thư mục mong muốn:

useradd -s /bin/rbash -d /home/restricted_folder username

Ngay cả khi không có Shell bị hạn chế, nếu bạn rõ ràng không thêm người dùng này vào danh sách của sudoer hoặc bất kỳ nhóm đặc biệt nào, thì nó sẽ bị giới hạn theo mặc định.

Với Shell bị hạn chế, những điều sau đây không được phép hoặc không được thực hiện:

  • thay đổi thư mục với cd

  • cài đặt hoặc bỏ đặt các giá trị của SHELL, PATH, ENV hoặc BASH_ENV

  • chỉ định tên lệnh chứa /

  • chỉ định tên tệp chứa a / làm đối số cho. lệnh dựng sẵn

  • Chỉ định tên tệp chứa dấu gạch chéo làm đối số cho tùy chọn -p cho lệnh băm dựng sẵn

  • nhập định nghĩa hàm từ môi trường shell khi khởi động

  • phân tích giá trị của SHELLOPTS từ môi trường shell khi khởi động

  • chuyển hướng đầu ra bằng cách sử dụng các toán tử>,> |, <>,> &, &> và >> redirect

  • sử dụng lệnh exec dựng sẵn để thay thế shell bằng một lệnh khác

  • thêm hoặc xóa các lệnh dựng sẵn với các tùy chọn -f và -d vào lệnh enablein

  • Sử dụng lệnh enablein để kích hoạt các nội dung shell bị vô hiệu hóa

  • Chỉ định tùy chọn -p cho lệnh dựng sẵn lệnh

  • tắt chế độ hạn chế với set + r hoặc set + o bị hạn chế.

Những hạn chế này được thi hành sau bất kỳ tệp khởi động nào

Ngoài ra / Tùy chọn, để hạn chế người dùng sử dụng một nhóm lệnh giới hạn / được chọn để sử dụng, bạn có thể tạo một .bash_profile chỉ đọc cho người dùng đó, với

PATH=$HOME/bin

và symlink bất cứ lệnh nào bạn cho phép vào thư mục ~ / bin cho người dùng đó:

ln -s /bin/ls /home/restricted_folder/bin/ls
ln -s /bin/mkdir /home/restricted_folder/bin/mkdir
ln -s /bin/rm /home/restricted_folder/bin/rm

Vân vân.

HTH


tôi có thể tìm thấy bất kỳ tập tin nào trên hệ thống tập tin, bao gồm / thư mục gốc và tôi có thể đọc những tập tin này. Tự hỏi làm thế nào để hạn chế hơn nữa quyền truy cập xem bất cứ thứ gì bên ngoài thư mục người dùng hoặc chụp bất kỳ gói mạng nào hoặc đọc / var / log nội dung
16851556
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.