SuSE sftp 限制用戶活動目錄
阿新 • • 發佈:2017-11-13
4.5 amp 51cto root 不存在 操作系統 conf com 限定
需求:使用sftp替代vsftpd,要求用戶沒有權限登錄操作系統,並且只能在指定目錄進行上傳下載。
使用 sftp 的 chrootdirectory 功能。
註釋掉原來的Subsystem一行,添加以下三行就可以了.Subsystem指定sftp的處理方式.Match在sshd_config中用來指定條件的,後面可以跟group也可以跟ip,也可以三者或者兩者同時出現.要註意的是,match所匹配的用戶受match以後的語句影響,直到文件尾或者下一個match.ChrootDirectory就是指定匹配的用戶登陸以後所在的目錄了,這裏還可以加%u和%h分別指代用戶名和家名.
1 2 3 4 5 6 7 |
#vim /etc/ssh/sshd_config
#Subsystem sftp /usr/lib64/ssh/sftp-server
Subsystem sftp internal- sftp
Match User xx
ChrootDirectory /chroot
#rcsshd restart
#useradd xx && echo “a”|passwd –stdin xx
|
目錄權限設置上要遵循2點:
ChrootDirectory設置的目錄權限及其所有的上級文件夾權限,屬主和屬組必須是root;
ChrootDirectory設置的目錄權限及其所有的上級文件夾權限,只有屬主能擁有寫權限,也就是說權限最大設置只能是755。
由於上面設置了目錄的權限是755,因此所有非root用戶都無法在目錄中寫入文件。我們需要在ChrootDirectory指定的目錄下建立子目錄,重新設置屬主和權限。
1 2 3 4 |
#mkdir /chroot
#chmod 755 /chroot
#mkdir –p /chroot/xx
#chown xx.users /chroot/xx
|
測試如下:
xx用戶的shell 為 /bin/bash ,理論上是可以登錄操作系統的,為什麽會提示/bin/bash: No such file or directory 後關閉連接呢?
因為前面的Match 語句已經將xx 用戶限定只能在 /chroot 目錄下活動,xx通過ssh登錄系統後會去查找 /bin/bash,即 /chroot/bin/bash ,這個目錄是不存在的,所以無法登錄。
SuSE sftp 限制用戶活動目錄