Câu trả lời:
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 sudo
hoặ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/directory
và 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 adduser
lệnh với --no-create-home
tù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-server
bằ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.
Subsystem sftp internal-sftp
dòng trong ví dụ thứ hai của bạn trên Match
khối. Nếu không, ssh sẽ in ra một lỗi và không bắt đầu.
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:
Đầ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