文章目录

  • 一、VSFTP 概述
    • 1.1 安全特性
  • 二、 VSFTP 连接类型
  • 三、VSFTP 工作模式
    • Port模式(主动)
    • Passive 模式(被动)
  • 四、VSFTP 传输模式
  • 五、VSFTP 软件信息
  • 六、登录验证方式
    • 6.1 匿名用户验证:
    • 6.2 本地用户验证:
    • 6.3 虚拟(virtual)用户验证:
  • 七、VSFTP 实验部署
    • 7.1 匿名用户验证实验:
      • 7.1.1 实现可以上传
      • 7.1.2 实现创建目录和文件其他操作
      • 7.1.3 用户进入某个文件夹时,弹出相应的说明
      • 7.1.5 实现上传的文件可下载
    • 7.2 本地用户验证实验:
      • 7.2.1 服务端需要创建用户并设置密码(所创建的用户,不需要登录操作系统,仅用来登录VSFTP)
      • 7.2.2 将所有用户禁锢在自己的家目录下
      • 7.2.3 将部分用户禁锢在自己的家目录下
      • 7.2.4 配置文件:/etc/vsftpd/ftpusers 此文件所有用户都不能登录
      • 7.2.5 修改被动模式数据传输使用端口
    • 7.3 虚拟用户验证实验:
      • 7.3.1 建立 FTP 的虚拟用户的用户数据库文件(在/etc/vsftpd)
      • 7.3.2 创建 FTP 虚拟用户的映射用户,并制定其用户家目录
      • 7.3.3 建立支持虚拟用户的 PAM 认证文件,添加虚拟用户支持
      • 7.3.4 为虚拟用户建立独立的配置文件,启动服务并测试
    • 7.4 openssl+vsftpd 加密验证方式:
      • 7.4.1 查看是否安装了 openssl
      • 7.4.2 查看 vsftpd 是否支持 openssl
      • 7.4.3 生成加密信息的秘钥和证书文件
      • 7.4.4 修改主配置文件/etc/vsftpd/vsftpd.conf
      • 7.4.5 重启服务
      • 7.4.6 测试(使用第三方客户端连接)

一、VSFTP 概述

FTP 是 File Transfer Protocol(文件传输协议)的英文简称,用于 Internet 上的文件的双向传输。使用 FTP 来传输时,是具有一定程度的危险性, 因为数据在因特网上面是完全没有受到保护的明文传输方式!

VSFTP是一个基于 GPL发布的类 Unix 系统上使用的 FTP 服务器软件,它的全称是Very Secure FTP,从名称定义上基本可以看出,这是为了解决 ftp 传输安全性问题的。

1.1 安全特性

  1. vsftp 程序的运行者一般是普通用户,降低了相对应进程的权限,提高了安全性
  2. 任何需要执行较高权限的指令都需要上层程序许可
  3. ftp 所需要使用的绝大多数命令都被整合到了 vsftp 中,基本不需要系统额外提供命令
  4. 拥有 chroot 功能,可以改变用户的根目录,限制用户只能在自己的家目录

二、 VSFTP 连接类型

  • 控制连接(持续连接) → TCP 21(命令信道) → 用户收发FTP命令

  • 数据连接(按需连接) → TCP 20(数据信道) → 用于上传下载数据

三、VSFTP 工作模式

Port模式(主动)


FTP 客户端首先和服务器的 TCP 21 端口建立连接,用来发送命令,客户端需要接收数据的时候在这个通道上发送 PORT 命令。PORT 命令包含了客户端用什么端口接收数据。在传送数据的时候,服务器端通过自己的 TCP 20 端口连接至客户端的指定端口发送数据。FTP server 必须和客户端建立一个新的连接用来传送数据。

Passive 模式(被动)


FTP 客户端首先和服务器的 TCP 21 端口建立连接,用来建立控制通道发送命令,但建立连接后客户端发送 Pasv 命令。服务器收到 Pasv 命令后,打开一个临时端口(端口大于 1023小于 65535)并且通知客户端在这个端口上传送数据的请求,客户端连接 FTP 服务器的临时端口,然后 FTP 服务器将通过这个端口传输数据。

注意:由于VSFTP的被动模式是随机端口进行数据传输,所以在设置防火墙时需要刻意放行。

