1. 程式人生 > >SuSE sftp 限制用戶活動目錄

SuSE sftp 限制用戶活動目錄

4.5 amp 51cto root 不存在 操作系統 conf com 限定

需求:使用sftp替代vsftpd,要求用戶沒有權限登錄操作系統,並且只能在指定目錄進行上傳下載。

使用 sftp chrootdirectory 功能。

註釋掉原來的Subsystem一行,添加以下三行就可以了.Subsystem指定sftp的處理方式.Matchsshd_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 限制用戶活動目錄