平常網絡管理中上傳和下載文件,廣泛都是使用ftp,可是因爲ftp的安全性。咱們如今都會使用sftp和scp替代ftp。可是咱們更但願用戶只能scp和sftp來傳文件,不但願用戶能登陸系統。 rssh就是這樣一個軟件,能夠配合openssh把用戶chroot在特定目錄內上傳和下載,並使該用戶沒法登陸終端shell。 從 http://www.pizzashack.org/rssh/ 下載 rssh-2.3.2.tar.gz。 編譯安裝rssh: $./configure –prefix=/usr --sysconfdir=/etc $make $su - #make install 新增一名用戶做測試: #useradd test #安裝普通方式創建用戶 #usermod -s /usr/bin/rssh test #更改用戶的shell #sh mkchroot.sh /home/test #設置用戶登陸的目錄爲chroot #vi /etc/rssh.conf 修改一下參數: allowsftp user=077:00010:「/home/test」 FAQ 因爲用戶登陸進chroot目錄中後即沒法訪問/dev/log,因此用下面的命令在chroot目錄中創建一個FIFO文件. # service syslog stop # /sbin/syslogd -a /home/test/dev/log # service syslog start 查看/home/test/dev下面多了一個log文件。 10. # mknod -m 666 /home/test/dev/null c 1 3 # 此處會解決在Linux下用sftp鏈接時提示connection closed,而且syslog中沒有任何錯誤提 示的狀況。 11. 此時在linux下使用 # sftp read@serverip 或者 在win下使用filezilla經過sftp方式便可登陸。 問:想把用戶限制在某個特定的目錄下,該怎麼辦? 答:好比把read用戶限制在 /usr/local/tomcat/webapps/ 下面,則: 1. 確保 /etc/passwd 中read用戶的登陸shell爲/usr/local/bin/rssh 2. 複製 /opt/chroot/user/ 下面的全部內容到/usr/local/tomcat/webapps 下面,而後修改/usr/local/tomcat/webapps下面的dev、etc等剛複製 過來的目錄的擁有者爲read,而且修改chroot目錄下的 home/read的全部者和組爲read。 3. 編輯/usr/local/etc/rssh.conf,修改user=.....中的目錄到相應目錄便可。 4. 登陸測試。 問:我想再添加一個受限用戶,咋辦? 答:涼拌。 1。 # useradd -s /usr/local/bin/rssh rsshtest & passwd rsshtest 2。 # grep rsshtest /etc/passwd >> /opt/chroot/user/etc/passwd 4。 編輯/usr/local/etc/rssh.conf,添加 user=rsshtest:022:00011:"/opt/chroot/user" 5。而後便可登錄測試,若是想限制在其餘特定的目錄中,請參考上面的問題解答。 注意: 1. 若是在不一樣的chroot目錄中,只有從新執行/sbin/syslogd -a /chroot/user/dev/log才能在日誌中記錄新的用戶的信息。 2. 若是不能登陸,試着把/chroot/user/dev/下的null刪了重建。 3. 若是在/etc/ssh/sshd_config中作了allowUsers的限制,確保新加的用戶在容許列表裏面。 問:我徹底按照你的步驟作了,但win下使用filezilla沒法登陸,系統日誌中提示: 答:執行 ldd /usr/libexec/openssh/sftp-server,出現下面的文件, libcrypto.so.6 => /lib64/libcrypto.so.6 (0x00002aaaaacc6000) libutil.so.1 => /lib64/libutil.so.1 (0x00002aaaab00d000) libz.so.1 => /usr/lib64/libz.so.1 (0x00002aaaab210000) libnsl.so.1 => /lib64/libnsl.so.1 (0x00002aaaab425000) libcrypt.so.1 => /lib64/libcrypt.so.1 (0x00002aaaab63c000) libresolv.so.2 => /lib64/libresolv.so.2 (0x00002aaaab870000) libgssapi_krb5.so.2 => /usr/lib64/libgssapi_krb5.so.2 (0x00002aaaaba86000) libkrb5.so.3 => /usr/lib64/libkrb5.so.3 (0x00002aaaabcb0000) libk5crypto.so.3 => /usr/lib64/libk5crypto.so.3 (0x00002aaaabf38000) libcom_err.so.2 => /lib64/libcom_err.so.2 (0x00002aaaac15e000) libdl.so.2 => /lib64/libdl.so.2 (0x00002aaaac360000) libc.so.6 => /lib64/libc.so.6 (0x00002aaaac564000) libkrb5support.so.0 => /usr/lib64/libkrb5support.so.0 (0x00002aaaac8b3000) /lib64/ld-linux-x86-64.so.2 (0x00002aaaaaaab000) 檢查 /opt/chroot/user下對應的目錄中是否有上面所列的文件,沒有的話複製進來,完成後再試就能夠了。 本文參考以下文章: http://hi.baidu.com/feixingqi/blog/item/27f70d33fdd866fd1b4cff5d.html http://www.dup2.org/node/296