四、VSFTP 传输模式

  • Binary模式: 不对数据进行任何处理,适合进行可执行文件、压缩文件、图片等

  • ASCII模式: 进行文本传输时,自动适应目标操作系统的结束符,如回车符等

Linux的红帽发行版中VSFTP默认采用的是Binary模式,这样能保证绝大多数文件传输后能正常使用

切换方式: 在ftp>提示符下输入ascii即转换到ACSII方式,输入bin,即转换到Binary方式。

五、VSFTP 软件信息

服务端软件名: vsftpd
客户端软件名: ftp
服务名: vsftpd
端口号: 20、21、指定范围内随机端口
配置文件: /etc/vsftpd/vsftpd.conf

六、登录验证方式

6.1 匿名用户验证:

用户账号名称: ftp或anonymous
用户账号密码: 无密码
工作目录: /var/ftp (尽量新建一级目录用来存放文件)
默认权限: 默认可下载不可上传,上传权限由两部分组成(主配置文件和文件系统)

6.2 本地用户验证:

用户账号名称: 本地用户(/etc/passwd)
用户账号密码: 用户密码(/etc/shadow)
工作目录: 登录用户的家目录
权限: 最大权限(drwx------)

6.3 虚拟(virtual)用户验证:

  1. 创建虚拟用户用来代替本地用户,减少本地用户曝光率
  2. 使用本地用户作为虚拟用户的映射用户,为虚拟用户提供工作目录和权限控制
  3. 能够设置严格的权限(为每一个用户生成单独的配置文件)

七、VSFTP 实验部署

软件安装:

[root@localhost ~]$ yum -y install vsftpd ftp && chkconfig vsftpd on[root@localhost ~]$ chkconfig --list vsftpd[root@localhost ~]$ service vsftpd start[root@localhost ~]$  netstat -antp

在ftp目录下添加一个文件,使用ftp命令登陆vsftpd服务器

[root@localhost ~]$ echo "ftp" > demo.txt
[root@localhost ~]$ ftp > 192.168.88.10
Connected to 192.168.88.10 (192.168.88.10).
220 (vsFTPd 2.2.2)
Name (192.168.88.10:root): ftp
331 Please specify the password.
Password:
230 Login successful.
Remote system type is UNIX.
Using binary mode to transfer files.
ftp> ?   #ftp常用交互命令
cd 进入目录
get      从服务器获取文件
post     向服务器上传文件
rename   修改名字
delete   删除文件
mdelete  删除多个文件
mkdir    增加目录
rmdir    删除目录

配置文件:

[root@localhost ~]$ vim /etc/vsftpd/vsftpd.conf

7.1 匿名用户验证实验:

配置文件在/etc/vsftpd/vsftpd.conf,有些选项可能没有,直接添加即可

匿名权限控制:

anonymous_enable=YES           #启用匿名访问
anon_umask=022                 #匿名用户所上传文件的权限掩码
anon_root=/var/ftp             #匿名用户的 FTP 根目录
anon_upload_enable=YES         #允许上传文件
anon_mkdir_write_enable=YES    #允许匿名用户创建目录
anon_other_write_enable=YES    #开放其他写入权(删除、覆盖、重命名)
anon_max_rate=0                #限制最大传输速率(0 为不限速,单位:bytes/秒)

实验需求与流程:
注意:在客户端登录后,默认情况下是可以下载的,但不能上传

7.1.1 实现可以上传

配置文件设置anon_upload_enable=YES

[root@localhost ~]$ vim /etc/vsftpd/vsftpd.conf
anon_upload_enable=YES[root@localhost ~]$ cd /var/ftp && makdir upload   #在/var/ftp/下创建上传目录[root@localhost ~]$ chmod o+w upload   #修改上传目录的权限或所有者,让匿名用户有写入权限[root@localhost ~]$ service vsftpd restart  #重启服务[root@localhost ~]$ ftp 192.168.88.10  #登陆ftp服务
Connected to 192.168.88.10 (192.168.88.10).
220 (vsFTPd 2.2.2)
Name (192.168.88.10:root): ftp       #输入用户名
331 Please specify the password.
Password:        #密码,没有密码直接回车
230 Login successful.
Remote system type is UNIX.
Using binary mode to transfer files.
ftp> cd upload   #切换到upload目录
227 Entering Passive Mode (192,168,88,10,78,81).
150 Here comes the directory listing.
226 Directory send OK.
ftp> put install.log    #上传文件测试
local: install.log remote: install.log
227 Entering Passive Mode (192,168,88,10,28,194).
150 Ok to send data.
226 Transfer complete.    #上传成功
46478 bytes sent in 0.00352 secs (13219.00 Kbytes/sec)

