搭建FTP服务器

FTP的工作原理:

FTP:File Transfer Protocol ,文件传输协议。属于NAS存储的一种协议,基于CS结构。

ftp采用的是双端口模式,分为命令端口和数据端口,命令端口对应命令通道,数据端口对应数据通道。

命令端口:FTP服务器的命令端口默认是tcp/21
数据端口:随机
两种工作模式:主动模式和被动模式

主动模式:FTP服务器主动连接客户端,这个时候FTP服务器的数据端口使用的是20端口。

被动模式:客户端主动连接FTP服务器,这时候FTP服务器的数据端口是随机的。

FTP的工作过程:
1.服务端开启对21端口的监听。
2.客户端发起对服务端的连接请求,通过服务器的21端口连接到服务器。此时建立起了命令通道,命令通道用于传输和通信相关的一些指令。
3.建立数据通道
如果是主动模式:服务端会使用20端口主动连客户端的一个随机端口。
如果是被动模式:客户端使用一个随机端口连接服务端的一个随机端口
4.使用数据通道进行数据的传输。
探测端口是否打开的方法:

telnet工具:

例如:查看22端口是否开启

#格式:telnet host port #如果能响应则端口就是打开的

#如果telnet能响应则端口就是打开的
[root@CentOS8 ~]# telnet 10.0.0.12 22
Trying 10.0.0.12...
Connected to 10.0.0.12.
Escape character is '^]'.
SSH-2.0-OpenSSH_8.0

nmap工具:

[root@HAproxy ~]# nmap 10.0.0.66 -p 21
Starting Nmap 7.70 ( https://nmap.org ) at 2022-12-08 13:37 CST
Nmap scan report for 10.0.0.66
Host is up (0.00033s latency). PORT STATE SERVICE
21/tcp open ftp
MAC Address: 00:0C:29:29:03:AF (VMware) Nmap done: 1 IP address (1 host up) scanned in 0.53 seconds

实现FTP的相关软件:

windows中的相关软件:Filezilla、IIS

Filezilla官网: https://filezilla-project.org/index.php

linux中的相关软件:

服务端:vsftpd、Wu-ftpd等

vsftpd官网: https://security.appspot.com/vsftpd.html

客户端:ftp、wget、curl等

VSFTP

性能好、下载速度快、单机可支持15k并发量

VSFTP的安装和配置:

ubuntu安装vsftpd:

[root@HAproxy vsftpd]# apt install vsftpd -y

# 说明:vsftpd搭建的ftp服务器默认只允许匿名用户连接 匿名用户包括:ftp、anonmous。

# ubuntu1804 默认不允许匿名

访问ftp服务器的三种方式:

1. 匿名账号访问:ftp或anonymous
2. FTP服务器的本地账号访问:例如linux里面的root等用户账号
3. 虚拟账号访问:
虚拟账号:操作系统中不存在的账号,专用于对应服务的账号。
例如登录mysql使用的账号也是虚拟账号

VSFTPD的相关配置

FTP服务器的基础配置:

配置文件格式:option=value   # 注意:= 前后不要有空格

端口修改:

局域网内使用,端口一般不用修改

FTP服务器默认端口修改:

# 默认客户端发起对服务端的连接请求,通过服务器的21端口连接到服务器
listen_port=2121 # 指定ftp服务器的端口是2121

FTP服务器主动模式数据通道端口修改:

# 更改数据通道主动模式服务端的端口:一般不用修改
connect_from_port_20=YES
ftp_data_port=20 (默认) # 指定主动模式的端口

FTP服务器被动模式的端口范围:

# 设置服务端被动模式的端口范围:  被动模式:客户端主动连服务端 服务器端的数据通道端口随机
# 服务端被动模式的端口范围一般不用修改
pasv_min_port=6000 # 0为随机分配,端口范围会影响客户端的并发数
pasv_max_port=6010 # 表示被动模式端口范围是6000-6010 一共11个端口可用

注意:

# 使用linux的客户端工具连接ftp服务端时:客户端默认使用被动模式  例如:ftp

# 使用windows的客户端工具连接ftp服务端时:客户端默认使用主动模式 例如:Filezilla

FTP服务器的时间设置:

# 设置ftp服务器的时间为本地时间:(一般不用修改。有些客户端能自动校准时间)

use_localtime=YES   # 使用当地时间(默认为NO,使用GMT)

FTP服务器匿名用户的相关设置

FTP服务器默认只允许匿名用户登录,匿名用户包括ftp或anonymous。

匿名用户:在客户机上不存在的用户叫做匿名用户,匿名用户是单独为特定服务效力的用户。例如FTP服务器的ftp用户,mysql的root用户等都是匿名用户。

# 设置允许匿名用户登录 centos7默认就允许匿名用户登录
anonymous_enable=YES # 支持匿名用户,默认不允许匿名 # 设置允许匿名用户使用空密码登录。
no_anon_password=YES # 匿名用户略过口令检查 , 默认NO,表示不输入匿名用户的密码进行登录

匿名用户权限设置

# 设置匿名用户能上传文件到FTP服务器
anon_upload_enable=YES # 允许匿名上传,注意:文件系统权限 # 设置匿名用户能在FTP服务器上创建目录文件
anon_mkdir_write_enable=YES #允许匿名创建文件夹

说明:

# 跨网络传输数据需要注意的问题:
# (1)服务自身:服务本身是否允许
# (2)文件系统的权限:是否具备文件系统的写权限 例如:虽然开启了允许匿名用户上传文件,但是文件对这个用户没有写权限,照样上传不上去

说明:设置文件权限的时候,不能给用户的根目录写权限,只能给子目录写权限,否则连接的时候报如下错误

500 OOPS: vsftpd: refusing to run with writable root inside chroot()
Login failed.
421 Service not available, remote server has closed connection

匿名用户上传的文件属性设置

# 设置匿名用户的上传文件的默认的所有者和权限
chown_uploads=YES # 默认NO YES表示允许修改上传文件的权限和所有者 chown_username=wang # 指定匿名用户上传文件的文件所有者(如果不指定,文件的属主就是这个匿名用户) chown_upload_mode=0644 # 指定上传文件的文件权限

例如:不设置匿名用户上传的文件属性

#文件的属主就是这个匿名用户
root@ubuntu1804:/srv/ftp/tmp# ll
-rw------- 1 ftp ftp 1659 Dec 7 21:37 anaconda-ks.cfg
-rw------- 1 ftp ftp 258449 Dec 7 21:20 ''$'\265\347\327''Ӻ'$'\317''ͬ.pdf'
-rw------- 1 ftp ftp 77703 Dec 7 21:20 ZKZ_4224961_20201023210611127.pdf
-rw------- 1 ftp ftp 247706 Dec 7 21:30 xxxxxx.pdf'

下载

默认下载FTP服务器上的文件,只有所有人都具有读权限的文件才能下载。

# 方法一:
anon_world_readable_only=NO # 只能下载全部读的文件, 默认YES,表示只有所有人都具有读权限的文件才能下载 # 方法二:设置上传文件的默认权限
anon_umask=0333 # 指定匿名上传文件的umask,默认077,注意:0333中的0不能省略 (777-333=444)

删除和修改

# 默认情况是传上去了就不能删除了
anon_other_write_enable=YES # 可删除和修改上传的文件,默认NO ,改为yes

使用FTP服务器的系统用户登录FTP服务器相关设置

使用FTP服务器上面的系统用户进行登录。

# 设置允许系统用户登录ftp服务器并上传文件:
local_enable=YES # 是否允许本地用户登录,YES表示允许 write_enable=YES # 是否允许本地用户上传文件,YES表示允许 local_umask=022 # 指定系统用户上传文件的默认权限对应umask

系统用户的相关权限设置

local_enable=YES   # 是否允许本地用户登录,YES表示允许

write_enable=YES   # 是否允许本地用户上传文件,YES表示允许

local_umask=022    # 指定系统用户上传文件的默认权限对应umask

FTP服务器的虚拟用户设置

使用系统用户登录FTP服务器的时候,统一将所有系统用户都映射成某一个guest用户。

可以映射为任何一个用户,但这个用户必须要在FTP服务器上面存在才行。不一定是ftp这个用户,可以映射成任何一个系统账号。

guest_enable=YES     # 所有系统用户都映射成某一个guest用户

guest_username=ftp   # 配合上面选项才生效,指定guest用户 

local_root=/ftproot  # 指定guest账号登录进来映射的目录 所有的操作系统用户登录进来都是这个目录(如果不指定就在guest_username这个用户的家目录里面)

#设置每个用户都拥有独立的配置
user_config_dir=/etc/vsftpd/conf.d/ # 每个用户独立的配置文件目录 这里可以针对不同的用户放不同的配置

禁锢设置

禁锢所有系统用户在家目录中,不能cd到其它目录。因为使用系统用户登录以后,默认能随便切换到其它目录里面去。

#不允许用户随便切换目录,只能在家目录中
chroot_local_user=YES #禁锢系统用户,默认NO,即不禁锢 # 此时ftp会把对应用户的家目录作为根目录,如果这个家目录存在写权限则登录的时候会提示错误相关错误信息。

其它设置

设置ftp服务器的日志:

# vsftpd默认使用的就是wu-ftp的日志格式,vsftpd日志:默认不启用。可以手动启用

# wu-ftp 日志:默认启用
xferlog_enable=YES # 启用记录上传下载日志,此为默认值
xferlog_std_format=YES # 使用wu-ftp日志格式,此为默认值
xferlog_file=/var/log/xferlog #可自动生成, 此为默认值 # vsftpd日志:默认不启用
dual_log_enable=YES # 使用vsftpd日志格式,默认不启用
vsftpd_log_file=/var/log/vsftpd.log # 可自动生成, 此为默认值

设置用户使用客户端连接ftp服务器后的提示信息:

# 方法一:
ftpd_banner="welcome to mage ftp server" # 方法二:将提示信息存放到一个文件中
banner_file=/etc/vsftpd/ftpbanner.txt

范例:ubuntu1804 配置匿名用户访问FTP服务器

#1. 创建对应的目录
root@ubuntu1804:~# mkdir /data
root@ubuntu1804:~# mkdir /data/data
root@ubuntu1804:~# chmod 777 /data/data #简单粗暴的方法
# root@ubuntu1804:~# setfacl -m u:ftp:rwx /data/data # 给ftp用户权限 #2. 修改配置文件
root@ubuntu1804:~# vim /etc/vsftpd.conf
anonymous_enable=YES
no_anon_password=YES anon_upload_enable=yes
anon_mkdir_write_enable=yes
anon_other_write_enable=yes
anon_world_readable_only=NO
write_enable=yes
# allow_writeable_chroot=YES #对根目录的写权限,匿名用户不生效
chroot_local_user=YES
anon_root=/data #指定匿名用户登录进来后的根目录,如果不加就在该用户的家目录 #3. 重启服务
root@ubuntu1804:~# systemctl status vsftpd.service #4. 测试
[root@HAproxy ~]# ftp 10.0.0.66 #连接到FTP服务器
Connected to 10.0.0.66 (10.0.0.66).
220 (vsFTPd 3.0.3)
Name (10.0.0.66:root): ftp
230 Login successful.
Remote system type is UNIX.
Using binary mode to transfer files.
ftp> pwd
257 "/" is the current directory
ftp> ls
227 Entering Passive Mode (10,0,0,66,235,199).
150 Here comes the directory listing.
-rw-r--r-- 1 0 0 0 Dec 08 10:33 12345
drwxr-xr-x 2 111 115 4096 Dec 08 10:38 data
226 Directory send OK.
ftp> cd data #进入数据目录
250 Directory successfully changed.
ftp> !ls
12345 abc anaconda-ks.cfg
ftp> put 12345 #上传文件
local: 12345 remote: 12345
227 Entering Passive Mode (10,0,0,66,158,145).
150 Ok to send data.
226 Transfer complete.
ftp> ls
227 Entering Passive Mode (10,0,0,66,157,235).
150 Here comes the directory listing.
-rw------- 1 111 115 4 Dec 08 10:37 123
-rw------- 1 111 115 0 Dec 08 10:42 12345
226 Directory send OK.
ftp> get 123 #下载文件
local: 123 remote: 123
227 Entering Passive Mode (10,0,0,66,67,112).
150 Opening BINARY mode data connection for 123 (4 bytes).
226 Transfer complete.
4 bytes received in 2.1e-05 secs (190.48 Kbytes/sec)
ftp>

范例:设置允许FTP服务器的系统用户来登录ftp服务器

# 创建测试目录
root@ubuntu1804:~# mkdir /ftproot
root@ubuntu1804:~# chmod 777 /ftproot
root@ubuntu1804:~# setfacl -m u:ftp:rwx /ftproot #更改配置文件
local_enable=YES
write_enable=YES
local_umask=022
local_root=/ftproot
allow_writeable_chroot=YES #允许对
chroot_local_user=YES #测试
[root@HAproxy ~]# ftp 10.0.0.66
Connected to 10.0.0.66 (10.0.0.66).
220 (vsFTPd 3.0.3)
Name (10.0.0.66:root): tom #如果这个用户在FTP服务器上不存在,需要使用useradd -m xx创建
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 (10,0,0,66,60,121).
150 Here comes the directory listing.
-rw-r--r-- 1 0 0 0 Dec 08 10:56 12345
-rw-r--r-- 1 1000 1000 1659 Dec 08 10:59 anaconda-ks.cfg
drwxrwxrwx 2 0 0 4096 Dec 08 10:58 data
-rw-r--r-- 1 1000 1000 1198 Dec 08 10:59 notepad++.exe - ¿쾝·½ʽ.lnk
226 Directory send OK.
ftp> !ls
123 12345 abc anaconda-ks.cfg
ftp> put 123 #上传文件
local: 123 remote: 123
227 Entering Passive Mode (10,0,0,66,57,52).
150 Ok to send data.
226 Transfer complete.
4 bytes sent in 7.4e-05 secs (54.05 Kbytes/sec)
ftp> get anaconda-ks.cfg #下载文件
local: anaconda-ks.cfg remote: anaconda-ks.cfg
227 Entering Passive Mode (10,0,0,66,28,156).
150 Opening BINARY mode data connection for anaconda-ks.cfg (1659 bytes).
226 Transfer complete.
1659 bytes received in 9.1e-05 secs (18230.77 Kbytes/sec)
ftp>

范例:设置系统用户登录FTP服务器后统一映射为一个虚拟用户

#1. 创建目录文件
root@ubuntu1804:~# mkdir /ftproot
root@ubuntu1804:~# chmod 777 /ftproot #2. 修改配置文件
root@ubuntu1804:~# vim /etc/vsftpd.conf
local_enable=YES
write_enable=yes guest_enable=YES
guest_username=ftp chroot_local_user=YES #禁锢 local_root=/ftproot
#因为映射为了虚拟用户 所以要配置虚拟用户的相关权限
anon_upload_enable=yes
anon_mkdir_write_enable=yes
anon_other_write_enable=yes
anon_world_readable_only=NO allow_writeable_chroot=YES #允许对根目录有写权限 # 3.重启服务
root@ubuntu1804:~# systemctl restart vsftpd.service # 4. 测试
[root@HAproxy ~]# ftp 10.0.0.66 #连接FTP服务器
Connected to 10.0.0.66 (10.0.0.66).
220 (vsFTPd 3.0.3)
Name (10.0.0.66:root): tom #FTP服务器的系统用户登录
331 Please specify the password.
Password: #输入密码
230 Login successful.
Remote system type is UNIX.
Using binary mode to transfer files. ftp> !ls
123 12345 abc anaconda-ks.cfg
ftp> put abc #上传文件
local: abc remote: abc
227 Entering Passive Mode (10,0,0,66,143,226).
150 Ok to send data.
226 Transfer complete.
4 bytes sent in 6.6e-05 secs (60.61 Kbytes/sec)
ftp> get desktop.ini #下载文件
local: desktop.ini remote: desktop.ini
227 Entering Passive Mode (10,0,0,66,45,217).
150 Opening BINARY mode data connection for desktop.ini (474 bytes).
226 Transfer complete.
474 bytes received in 0.000216 secs (2194.44 Kbytes/sec)
ftp> !ls #查看下载的文件
123 12345 abc anaconda-ks.cfg desktop.ini

范例:将系统用户映射为一个指定的系统用户

#1. 创建目录
root@ubuntu1804:~# mkdir /ftproot
root@ubuntu1804:~# chmod 777 /ftproot #2. 修改配置文件 和上面的配置文件一样
local_enable=YES #允许本地用户登录
write_enable=YES #允许本地用户上传文件
local_umask=022 #允许本地用户上传文件的权限
local_root=/ftproot #指定用户的目录 allow_writeable_chroot=YES #允许对根目录有写权限 chroot_local_user=YES #禁锢用户 guest_enable=YES #允许映射为指定用户
guest_username=bob #系统用户bob anon_other_write_enable=yes
anon_upload_enable=yes #
anon_mkdir_write_enable=yes
anon_world_readable_only=NO #3. 重启服务
root@ubuntu1804:~# systemctl restart vsftpd.service #4. 测试
[root@HAproxy ~]# ftp 10.0.0.66
Connected to 10.0.0.66 (10.0.0.66).
220 (vsFTPd 3.0.3)
Name (10.0.0.66:root): tom
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 (10,0,0,66,194,152).
150 Here comes the directory listing.
drwx------ 2 1001 1001 4096 Dec 08 11:47 157
drwxrwxrwx 2 0 0 4096 Dec 08 11:33 data
226 Directory send OK.
ftp> !ls
123 12345 abc anaconda-ks.cfg desktop.ini
ftp> put 123 #上传
local: 123 remote: 123
227 Entering Passive Mode (10,0,0,66,150,72).
150 Ok to send data.
226 Transfer complete.
4 bytes sent in 5.5e-05 secs (72.73 Kbytes/sec)
ftp> get 123 #下载
local: 123 remote: 123
227 Entering Passive Mode (10,0,0,66,171,38).
150 Opening BINARY mode data connection for 123 (4 bytes).
226 Transfer complete.
4 bytes received in 9.5e-05 secs (42.11 Kbytes/sec)

注意事项

将登录的目录作为了当前用户的根目录,但是FTP服务器的根站点要求这个登录的用户对他没有写权限。

例如使用wang用户进行登录,对用户进行了禁锢的操作,使用wang登录的时候,就把/homt/wang作为了根,但是wang对这个目录有写权限,所以登录就会报错。

解决方法:

# 方法一:
chomod 555 /home/wang #取消写权限 #方法二:
allow_writeable_chroot=YES #允许对家目录的写权限

黑名单、白名单

chroot_list_enable=YES   #默认是NO  YES表示要启用chroot_list_file  开启名单

chroot_list_file=/etc/vsftpd/chroot_list  #里面存放用户名

白名单:默认都不能访问,只有名单里面的才能访问。

chroot_local_user=YES  #禁锢所有系统用户在家目录中
chroot_list_enable=YES
chroot_list_file=/etc/vsftpd/chroot_list #表示的是白名单

黑名单:默认都能访问,名单里面的不能访问

chroot_local_user=NO  #不禁锢所有系统用户在家目录中
chroot_list_enable=YES #设置允许或者拒绝的用户列表,YES标识启用这个列表
chroot_list_file=/etc/vsftpd/chroot_list #表示的是黑名单

PAM模块实现用户访问控制

root身份不能连接FTP服务器的原因就是使用pam来限制的,因为ftp是明文传输用户密码的。为了安全不允许root登录ftp服务器。

vsftpd利用pam来控制用户的访问。

# vsftpd中的默认配置:
pam_service_name=vsftpd #vsftpd指的就是/etc/pam.d/vsftpd这个文件 ------------------------------------------------------------------------------------------------------------ root@ubuntu1804:/etc/pam.d# vim vsftpd
# Standard behaviour for ftpd(8). #放入这个文件的用户是被拒绝登录FTP服务器的
auth required pam_listfile.so item=user sense=deny file=/etc/ftpusers onerr=succeed # Note: vsftpd handles anonymous logins on its own. Do not enable pam_ftp.so. # Standard pam includes
@include common-account
@include common-session
@include common-auth
auth required pam_shells.so ------------------------------------------------------------------------------------------------------------
root@ubuntu1804:/etc/pam.d# vim /etc/ftpusers #这个文件里面的用户都是禁止登陆的
# /etc/ftpusers: list of users disallowed FTP access. See ftpusers(5). root
daemon
bin
sys
sync
games
man
lp
mail
news
uucp
nobody

并发连接数设置

# 同一时间允许多少个用户连接
max_clients=1000 #默认值是不受限制的 #每个IP同时发起的最大连接数
max_per_ip=0 #默认不受限制

速率控制

# 匿名用户的最大传输速率,以字节为单位,比如:1024000表示1MB/s
anon_max_rate=0 #默认不受限制 # 本地用户的最大传输速率
local_max_rate=0 #默认不受限制

ubuntu1804搭建FTP服务器的方法的更多相关文章

  1. 在Ubuntu下搭建FTP服务器的方法

    由于整个学校相当于一个大型局域网,相互之间传送数据非常快,比如要共享个电影,传点资料什么的. 所以我们可以选择搭建一个FTP服务器来共享文件. 那么问题来了,有的同学会问,我们既然在一个局域网内,直接 ...

  2. centos搭建ftp服务器的方法

    FTP操作 一.查看是否安装vsftpd rpm –qa|grep vsftpd 二.下载vsftpd yum install -y vsftpd 三.查看是否开启服务 service vsftpd ...

  3. win10搭建ftp服务器的操作方法【图文教程】

    我们知道FTP是TCP/IP网络上两台计算机传送文件的协议,使得主机间可以共享文件.对于win10版本的ftp服务器搭建方法可能有部分用户还不是很清楚,下面这篇文章就是关于win10搭建ftp服务器的 ...

  4. 【转】【FTP】之windows8.1上搭建FTP服务器方法

    参考地址:<windows8.1上搭建FTP服务器方法>

  5. Linux 搭建FTP服务器

    介绍 本章主要介绍在Linux中搭建FTP服务器的过程,需要掌握的要点是配置文件的合理配置. 知识点 在linux中使用的FTP是vsftp FTP可以有三种登入方式分别是: 匿名登录方式:不需要用户 ...

  6. RedHat6.2搭建FTP服务器

    我的环境: A:Red Hat Enterprise 6.2 IP:192.168.16.12 此机作测试端 B:Red Hat Enterprise 6.2 IP:192.168.16.13 此机做 ...

  7. 使用FileZilla等软件搭建ftp服务器

    FTP的全称是File Transfer Protocol(文件传输协议).顾名思义,就是专门用来传输文件的协议. FTP服务器,则是在互联网上提供存储空间的计算机,它们依照FTP协议提供服务.简单地 ...

  8. 使用apache ftpserver搭建ftp服务器

    作为一个javaer,遇到任何问题,先查一下java中的解决方案.地球上的许多事情,在java中都能找到完美的解决方案.之前搭建ftp服务器使用的是vsftpd,现在可以把它卸掉了,它以服务的形式运行 ...

  9. CenOS搭建FTP服务器

    CenOS搭建FTP服务器 -------------------------------------------------------------------------准备工作--------- ...

  10. (转)Centos搭建FTP服务器

    场景:ftp服务器对于在Linux服务器上进行文件操作太方便,在安装软件时候,大的软件也可以先上传再进行安装! 1 搭建FTP服务器 1.1 检查vsftpd 查看是否已经安装vsftpd rpm - ...

随机推荐

  1. filebeat直接给es传输日志,自定义索引名

    ElasticStack从2019年1月29日的6.6.0版本的开始,引入了索引生命周期管理的功能,新版本的Filebeat则默认的配置开启了ILM,导致索引的命名规则被ILM策略控制. 加上这个配置 ...

  2. k8s安装常用软件的yaml文件

    参考网址:https://www.bejson.com (网站文件部分有坑,需要擦亮眼睛) nginx k8s版本:v1.20 apiVersion: apps/v1 kind: Deployment ...

  3. SQL Server如何精准匹配字符中的字符,绝对匹配。

    举例: 我现在是需要查询这字段里包含1的数据 我如果直接charindex,那么11,12也会被包含. 解决(1): SELECT * FROM ( SELECT '1,2,12,111' AS st ...

  4. SQL日期查询语句

    --查询当天(1: select * from ShopOrder where datediff(day,ordTime,getdate()-1)=0 --查询当天(2:select * from i ...

  5. Ruoyi字典源码学习

    此文章属于ruoyi项目实战系列 使用目的 什么是字典数据:具体的值(0,1,"Y","N"),对应具体的业务逻辑("男","女& ...

  6. Qt class 前置声明

    转载:https://www.cnblogs.com/ycbeginner/p/9403976.html 在Qt开发项目中,经常会用到各种库,但是一般在.h文件中进行某类型变量定义时,都会对其类型的c ...

  7. Windows活动目录_票据——敬请期待!

    票据:域控&域机子之间的信任密钥 [缺省40天更换一次] 域用户登录过程 域用户的账户密码(用信任密钥加密的)传递至域控: 域控验证账户密码成功后,构造域用户SID和组SID(用信任密钥加密的 ...

  8. Go | 讲解GOROOT、GOPATH、GOBIN

    前言 Go(又称 Golang)是 Google 开发的一种静态强类型.编译型.并发型,并具有垃圾回收功能的编程语言.Go 被誉为是未来的服务器端编程语言. Go是一门全新的静态类型开发语言,具有自动 ...

  9. python渗透测试入门——基础的网络编程工具

    <Python黑帽子--黑客与渗透测试编程之道学习>这本书是我在学习安全的过程中发现的在我看来十分优秀的一本书,业内也拥有很高的评价,所以在这里将自己的学习内容分享出来. 1.基础的网络编 ...

  10. 还在使用@Autowrired注入?不妨试试@RequiredArgsConstructor

    一.前言 小编最近在项目里看到有的同事大神用到了Lombok中的一个@RequiredArgsConstructor,带着好奇发现这个东西就是简化了一些@Autowired注解,想想如果一个Servi ...