#!/bin/bash
##創建用戶,-g 用戶組; -d 指定家目錄; -s 不登陸; -M 不創建家目錄
useradd u_zyjr -d/data/u_zyjr -s /sbin/nologin
useradd u_jtsw -d/data/u_jtsw -s /sbin/nologin
useradd u_dyls -d/data/u_dyls -s /sbin/nologin
##創建總賬戶,可以查看其它用戶目錄
useradd u_boc -d/data/u_boc -s /sbin/nologin
##創建各用戶家目錄目
mkdir -p /data/{u_zyjr,u_jtsw,u_dyls}
sleep 2
##創建各用戶的家目錄下上傳下載目錄
mkdir -p/data/u_zyjr/{upload,download}
mkdir -p/data/u_jtsw/{upload,download}
mkdir -p/data/u_dyls/{upload,download}
##設置用戶私人目錄的所屬人
chown -R u_zyjr:u_zyjr/data/u_zyjr/*
chown -R u_jtsw:u_jtsw/data/u_jtsw/*
chown -R u_dyls:u_dyls/data/u_dyls/*
#設置其它非組成員不可訪問,(770)
chmod -R 770/data/u_zyjr/*
chmod -R 770/data/u_jtsw/*
chmod -R 770/data/u_dyls/*
##把用戶u_boc添加到上述用戶組,以便可以訪問其所有目錄。
usermod -G u_zyjr,u_jtsw,u_dylsc u_boc
##分別給用戶創建密碼
passwd u_zyjr
passwd u_jtsw
passwd u_dylsc
passwd u_boc
##配置文件/etc/ssh/sshd_config更改及添加如下
#Subsystem sftp /usr/lib/openssh/sftp-server 注釋掉
Subsystem sftp internal-sftp
#Match Group u_boc ---這里都可以更改為Group 組控制
Match u u_boc
ChrootDirectory /data
Match User u_zyjr
ChrootDirectory /data/u_zyjr
Match User u_jtsw
ChrootDirectory /data/u_jtsw
Match User u_dyls
ChrootDirectory /data/u_dyls
X11Forwarding no
AllowTcpForwarding no
ForceCommand internal-sftp
###注意事項
Match Group sftp # 這一行是指定以下的子行配置是匹配 sftp 用戶組的。Match user userA,userB 則是匹配用戶。
ChrootDirectory /data/sftp/%u # 設定屬於用戶組 sftp 的用戶訪問的根文件夾。%h 代表用戶 home 目錄,%u 代表用戶名。
ForceCommand internal-sftp # 該行強制執行內部 sftp,並忽略任何 ~/.ssh/rc 文件中的命令。
AllowTcpForwarding no # 是否允許 TCP 轉發,默認值為 "yes", 禁止 TCP 轉發並不能增強安全性,除非禁止了用戶對 shell 的訪問,因為用戶可以安裝他們自己的轉發器。
X11Forwarding no # 是否允許進行 X11 轉發。默認值是 "no",設為 "yes" 表示允許。如果允許 X11 轉發並且 sshd(8)代理的顯示區被配置為在含有通配符的地址(X11UseLocalhost)上監聽。那么將可能有額外的信息被泄漏。由於使用 X11 轉發的可能帶來的風險,此指令默認值為"no"。需要注意的是,禁止 X11 轉發並不能禁止用戶轉發 X11 通信,因為用戶可以安裝他們自己的轉發器。
ChrootDirectory 設置的目錄權限及其所有的上級文件夾權限,屬主和屬組必須是 root;
ChrootDirectory 設置的目錄權限及其所有的上級文件夾權限,只有屬主能擁有寫權限,權限最大設置只能是 755。
####測試
1)linux 命令測試
2)
使用windows客戶端winscp測試:c 登陸后以下圖所示,登陸后的目錄定位到了指定的目錄