7.1.2 实现创建目录和文件其他操作

配置文件设置anon_mkdir_write_enable=YES #允许创建目录 anon_other_write_enable=YES #删除文件、文件改名、文件覆盖

[root@localhost ~]$ ftp 192.168.88.10
.............
ftp> cd upload
ftp> mkdir abc    #创建目录
550 Permission denied. #没有权限
ftp> delete install.log   #删除文件
550 Permission denied.
ftp> rename install.log ins.log  #修改文件名
550 Permission denied.

修改配置文件:

[root@localhost ~]$ vim /etc/vsftpd/vsftpd.conf
anon_mkdir_write_enable=YES  #允许创建目录
anon_other_write_enable=YES  #删除文件、文件改名、文件覆盖

测试:

[root@localhost ~]$ ftp 192.168.88.10
.............
ftp> cd upload
ftp> mkdir abc    #创建目录
257 "/upload/abc" created #创建成功
ftp> rename install.log ins.log  #修改文件名
350 Ready for RNTO.
250 Rename successful.    #修改成功
ftp> delete ins.log   #删除文件
250 Delete operation successful.

7.1.3 用户进入某个文件夹时,弹出相应的说明

在对应目录下创建 .message 文件,并写入相应内容,确认dirmessage_enable=YES是否启用,尝试却换目录查看效果(同一次登录仅提示一次)

[root@localhost ~]$ vim /var/ftp/upload/.message   #创建 .message 文件
welcome to ftp[root@localhost ~]$ vim /etc/vsftpd/vsftpd.conf
dirmessage_enable=YES #启用弹出说明[root@localhost ~]$ !ser   #重启服务[root@localhost ~]$ ftp 192.168.88.10   #登录ftp服务器
...........
ftp> cd upload
250-welcome to ftp    #弹出刚才写入的提示
250 Directory successfully changed.

7.1.5 实现上传的文件可下载

默认情况下开放上传权限后,上传的文件是无法被下载的,因为文件的其他人位置没有r权限,设置anon_umask=022,可以让上传的文件其他人位置拥有r权限,然后才能被其他人下载

[root@localhost ~]$ ftp 192.168.88.10
Connected to 192.168.88.10 (192.168.88.10).
220 (vsFTPd 2.2.2)
Name (192.168.88.10:root): ftp       #输入用户名
331 Please specify the password.
Password:        #密码,没有密码直接回车
230 Login successful.
Remote system type is UNIX.
Using binary mode to transfer files.
ftp> cd upload   #切换到upload目录
ftp> get install.log    #下载install.log
local: install.log remote: install.log
227 Entering Passive Mode (192,168,88,10,240,86).
550 Failed to open file.   #失败不让下载[root@localhost ~]$ vim /etc/vsftpd/vsftpd.conf
anon_umask=022 #配置文件没有就新增加一行,上传的文件可下载[root@localhost ~]$ !ser    #重启服务器[root@localhost ~]$ ftp 192.168.88.10
...........
ftp> ls
227 Entering Passive Mode (192,168,88,10,163,8).
150 Here comes the directory listing.
-rw-r--r--    1 0        0              10 Oct 18 05:11 demo.txt
drwxr-xr-x    2 0        0            4096 Mar 22  2017 pub
drwxr-xrwx    2 0        0            4096 Oct 19 04:23 upload
226 Directory send OK.
ftp> cd upload
250 Directory successfully changed.
ftp> ls    #登陆到ftp服务器
227 Entering Passive Mode (192,168,88,10,253,20).
150 Here comes the directory listing.
-rw-------    1 14       50          46478 Oct 19 04:23 install.log
226 Directory send OK.
ftp> put anaconda-ks.cfg    #上传 anaconda-ks.cfg 文件
local: anaconda-ks.cfg remote: anaconda-ks.cfg
227 Entering Passive Mode (192,168,88,10,47,182).
150 Ok to send data.
226 Transfer complete.       #上传成功
1619 bytes sent in 0.000381 secs (4249.34 Kbytes/sec)
ftp> get anaconda-ks.cfg       #获取 anaconda-ks.cfg 文件
local: anaconda-ks.cfg remote: anaconda-ks.cfg
227 Entering Passive Mode (192,168,88,10,98,164).
150 Opening BINARY mode data connection for anaconda-ks.cfg (1619 bytes).
226 Transfer complete.   #下载成功
1619 bytes received in 0.00014 secs (11564.28 Kbytes/sec)

