FTP,SFTP伺服器登入許可權和根目錄的設定

2021-08-28 14:48:44 字數 4942 閱讀 9618

為了安全起見,在搭建ftp伺服器的時候會限制使用者的登入,那些使用者我讓他訪問,那些不讓訪問,ftp伺服器提供了兩個配置檔案:

/etc/vsftpd/user_list  // 許可哪些使用者可以訪問

/etc/vsftpd/ftpusers   // 不允許哪些使用者訪問

我這裡建立了三個使用者用於測試

[root@localhost vsftpd]# useradd ftptest

[root@localhost vsftpd]# useradd ftpuser

[root@localhost vsftpd]# useradd ftpname

首先我們測試許可ftptest使用者

登入的時候出現乙個問題:

[root@localhost ~]# ftp 192.168.219.129

ftp connect 沒有主機的路由

>ftp

訪問被拒絕了,首先想到是防火牆(iptables)的原因,在ftp伺服器上檢視防火牆狀態發現防火牆是開的,停了再次連ftp就沒問題了

[root@localhost vsftpd]# firewall-cmd --state

running

[root@localhost vsftpd]# systemctl stop firewalld.service

[root@localhost vsftpd]# firewall-cmd --state

not running

在沒有許可ftptest使用者前連線被拒絕了

[root@localhost ~]# ftp 192.168.219.129

connected to 192.168.219.129 (192.168.219.129).

220 (vsftpd 3.0.2)

name (192.168.219.129:root): ftptest

530 permission denied.

login failed.

現在許可一下看看,在/etc/vsftpd/user_list 裡面加入ftptest(注意:乙個使用者單獨佔一行)

這是報錯:500 oops: vsftpd: refusing to run with writable root inside chroot()

解決辦法:用命令chmod a-w /home/ftptest去除使用者主目錄的寫許可權,注意把目錄替換成自己的。或者你可以在vsftpd的配置檔案中增加下面的內容:allow_writeable_chroot=yes

再次登入測試,這時登入ok(其他使用者按照這一步驟操作即可)

[root@localhost ~]# ftp 192.168.219.129

connected to 192.168.219.129 (192.168.219.129).

220 (vsftpd 3.0.2)

name (192.168.219.129:root): ftptest

331 please specify the password.

password:

230 login successful.

remote system type is unix.

using binary mode to transfer files.

ftp>

設定ftp的根目錄

正常情況下ftp和sftp預設的根目錄是在登入用的家目錄(/home/ftpuser)下,這樣的話會有乙個問題,當我們用不同的使用者登入的時候,他進的ftp目錄不一樣,例:

為了方便測試我們在不用的使用者根目錄下新建標識檔案:

[root@localhost home]# touch /home/ftpuser/ftpuser.txt

[root@localhost home]# touch /home/ftpname/ftpname.txt

首先用ftpuser使用者登入ftp
[root@localhost ~]# ftp 192.168.219.129

connected to 192.168.219.129 (192.168.219.129).

220 (vsftpd 3.0.2)

name (192.168.219.129:root): ftpuser

331 please specify the password.

password:

230 login successful.

remote system type is unix.

using binary mode to transfer files.

ftp> pwd

257 "/"

ftp> ls

227 entering passive mode (192,168,219,129,194,109).

150 here comes the directory listing.

-rw-r--r-- 1 0 0 0 oct 08 16:12 ftpuser.txt

226 directory send ok.

用ftpname 使用者登入ftp

[root@localhost ~]# ftp 192.168.219.129

connected to 192.168.219.129 (192.168.219.129).

220 (vsftpd 3.0.2)

name (192.168.219.129:root): ftpname

331 please specify the password.

password:

230 login successful.

remote system type is unix.

using binary mode to transfer files.

ftp> pwd

257 "/"

ftp> ls

227 entering passive mode (192,168,219,129,118,21).

150 here comes the directory listing.

-rw-r--r-- 1 0 0 0 oct 08 16:11 ftpname.txt

226 directory send ok.

像上面的情況,不用的使用者登入不通的ftp,他會進入各自的家目錄,如果想要不同的使用者進入同一目錄可以參照下面的設定:

local_root=/var/www/ftp/ (自己指定的ftp根目錄)

這時候需要注意一點根目錄的許可權是drwxr-xr-x.,這時候ftp是沒有寫入許可權的,需要寫入許可權可以給他分配成777(注意:要是ftp和sftp的根目錄保持一致的話就不能給跟目錄分配成777,可以在根目錄下新建乙個資料夾再分配777的許可權)

ftp> mkdir test

550 create directory operation failed.

設定sftp的根目錄

開啟/etc/ssh/sshd_config檔案修改配置

#subsystem      sftp    /usr/libexec/openssh/sftp-server

subsystem sftp internal-sftp

在檔案結尾加上下面配置即可

match user ftpuser

chrootdirectory /var/www/ftp/

forcecommand internal-sftp

重啟sshd驗證

service sshd restart

為了方便區分,我在設定的ftp根目錄下新建test檔案

touch /var/www/ftp/test
登入sftp驗證

[root@localhost ~]# sftp [email protected]

[email protected]'s password:

connected to 192.168.219.129.

sftp> ls -l

-rw-r--r-- 1 0 0 0 oct 9 05:38 test

登入ftp驗證

[root@localhost ~]# ftp 192.168.219.129

connected to 192.168.219.129 (192.168.219.129).

220 (vsftpd 3.0.2)

name (192.168.219.129:root): ftpuser

331 please specify the password.

password:

230 login successful.

remote system type is unix.

using binary mode to transfer files.

ftp> ls

227 entering passive mode (192,168,219,129,162,143).

150 here comes the directory listing.

-rw-r--r-- 1 0 0 0 oct 09 13:38 test

226 directory send ok.

以上步驟都是自己手動實驗做的,文采不好,寫的不好,還望各位客官多提意見

遠端登入Linux伺服器

一 1.root localhost root 第乙個root是使用者名稱,第二個 root 是使用者的主目錄,登入後預設所在的目錄 home directory 普通使用者只有在自己的主目錄下才有大量的許可權,root使用者擁有所有的許可權。2.linux系統的登入方式 本地登入 console ...

ssh遠端登入伺服器

首先準備好openssh或xshell,客戶端的ssh連線方式為 ip 埠號 預設為22 伺服器端要做的準備工作是確保開啟sshd,etc init.d shhd restrat,在伺服器安裝時,可以勾選初始安裝諸如ssh server之類的元件。如未安裝,可以使用apt install ssh s...

登入遠端SQL伺服器

一 看ping 伺服器ip能否ping通。這個實際上是看和遠端sql server 2000伺服器的物理連線是否存在。如果不行,請檢查網路,檢視配置,當然得確保遠端sql server 2000伺服器的ip拼寫正確。二 在dos或命令列下輸入telnet 伺服器ip 埠,看能否連通。如telnet ...