給sftp建立新使用者 預設開啟和限制在某個目錄

2022-09-16 01:42:11 字數 3214 閱讀 6817

centos 6.8

使用 filezilla 進行 sftp 連線

給外包的工作人員提供我司伺服器的某一目錄的訪問(包括讀寫)許可權,方便他們部署**檔案。

之所以是某一目錄的訪問,是因為 sftp 的使用者登入後,預設是能看到整個系統的檔案目錄,這樣很不安全。

1、建立新使用者

adduser sftpuser1
useradd 和 adduser 的區別

useradd 只會新增乙個使用者,並沒有建立它的主目錄,除了新增乙個新使用者之外什麼都沒有。這個使用者甚至不能登入,因為沒有密碼。所以這裡選擇 adduser。

2、設定該使用者密碼
passwd sftpuser1
回車後再輸入密碼即可

3、禁止該使用者登入 ssh

因為我們只想該使用者使用 sftp,並不需要該使用者能登入 ssh,威脅安全。

usermod -s /bin/false sftpuser1
sftpuser1的 shell 改成 /bin/false。

4、修改該使用者的家目錄

usermod -d /data/wwwroot/user1/ sftpuser1
這樣每次使用者訪問伺服器都會預設開啟/data/wwwroot/user1/,但還是可以跳出這個訪問其它目錄,需要進行下面一步的操作。

5、設定 sshd_config:

開啟sshd_config檔案

vi /etc/ssh/sshd_config
找到 subsystem sftp 這一行,修改成:

subsystem sftp internal-sftp

usepam yes

match user sftpuser1

forcecommand internal-sftp

chrootdirectory /data/wwwroot/user1/

將上面的sftpuser1/data/wwwroot/user1/替換成你需要的。

多個使用者請重複配置這三行:

match user sftpuser2

forcecommand internal-sftp

chrootdirectory /data/wwwroot/user2/

這樣可以為不同的使用者設定不同的限制目錄。

6、重新啟動 sshd 服務:

/etc/init.d/sshd restart
現在用 sftp 軟體使用sftpuser1使用者登入,就可以發現目錄已經被限定、鎖死在/data/wwwroot/user1/了。

1、修改sshd_config檔案後重啟 sshd,報錯:directive 'usedns' is not allowed within a match block

語法錯誤,原因未知,只需要把兩段配置的位置互調就不報錯了。

修改前:

subsystem sftp internal-sftp

usepam yes

match user sftpuser1

forcecommand internal-sftp

chrootdirectory /data/wwwroot/user1/

usedns no

addressfamily inet

permitrootlogin yes

syslogfacility authpriv

passwordauthentication yes

修改後:

usedns no

addressfamily inet

permitrootlogin yes

syslogfacility authpriv

passwordauthentication yes

subsystem sftp internal-sftp

usepam yes

match user sftpuser1

forcecommand internal-sftp

chrootdirectory /data/wwwroot/user1/

注:當你出現這個錯誤的時候,sftp 肯定是連不上了。如果你習慣用 filezilla 去修改配置檔案,那麼此時你得不情願的切換到

shell,去用 vi/vim 去修改它了。

2、新使用者通過 sftp 訪問時,許可權不全,只能讀不能寫

我試著用 root 賬號去把該使用者的家目錄許可權改成 777,但是會出現該使用者 sftp 登陸不了的情況。(報錯:server unexpectedly closed network connection)

google 了原因如下:

給新使用者的家目錄的許可權設定有兩個要點:

1、由 chrootdirectory 指定的目錄開始一直往上到系統根目錄為止的目錄擁有者都只能是 root

2、由 chrootdirectory 指定的目錄開始一直往上到系統根目錄為止都不可以具有群組寫入許可權(最大許可權 755)

如果違反了上面的兩條要求,那麼就會出現新使用者訪問不了 sftp

的情況。

所以/data/wwwroot/user1/及上級的所有目錄屬主一定要是

root,並且組許可權和公共許可權不能有寫入許可權,如果一定需要有寫入許可權,那們可以在/data/wwwroot/user1/下建立 777 許可權的資料夾

mkdir /data/wwwroot/user1/upload

chown -r sftpuser1:root /data/wwwroot/user1/upload

這樣sftpuser1使用者就可以在/data/wwwroot/user1/upload裡隨意讀寫檔案了。

建立新使用者

新增新使用者 允許本地 ip 訪問 localhost,127.0.0.1 create user test localhost identified by 123456 允許外網 ip 訪問 create user test identified by 123456 為新使用者分配許可權 授予使用...

oracle 建立新使用者

create the user create user personnel manage identified by mwq default tablespace users temporary tablespace temp profile default quota 1024m on sysau...

Mysql建立新使用者

1.建立使用者 語法 create user username host identified by password 例子 create user dog localhost identified by 123456 create user pig 192.168.1.101 idendified...