7.2 本地用户验证实验:

本地用户权限控制:

local_enable=YES           #是否启用本地系统用户
local_umask=022            #本地用户所上传文件的权限掩码
local_root=/var/ftp        #设置本地用户的 FTP 根目录
chroot_local_user=YES      #是否将用户禁锢在主目录
local_max_rate=0           #限制最大传输速率
ftpd_banner=Welcome to blah FTP service   #用户登录时显示的欢迎信息
userlist_enable=YES & userlist_deny=YES 黑名单  #禁止/etc/vsftpd/user_list 文件中出现的用户名登录 FTP
userlist_enable=YES & userlist_deny=NO  白名单  #仅允许/etc/vsftpd/user_list 文件中出现的用户名登录 FTP配置文件:ftpusers   黑名单
#禁止/etc/vsftpd/ftpusers 文件中出现的用户名登录 FTP,权限比 user_list 更高,即时生效

实验需求与流程:

7.2.1 服务端需要创建用户并设置密码(所创建的用户,不需要登录操作系统,仅用来登录VSFTP)

[root@localhost ~]$ useradd -s /sbin/nologin username && echo "user1" | passwd --stdin username
[root@localhost ~]$ useradd -s /sbin/nologin user1 && echo "user1" | passwd --stdin user1

7.2.2 将所有用户禁锢在自己的家目录下

修改配置文件chroot_local_user=YES

[root@localhost ~]$ vim /etc/vsftpd/vsftpd.conf
chroot_local_user=YES  #开启用户家目录限制,限制所有用户不能随便切换目录[root@localhost ~]$ ftp 192.168.88.10
.......
ftp> cd /etc
550 Failed to change directory.  #不能随意切换目录,只能在家目录

注:默认没有禁锢用户时,客户端登录后可以随意切换目录,查看文件所在位置和文件名

7.2.3 将部分用户禁锢在自己的家目录下

修改配置文件 chroot_list_enable=YES chroot_list_file=/etc/vsftpd/chroot_list,/etc/vsftpd目录下创建文件chroot_list添加上用户名

[root@localhost ~]$ vim /etc/vsftpd/vsftpd.confchroot_list_enable=YES              #开启白名单功能,允许白名单中的用户随意切换目录
chroot_list_file=/etc/vsftpd/chroot_list     #白名单文件所在位置(需自己创建)[root@localhost ~]$ vim  /etc/vsftpd/chroot_list
user1

测试:

[root@localhost ~]$ ftp 192.168.88.10
.......
ftp> cd /etc
250 Directory successfully changed.   #user1用户可以切换目录

7.2.4 配置文件:/etc/vsftpd/ftpusers 此文件所有用户都不能登录

所有写入此文件内的用户名都不允许登录ftp,立刻生效。

[root@localhost ~]$ vim  /etc/vsftpd/ftpusers
root
bin
daemon
adm
lp
sync
shutdown
halt
mail
news
uucp
operator
games
nobody
username

7.2.5 修改被动模式数据传输使用端口

修改配置文件:

[root@localhost ~]$ vim /etc/vsftpd/vsftpd.conf
pasv_enable=YES
pasv_min_port=30000
pasv_max_port=35000

重启服务:

[root@localhost ~]$ !ser

测试:

