天天看點

linux配置sftp使用者的chroot步驟(使用者的sftp根目錄)

1.編輯ssh中的sftp的配置,指令可能是:vi /etc/ssh/sshd_config

在這個檔案中最後加入

#限制sftp組的使用者使用sftp時在自己的home目錄下

Match Group sftp

#這裡寫重寫根目錄成登入使用者的根目錄下

        ChrootDirectory %h

#這行指定使用sftp服務使用系統自帶的internal-sftp

        ForceCommand    internal-sftp

2 重新開機ssh服務,指令可能是:service ssh restart,

這裡要注意,目前重新開機這個服務的視窗千百萬不能關閉,如果配置錯誤,ssh重新開機失敗,你可能就進不去了,就得到機房中弄了,,,

是以,重新開機後,可以使用service ssh status來檢查狀态,或是再打開一個ssh登入視窗檢查一下,重新開機後服務能否正常運作.

假設我的目錄是/var/www/a

使用者建立

1. 使用adduser --home /var/www/a/ --gid 1001 --shell /bin/false 登入員工名,來增加使用者

2. 在/var/www/a/目錄下建立一個屬于此使用者的目錄,如U1000

3. 使用chown -R 使用者名.sftp ./U1000 來改變這個目錄擁有者,也就是U1000擁有者是本使用者,組是sftp

4. 使用chmod -R o+wr ./U1000 來改變本使用者擁有寫入本目錄的權限

5.使用chown root.root /var/www/a,來改變這個使用者的home本身及以上的目錄,如/var,/var/www,/var/www/a,同時讓/var/www/a的所有目錄的組寫入權限沒有了, chmod -R g-w ./,  

6. sftp登入情況記錄在/var/log/auth.log中

7 使用 sftp工具來檢測登入情況,如果能登入就說明配置成功,不能登入,請到/var/log/auth.log檢視錯誤情況,一般是提示目錄的mod或是owner不對,這時就把這個提示目錄改成 root.root反正不是目前使用者就行了.

8. 建立多個使用者來檢測/var/ww/a/u1與/var/ww/a/u2之間的使用者是否能互相寫入,可以話,就把u1使用chmod -R g-w ./u1這樣的方法來去掉組的寫入權限,再使用 chmod -R o+w ./u1,這個指令來讓擁有者有寫入權限,别人隻能檢視,

這裡所有的sftp的組的使用者都是設定home 是/var/www/a,因為chroot需要把目前的目錄設定成非目前使用者,也就是需要a目錄登入使用者不寫入,而為了能使用就得,在a下面再建立一個目錄,這樣就無形中增加一個沒太多作用的目錄,如user1的home = /var/www/u1,為了使用,u1是root.root所有,然後需要再建立一個目錄如www在u1下才能使用.

而user2的home=/var/www/u2,建立www在u2下面使用.這樣的方式雖然可以讓user1看不到user2的目錄,因為chroot時user1根目錄就是/var/www/u1了.

而為了解決這個問題,還有一個方式就是建立/var/www/a/u1,u2,u3,uxxxyy這樣的目錄,再使用ln來設定連結,如 ln -f /var/www/u1 /home/user1/u1,設定/home/user1為root.root的owner,再在u1就chown user1.sftp,這樣,就可以達到可以寫入,也不會讓url路徑加一級無用的目錄,但是這樣在管理上感覺不太好,

linux配置sftp使用者的chroot步驟(使用者的sftp根目錄)