Cách tốt nhất để làm điều này là tạo ra một nhà tù chroot cho người dùng. Tôi sẽ dọn sạch câu trả lời ở đây khi tôi về nhà nhưng tôi đã đăng giải pháp lên blog của mình.
https://thefragens.com/chrootd-sftp-on-mac-os-x-server/
Dưới đây là hầu hết các hướng dẫn từ bài viết trên.
Trước tiên, bạn nên tạo người dùng mới trong Quản trị viên nhóm và gán cho họ quyền truy cập cho SSH thông qua Quản trị viên máy chủ hoặc gán họ cho một nhóm có đặc quyền truy cập SSH. Thảo luận thêm dưới đây.
Từ Terminal, bắt đầu ngay.
sudo cp /etc/sshd_config /etc/sshd_config.bkup
sudo chown root /
sudo chmod 755 /
sudo mkdir -p /chroot/user/scratchpad
sudo chown -R root /chroot
sudo chown user /chroot/user/scratchpad
sudo chmod -R 755 /chroot
Mỗi người dùng mới được thêm vào sau đó sẽ là một cái gì đó dọc theo dòng sau.
sudo mkdir -p /chroot/user2/scratchpad
sudo chown root /chroot/user2
sudo chown user2 /chroot/user2/scratchpad
sudo chmod -R 755 /chroot/user2
Mỗi thư mục nó đường dẫn đến nhà tù chroot phải được sở hữu root
. Tôi không nghĩ rằng thư mục nằm trong nhóm nào. Những gì tôi đã làm ở trên là
- sao lưu
/etc/sshd_config
- thay đổi quyền sở hữu của thư mục gốc thành
root
- thay đổi quyền của thư mục gốc thành 755
- tạo một thư mục chroot
- tạo một thư mục người dùng bên trong thư mục chroot
- tạo một thư mục bên trong thư mục người dùng mà người dùng có thể sửa đổi
- đặt quyền sở hữu và quyền
Bây giờ để chỉnh sửa /etc/sshd_config
để sau đây.
#Subsystem sftp /usr/libexec/sftp-server
Subsystem sftp internal-sftp
Match User user
X11Forwarding no
AllowTcpForwarding no
ForceCommand internal-sftp
ChrootDirectory /chroot/user
Điều này tạo ra một nhà tù chroot mà khi người dùng đăng nhập sẽ thả chúng vào thư mục /chroot/user
, trong thư mục đó là một thư mục họ có thể thêm mọi thứ vào /chroot/user/scratchpad
.
Nếu bạn muốn tạo Nhóm trong Quản trị viên nhóm làm việc cho 'Người dùng Chroot' thì hãy thêm người dùng mới mà bạn đã tạo trong Quản trị viên nhóm vào Nhóm bạn sẽ không phải tiếp tục chỉnh sửa /etc/sshd_config
tệp. Thay vì ở trên, thêm vào như sau. Đảm bảo bạn thêm nhóm 'Người dùng Chroot' vào ACL truy cập SSH trong Quản trị viên máy chủ.
Match Group chrootusers
X11Forwarding no
AllowTcpForwarding no
ForceCommand internal-sftp
ChrootDirectory /chroot/%u
Để kiểm tra xem các mục trên có hoạt động hay không, hãy đưa ra các mục sau từ thiết bị đầu cuối.
$ sftp user@domain.com
Password:
sftp>