[root@localhost ~]$ cd /var/ftp/upload
[root@localhost ~]$ dd if=/dev/zero of=./demo.txt bs=1M count=1000[root@localhost ~]$ ftp 192.168.88.10 #客户端连接ftp服务器
...........
230 Login successful.
Remote system type is UNIX.
Using binary mode to transfer files.
ftp> cd upload
250-welcome to ftp
250 Directory successfully changed.
ftp> get demo.txt    #下载demo.txt
local: demo.txt remote: demo.txt
227 Entering Passive Mode (192,168,88,10,136,177).
150 Opening BINARY mode data connection for demo.txt (1048576000 bytes).
226 Transfer complete.
1048576000 bytes received in 11.1 secs (94827.87 Kbytes/sec)[root@localhost ~]$ netstat -antp  #ftp服务器查看开放的端口
tcp        0      0 192.168.88.10:33696            192.168.88.20:49612         ESTABLISHED 3193/vsftpd

7.3 虚拟用户验证实验:

7.3.1 建立 FTP 的虚拟用户的用户数据库文件(在/etc/vsftpd)

[root@localhost ~]$ vim /etc/vsftpd/vsftpd.user
#注:该文件名可以随便定义,文件内容格式:奇数行用户,偶数行密码
a1
123456
a2
123456[root@localhost ~]$ db_load -T -t hash -f vsftpd.user vsftpd.db
#将用户密码的存放文本转化为数据库类型,并使用 hash 加密[root@localhost ~]$ chmod 600 vsftpd.db
#修改文件权限为 600,保证其安全性

7.3.2 创建 FTP 虚拟用户的映射用户,并制定其用户家目录

[root@localhost ~]$ useradd -d /var/ftproot -s /sbin/nologin virtual
#创建 virtual 用户作为 ftp 的虚拟用户的映射用户

7.3.3 建立支持虚拟用户的 PAM 认证文件,添加虚拟用户支持

[root@localhost ~]$ vim /etc/pam.d/vsftpd.pam
#编辑新文件 vsftpd.pam (添加下列两行)
auth    required pam_userdb.so db=/etc/vsftpd/vsftpd
account required pam_userdb.so db=/etc/vsftpd/vsftpd

在 vsftpd.conf 文件中添加支持配置

[root@localhost ~]$ vim /etc/vsftpd/vsftpd.conf修改:
pam_service_name=vsftpd.pam添加:
guest_enable=YES     #匿名用户开启
guest_username=virtual   #匿名用户的映射用户是谁
user_config_dir=/etc/vsftpd/dir  #匿名用户配置文件的目录[root@localhost ~]$ mkdir dir #创建dir目录

7.3.4 为虚拟用户建立独立的配置文件,启动服务并测试

注:做虚拟用户配置文件设置时,将主配置文件中自定义的匿名用户相关设置注释掉(配置文件中anon开头的全部注释掉)

用户可以上传:
anon_upload_enable=YES #允许上传文件

用户可以创建目录或文件:
anon_mkdir_write_enable=YES #允许创建目录

用户可以修改文件名:
anon_upload_enable=YES #允许上传文件(为了覆盖开启的)
anon_other_write_enable=YES #允许重名和删除文件、覆盖

[root@localhost ~]$ cd /etc/vsftpd/dir
[root@localhost ~]$ vim a1 #文件名字就用用户名即可
anon_upload_enable=YES #允许上传文件
anon_mkdir_write_enable=YES #允许创建目录和文件[root@localhost ~]$ chmod o+r /var/ftproot/[root@localhost ~]$ vim a2
anon_upload_enable=YES #允许上传文件
anon_mkdir_write_enable=YES #允许创建目录和文件
anon_upload_enable=YES #允许上传文件(为了覆盖开启的)
anon_other_write_enable=YES #允许重名和删除文件、覆盖

注:给映射用户的家目录 设置 o+r 让虚拟用户有读权限。

重启服务测试

[root@localhost ~]$ service vsftpd restart[root@localhost ~]$ ftp 192.168.88.10
Connected to 192.168.88.10 (192.168.88.10).
220 (vsFTPd 2.2.2)
Name (192.168.88.10:root): a1
331 Please specify the password.
Password:
230 Login successful.
Remote system type is UNIX.
Using binary mode to transfer files.
ftp>

7.4 openssl+vsftpd 加密验证方式:

拓展:使用tcpdump 工具进行指定端口抓包,抓取ftp登录过程中的数据包

[root@localhost ~]$ tcpdump -i eth0 -nn -X -vv tcp port(服务器端口) 21 and ip host 来源ip(客户端ip)-i 网卡名: #interface:指定tcpdump需要监听的网卡
-n:       #对地址以数字方式显式,否则显式为主机名
-nn:      #除了-n的作用外,还把端口显示为数值,否则显示端口服务名
-X:       #输出包的头部数据,会以16进制和ASCII两种方式同时输出
-vv:      #产生更详细的输出

7.4.1 查看是否安装了 openssl

[root@localhost ~]$ rpm -q openssl

7.4.2 查看 vsftpd 是否支持 openssl

[root@localhost ~]$ ldd /usr/sbin/vsftpd | grep libssllibssl.so.10 => /usr/lib64/libssl.so.10 (0x00007fcafcf62000)

7.4.3 生成加密信息的秘钥和证书文件

位置:/etc/ssl/certs/

[root@localhost ~]$ cd /etc/ssl/certs/
[root@localhost ~]$ openssl genrsa -out vsftpd.key 1024
#建立服务器私钥,生成 RSA 密钥[root@localhost ~]$ openssl req -new -key vsftpd.key -out vsftpd.csr
#需要依次输入国家,地区,城市,组织,组织单位,Email 等信息。最重要的是有一个 common name,可以写你的名字或者域名。如果为了 https 申请,这个必须和域名吻合,否则会引发浏览器警报。生成的 csr 文件交给 CA 签名后形成服务端自己的证书[root@localhost ~]$ openssl x509 -req -days 365 -sha256 -in vsftpd.csr -signkey vsftpd.key -out vsftpd.crt
#使用 CA 服务器签发证书,设置证书的有效期等信息[root@localhost ~]$ chmod 500 .

注意
1:生成完秘钥和证书文件后,将本目录{/etc/ssl/certs/}的权限修改为 500. 注意
2:在实验环境中可以用命令生成测试,在生产环境中必须要在 https 证书厂商注册(否则浏览器不识别)

7.4.4 修改主配置文件/etc/vsftpd/vsftpd.conf

[root@localhost ~]$ vim /etc/vsftpd/vsftpd.conf
ssl_enable=YES
#启用 ssl 认证ssl_tlsv1=YES
ssl_sslv2=YES
ssl_sslv3=YES
#开启 tlsv1、sslv2、sslv3 都支持allow_anon_ssl=YES
#允许匿名用户{虚拟用户}force_anon_logins_ssl=YES
force_anon_data_ssl=YES
#匿名登录和传输时强制使用 sslforce_local_logins_ssl=YES
force_local_data_ssl=YES
#本地登录和传输时强制使用 sslrsa_cert_file=/etc/ssl/certs/vsftpd.crt
#rsa格式的证书rsa_private_key_file=/etc/ssl/certs/vsftpd.key
#rsa格式的密钥

注:密钥文件要在配置文件中单独声明(写入配置文件时,注释要单独一行,否则会报错)

7.4.5 重启服务

[root@localhost ~]$ service vsftpd restart

7.4.6 测试(使用第三方客户端连接)

FileZilla-FTP(第三方客户端工具)
连接测试时选择:
服务器类型:显式 TLS/SSL
登录类型:一般或匿名

网络服务-VSFTP相关推荐

  1. Linux云计算网络服务CentOS7.5

    这里写目录标题 配置Linux网络 远程管理Linux主机 远程登录工具 ssh 使用scp远程复制工具 实现ssh无密码登录验证 远程管理进阶与Xshell 常用的网络工具 IP命令的使用 ss与n ...

  2. Linux下网络服务的安全设置

    Linux下网络服务的安全设置 Linux操作系统由于其良好的稳定性.健壮性.高效性和安全性.正在成为各种网络服务的理想平台.各种网络应用在Linux系统上部有性能卓越的应用,例如,提供Web服务的A ...

  3. 虚拟机重启服务器失败的原因,虚拟机重启网络服务失败,当查看状态显示错误Failed to start LSB.........

    重启网络失败截图 从本质上来看出现这样的问题,是因为拷贝过来的虚拟机重新分配了网卡MAC地址.这样造成的结果是配置文件中MAC与当前网卡MAC不一致.所以只需要修改一下配置文件即可. 用ip addr ...

  4. 尚硅谷 Linux网络服务数据库 笔记

    目录 网络基础服务 CentOS6与CentOS7区别 常见的网络协议与端口 网关和路由 网络管理命令 SSH管理 TCP Wrappers 简单防火墙 DHCP服务 DHCP的工作原理 DHCP服务 ...

  5. as 不显示gradle视图_Python构建RESTful网络服务[Django篇:基于类视图的API]

    系列文章介绍 本系列文章将详细介绍将Django官方引导教程中的投票项目改写为RESTful网络服务.Django官方教程地址https://docs.djangoproject.com/zh-han ...

  6. Contos7 克隆实例 以及 配置网络-服务-等相关信息

    以下为我自己整理的克隆虚拟机和设置固定IP的方法,记录一下,以防忘记: 桥接模式网络配置 1.配置ip地址等信息在文件里做如下配置: /etc/sysconfig/network-scripts/if ...

  7. linux环境下和网络服务相关的配置文件含义及如何配置

    要建立一个安全Linux服务器就首先要了解Linux环境下和网络服务相关的配置文件的含义及如何进行安全的配置.那天查看服务器的eth0地址,后来想了一些问题,到家里就翻了翻以前的文档,无意中看到了这个 ...

  8. openstack网络服务neutron

    一.环境准备 1.虚拟机准备 IP地址 主机名 操作系统 192.168.56.11 linux-node1 CentOS7 192.168.56.12 linux-node2 CentOS7 其中, ...

  9. centeros7网络服务无法启动_Linux网络服务02——DHCP原理与配置

    Linux网络服务02--DHCP原理与配置 一.DHCP服务概述 1.DHCP(Dynamic Host Configuration Protocol)动态主机配置协议 DHCP是由Internet ...

最新文章

  1. HDU-4081 Qin Shi Huang's Road 8ystem(次小生成树)
  2. 学术前沿 | DeepMind最新成果:图表示学习算法推理~46页ppt
  3. 11.消息摘要算法之MD5
  4. node repl环境
  5. python多线程刷网站流量(含ip代理池文档,可制作成exe文件挂服务器代刷)
  6. Win1909+vs2019+Windows 10 WDK 2004(10.0.19041.1) + Windows 10 SDK 2004(10.0.19041.1)环境搭建
  7. CAD中插入外部参照字体会变繁体_打开CAD图纸发现图形丢失,原来是大意了,四招解决...
  8. 图像的代数运算与逻辑运算——Matlab实现
  9. 第2章 应用层-计算机网络
  10. 小巷开店问题(第三题)
  11. 各向异性渲染(一)基础理论
  12. 从零双排java之Map
  13. 从word中提取图片的三种方法
  14. 深入浅出Qt数据库编程:从基本操作到高级技巧
  15. R语言检验时间序列的平稳性:使用tseries包的adf.test函数实现增强的Dickey-Fuller(ADF)检验、检验时序数据是否具有均值回归特性(平稳性)、不具有均值回归特性的案例
  16. 淘宝大数据解析之timetunnel
  17. java扰码,程序员升职记/人力资源机器(Human Resource Machine)伪·指南
  18. java jbutton添加图片代码_java-如何将图像添加到JButton
  19. 云服务器-API接口
  20. LeetCode(python3)——234.回文联表

热门文章

  1. R语言ggplot2可视化:为可视化图像添加多行标题(multi line title)并将多行标题居中对齐(center align)
  2. R语言ggplot2可视化改变线图(line plot)中线条的色彩实战
  3. R语言临床预测模型的评价指标与验证指标实战:自定义的净重新分类指数NRI(Net Reclassification Index, NRI)函数
  4. Python使用tsne进行高维数据可视化实战:二维可视化、三维可视化
  5. python使用正则化检查字符串的起始和结束字符相同
  6. php原生开发规范,php开发规范
  7. 如何理解PacBio的准确度?
  8. 数字图像处理笔记二 - 图片缩放(最近邻插值(Nearest Neighbor interpolation))
  9. php 经纬度 摩卡 转换,WGS84经纬度坐标与WEB摩卡托坐标转换
  10. android webview详情,Android中的WebView详细介绍