Linux加强篇011-使用Vsftpd服务传输文件

本文涉及的产品
云服务器 ECS,每月免费额度280元 3个月
云服务器ECS,u1 2核4GB 1个月
简介: 山重水复疑无路,柳暗花明又一村

一、前言

悟已往之不谏知来者之可追实迷途其未远觉今而昨非。舟遥遥以轻飏风飘飘而吹衣。问征夫以前路恨晨光之熹微

第一版我已经全部放到我的精选里了,大家可以点开我的头像主页,选择精选观看,本系列依照《Linux就该这么学》第二版随书学习练习操作,将一些课本上不顺畅的地方,全部以最简方式免费开源展示给大家,资源大家可以自行百度,学习起来我们既要多巴胺也要内啡肽。

拖延是一种病,是人生的大忌,干掉拖延,你的人生已经成功80%,人需要执行力,遇到难的事情习惯了思考,在思考中慢慢拖延,不愿意付诸于行动,可是不行动就不会有任何成果,业精于勤,荒于嬉;行成于思,毁于随成功在于不断的思考和探索,越难的东西越想要去征服,送上天王的一首《花海-周杰伦》,希望你也在等待一个重新开始的机会,不要被眼前的困难打倒。

11.1 文件传输协议

为了能够在如此复杂多样的设备之间解决文件传输的问题,文件传输协议(FTP)应运而生。FTP是一种在互联网中进行文件传输的协议,基于客户端/服务器模式,默认使用20、21号端口,其中端口20用于进行数据传输,端口21用于接受客户端发出的相关FTP命令与参数。FTP服务器普遍部署于内网中,具有容易搭建、方便管理的特点。而且有些FTP客户端工具还可以支持文件的多点下载以及断点续传技术

1703123856155.jpg

FTP服务器是按照FTP协议在互联网上提供文件存储和访问服务的主机,FTP客户端则是向服务器发送连接请求,以建立数据传输链路的主机。FTP协议有下面两种工作模式。

主动模式:FTP服务器主动向客户端发起连接请求。

被动模式:FTP服务器等待客户端发起连接请求(默认工作模式)。

由于FTP、HTTP、Telnet等协议的数据都是使用明文进行传输的,因此从设计上就是不可靠的。人们为了满足以密文方式传输文件的需求,发明了vsftpd服务程序。

在配置妥当软件仓库之后,就可以安装vsftpd服务程序了

[root@localhost ~]# dnf install -y vsftpd

iptables防火墙管理工具默认禁止了FTP协议的端口号,清空iptables防火墙的默认策略

[root@localhost ~]# iptables -F

[root@localhost ~]# iptables-save  

把FTP协议添加到firewalld服务的允许列表中

[root@localhost ~]# firewall-cmd --permanent --zone=public --add-service=ftp

success

[root@localhost ~]# firewall-cmd --reload  

success

vsftpd服务程序的主配置文件(/etc/vsftpd/vsftpd.conf)去掉注释信息,剩下有效参数

[root@localhost ~]# mv /etc/vsftpd/vsftpd.conf /etc/vsftpd/vsftpd.conf_bak

[root@localhost ~]# grep -v "#" /etc/vsftpd/vsftpd.conf_bak > /etc/vsftpd/vsftpd.conf

[root@localhost ~]# cat /etc/vsftpd/vsftpd.conf

anonymous_enable=NO

local_enable=YES

write_enable=YES

local_umask=022

dirmessage_enable=YES

xferlog_enable=YES

connect_from_port_20=YES

xferlog_std_format=YES

listen=NO

listen_ipv6=YES

pam_service_name=vsftpd

userlist_enable=YES

vsftpd服务程序常用参数及作用

参数 作用
listen=[YES|NO] 是否以独立运行的方式监听服务
listen_address=IP地址 设置要监听的IP地址
listen_port=21 设置FTP服务的监听端口
download_enable=[YES|NO] 是否允许下载文件
userlist_enable=[YES|NO]
userlist_deny=[YES|NO]
设置用户列表为“允许”还是“禁止”操作
max_clients=0 最大客户端连接数,0为不限制
max_per_ip=0 同一IP地址的最大连接数,0为不限制
anonymous_enable=[YES|NO] 是否允许匿名用户访问
anon_upload_enable=[YES|NO] 是否允许匿名用户上传文件
anon_umask=022 匿名用户上传文件的umask值
anon_root=/var/ftp 匿名用户的FTP根目录
anon_mkdir_write_enable=[YES|NO] 是否允许匿名用户创建目录
anon_other_write_enable=[YES|NO] 是否开放匿名用户的其他写入权限(包括重命名、删除等操作权限)
anon_max_rate=0 匿名用户的最大传输速率(字节/秒),0为不限制
local_enable=[YES|NO] 是否允许本地用户登录FTP
local_umask=022 本地用户上传文件的umask值
local_root=/var/ftp 本地用户的FTP根目录
chroot_local_user=[YES|NO] 是否将用户权限禁锢在FTP目录,以确保安全
local_max_rate=0 本地用户最大传输速率(字节/秒),0为不限制

11.2 Vsftpd服务程序

vsftpd作为更加安全的文件传输协议服务程序,允许用户以3种认证模式登录FTP服务器。

匿名开放模式:是最不安全的一种认证模式,任何人都可以无须密码验证而直接登录到FTP服务器。

本地用户模式:是通过Linux系统本地的账户密码信息进行认证的模式,相较于匿名开放模式更安全,而且配置起来也很简单。但是如果黑客破解了账户的信息,就可以畅通无阻地登录FTP服务器,从而完全控制整台服务器。

虚拟用户模式:更安全的一种认证模式,它需要为FTP服务单独建立用户数据库文件,虚拟出用来进行密码验证的账户信息,而这些账户信息在服务器系统中实际上是不存在的,仅供FTP服务程序进行认证使用。这样,即使黑客破解了账户信息也无法登录服务器,从而有效降低了破坏范围和影响。

首先手动安装这个ftp客户端工具,ftp是Linux系统中以命令行界面的方式来管理FTP传输服务的客户端工具。(默认安装)

[root@localhost ~]# dnf install -y ftp

11.2.1 匿名访问模式

vsftpd服务程序默认关闭了匿名开放模式,我们需要做的就是开放匿名用户的上传、下载文件的权限,以及让匿名用户创建、删除、更名文件的权限。

向匿名用户开放权限参数及作用

参数 作用
anonymous_enable=YES 允许匿名访问模式
anon_umask=022 匿名用户上传文件的umask值
anon_upload_enable=YES 允许匿名用户上传文件
anon_mkdir_write_enable=YES 允许匿名用户创建目录
anon_other_write_enable=YES 允许匿名用户修改目录名称或删除目录

添加匿名访问相关参数(加粗,或者全部直接复制进去,一定要检查一下,别有错的)添加后重启vsftpd服务程序,并设置开机自启动

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

anonymous_enable=YES

anon_umask=022

anon_upload_enable=YES

anon_mkdir_write_enable=YES

anon_other_write_enable=YES

local_enable=YES

write_enable=YES

local_umask=022

dirmessage_enable=YES

xferlog_enable=YES

connect_from_port_20=YES

xferlog_std_format=YES

listen=NO

listen_ipv6=YES

pam_service_name=vsftpd

userlist_enable=YES

[root@localhost ~]# systemctl restart vsftpd

[root@localhost ~]# systemctl enable vsftpd

Created symlink /etc/systemd/system/multi-user.target.wants/vsftpd.service → /usr/lib/systemd/system/vsftpd.service.

现在就可以在客户端执行ftp命令连接到远程的FTP服务器。在vsftpd服务程序的匿名开放认证模式下,其账户统一为anonymous,密码为空。在连接FTP服务器后,默认访问的是/var/ftp目录。可以切换到该目录下的pub目录中,然后尝试创建一个新的目录文件,以检验是否拥有写入权限:

[root@localhost ~]# ls -ld /var/ftp/pub

drwxr-xr-x. 2 root root 6 Apr 21  2021 /var/ftp/pub

[root@localhost ~]# chown -R ftp /var/ftp/pub

[root@localhost ~]# ls -ld /var/ftp/pub

drwxr-xr-x. 2 ftp root 6 Apr 21  2021 /var/ftp/pub

[root@localhost ~]# ftp 192.168.227.10

Connected to 192.168.227.10 (192.168.227.10).

220 (vsFTPd 3.0.3)

Name (192.168.227.10:root): anonymous

331 Please specify the password.

Password:回车

230 Login successful.

Remote system type is UNIX.

Using binary mode to transfer files.

ftp> cd pub

250 Directory successfully changed.

ftp> mkdir files

550 Create directory operation failed.

此时我们失败的原因是SELinux服务没有调整,使用getsebool命令查看与FTP相关的SELinux域策略

[root@localhost ~]# getsebool -a | grep ftp

ftpd_anon_write --> off

ftpd_connect_all_unreserved --> off

ftpd_connect_db --> off

ftpd_full_access --> off

ftpd_use_cifs --> off

ftpd_use_fusefs --> off

ftpd_use_nfs --> off

ftpd_use_passive_mode --> off

httpd_can_connect_ftp --> off

httpd_enable_ftp_server --> off

tftp_anon_write --> off

tftp_home_dir --> off

[root@localhost ~]# setsebool -P ftpd_full_access=on

进行重试

ftp> mkdir files

257 "/pub/files" created

ftp> rename files database

350 Ready for RNTO.

250 Rename successful.

ftp> rmdir database

250 Remove directory operation successful.

ftp> exit

221 Goodbye.

vsftpd服务自身带有安全保护机制,因此不要直接修改/var/ftp的权限,这有可能导致服务被“安全锁定”而不能登录。一定要记得是对里面的pub目录修改权限

[root@localhost ~]# ls -ld /var/ftp/

drwxr-xr-x. 3 root root 17 Dec 20 18:08 /var/ftp/

[root@localhost ~]# chmod -R 777 /var/ftp

[root@localhost ~]# ftp 192.168.227.10

Connected to 192.168.227.10 (192.168.227.10).

220 (vsFTPd 3.0.3)

Name (192.168.227.10:root): anonymous

331 Please specify the password.

Password:

500 OOPS: vsftpd: refusing to run with writable root inside chroot()

Login failed.

421 Service not available, remote server has closed connection

再把权限恢复回去

[root@localhost ~]# chmod -R 755 /var/ftp

11.2.2 本地用户模式

相较于匿名开放模式,本地用户模式要更安全,而且配置起来也很简单

本地用户模式使用权限参数及作用

参数 作用
anonymous_enable=NO 禁止匿名访问模式
local_enable=YES 允许本地用户模式
write_enable=YES 设置可写权限
local_umask=022 本地用户模式创建文件的umask值
userlist_deny=YES 启用“禁止用户名单”,名单文件为ftpusers和user_list
userlist_enable=YES 开启用户作用名单文件功能

umask一般被称为“权限掩码”或“权限补码”普通文件的默认权限是666,目录的默认权限是777,这都是写在系统配置文件中的。但默认值不等于最终权限值。umask参数的默认值是022,根据公式“默认权限−umask=实际权限”,所以普通文件的默认权限到手后就剩下644,而目录文件就剩下755

配置本地用户的参数(加粗,或者全部直接复制进去,一定要检查一下,别有错的),重启vsftpd服务程序:

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

anonymous_enable=NO

local_enable=YES

write_enable=YES

local_umask=022

dirmessage_enable=YES

xferlog_enable=YES

connect_from_port_20=YES

xferlog_std_format=YES

listen=NO

listen_ipv6=YES

pam_service_name=vsftpd

userlist_enable=YES

[root@localhost ~]# systemctl restart vsftpd

vsftpd服务程序所在的目录中默认存放着两个名为“用户名单”的文件(ftpusers和user_list),vsftpd服务程序目录中的这两个文件也有类似的功能—只要里面写有某位用户的名字,就不再允许这位用户登录到FTP服务器上。vsftpd服务程序为了保证服务器的安全性而默认禁止了root管理员和大多数系统用户的登录行为

[root@localhost ~]# cat /etc/vsftpd/user_list  

# vsftpd userlist

# If userlist_deny=NO, only allow users in this file

# If userlist_deny=YES (default), never allow users in this file, and

# do not even prompt for a password.

# Note that the default vsftpd pam config also checks /etc/vsftpd/ftpusers

# for users that are denied.

root

...

[root@localhost ~]# cat /etc/vsftpd/ftpusers

# Users that are not allowed to login via ftp

root

...

去掉root,或者选择ftpusers和user_list文件中不存在的一个普通用户

[root@localhost ~]# sed -i "s/root/ /" /etc/vsftpd/ftpusers

[root@localhost ~]# sed -i "s/root/ /" /etc/vsftpd/user_list  

主配置文件中userlist_deny的参数值改成NO,那么user_list列表就变成了强制白名单。它的功能与之前完全相反,只允许列表内的用户访问,拒绝其他人的访问。在采用本地用户模式登录FTP服务器后,默认访问的是该用户的家目录,而且该目录的默认所有者、所属组都是该用户自己,因此不存在写入权限不足的情况(selinux配置问题之前的已经处理了,没处理的可以看一下getsebool -a | grep ftp)。

[root@localhost ~]# ftp 192.168.227.10

Connected to 192.168.227.10 (192.168.227.10).

220 (vsFTPd 3.0.3)

Name (192.168.227.10:root): root

331 Please specify the password.

Password:

230 Login successful.

Remote system type is UNIX.

Using binary mode to transfer files.

ftp> mkdir files

257 "/root/files" created

ftp> rename files database

350 Ready for RNTO.

250 Rename successful.

ftp> rmdir database

250 Remove directory operation successful.

ftp> exit

221 Goodbye.

11.2.3 虚拟用户模式

虚拟用户模式是专门创建出一个账号来登录FTP传输服务的,而且这个账号不能用于以SSH方式登录服务器。

第1步:创建用于进行FTP认证的用户数据库文件,其中奇数行为账户名,偶数行为密码。

[root@localhost ~]# cd /etc/vsftpd/

[root@localhost vsftpd]# vim vuser.list

weihongbin

123

weihongbin1

123

由于明文信息既不安全,也不符合让vsftpd服务程序直接加载的格式,因此需要使用db_load命令用哈希(hash)算法将原始的明文信息文件转换成数据库文件,并且降低数据库文件的权限,然后再把原始的明文信息文件删除。

[root@localhost vsftpd]# db_load -T -t hash -f vuser.list vuser.db

[root@localhost vsftpd]# chmod 600 vuser.db

[root@localhost vsftpd]# rm -f vuser.list

第2步:创建vsftpd服务程序用于存储文件的根目录以及用于虚拟用户映射的系统本地用户。创建vsftpd服务程序用于存储文件的根目录以及用于虚拟用户映射的系统本地用户。

[root@localhost vsftpd]# useradd -d /var/ftproot -s /sbin/nologin virtual

[root@localhost vsftpd]# ls -ld /var/ftproot/

drwx------. 3 virtual virtual 78 Dec 20 19:54 /var/ftproot/

[root@localhost vsftpd]# chmod -Rf 755 /var/ftproot/

第3步:建立用于支持虚拟用户的PAM文件。

PAM(可插拔认证模块)是一种认证机制,通过一些动态链接库和统一的API把系统提供的服务与认证方式分开,使得系统管理员可以根据需求灵活调整服务程序的不同认证方式。

PAM是一组安全机制的模块,系统管理员可以用来轻易地调整服务程序的认证方式,而不必对应用程序进行任何修改。PAM采取了分层设计(应用程序层、应用接口层、鉴别模块层)

1703130969014.jpg

新建一个用于虚拟用户认证的PAM文件vsftpd.vu,其中PAM文件内的“db=”参数为使用db_load命令生成的账户密码数据库文件的路径,但不用写数据库文件的后缀:

[root@localhost vsftpd]# vim /etc/pam.d/vsftpd.vu

auth       required     pam_userdb.so db=/etc/vsftpd/vuser

account    required     pam_userdb.so db=/etc/vsftpd/vuser

第4步在vsftpd服务程序的主配置文件中通过pam_service_name参数将PAM认证文件的名称修改为vsftpd.vu。PAM作为应用程序层与鉴别模块层的连接纽带,可以让应用程序根据需求灵活地在自身插入所需的鉴别功能模块。当应用程序需要PAM认证时,则需要在应用程序中定义负责认证的PAM配置文件,实现所需的认证功能。

在vsftpd服务程序的主配置文件中默认就带有参数pam_service_name=vsftpd,表示登录FTP服务器时是根据/etc/pam.d/vsftpd文件进行安全认证的。现在我们要做的就是把vsftpd主配置文件中原有的PAM认证文件vsftpd修改为新建的vsftpd.vu文件即可。

利用PAM文件进行认证时使用参数及作用

参数 作用
anonymous_enable=NO 禁止匿名开放模式
local_enable=YES 允许本地用户模式
guest_enable=YES 开启虚拟用户模式
guest_username=virtual 指定虚拟用户账户
pam_service_name=vsftpd.vu 指定PAM文件
allow_writeable_chroot=YES 允许对禁锢的FTP根目录执行写入操作,而且不拒绝用户的登录请求

配置本地用户的参数(全部直接复制进去,一定要检查一下,别有错的)

[root@localhost vsftpd]# vim /etc/vsftpd/vsftpd.conf

anonymous_enable=NO

local_enable=YES

write_enable=YES

guest_enable=YES

guest_username=virtual

allow_writeable_chroot=YES

local_umask=022

dirmessage_enable=YES

xferlog_enable=YES

connect_from_port_20=YES

xferlog_std_format=YES

listen=NO

listen_ipv6=YES

pam_service_name=vsftpd.vu

userlist_enable=YES

第5步:为虚拟用户设置不同的权限。通过vsftpd服务程序来实现。只需新建一个目录,在里面分别创建两个以weihongbin和weihongbin1命名的文件,其中在名为weihongbin的文件中写入允许的相关权限(使用匿名用户的参数上传、创建、修改、查看、删除文件,weihongbin1仅查看):

[root@localhost vsftpd]# mkdir /etc/vsftpd/vusers_dir/

[root@localhost vsftpd]# cd /etc/vsftpd/vusers_dir/

[root@localhost vusers_dir]# touch weihongbin

[root@localhost vusers_dir]# vim weihongbin1

anon_upload_enable=YES

anon_mkdir_write_enable=YES

anon_other_write_enable=YES

修改配置文件,加入地址(加粗部分添加地址)重启ftp服务:

[root@localhost vsftpd]# vim /etc/vsftpd/vsftpd.conf

anonymous_enable=NO

local_enable=YES

write_enable=YES

guest_enable=YES

guest_username=virtual

allow_writeable_chroot=YES

local_umask=022

dirmessage_enable=YES

xferlog_enable=YES

connect_from_port_20=YES

xferlog_std_format=YES

listen=NO

listen_ipv6=YES

pam_service_name=vsftpd.vu

userlist_enable=YES

user_config_dir=/etc/vsftpd/vusers_dir

[root@localhost vsftpd]# systemctl restart vsftpd

第6步设置SELinux域允许策略

[root@localhost vsftpd]# getsebool -a | grep ftp

如果ftpd_full_access --> on则不用改,否则执行

[root@localhost vsftpd]# setsebool -P ftpd_full_access=on

对比一下区别

[root@localhost vusers_dir]# ftp 192.168.227.10

Connected to 192.168.227.10 (192.168.227.10).

220 (vsFTPd 3.0.3)

Name (192.168.227.10:root): weihongbin

331 Please specify the password.

Password:输入密码

230 Login successful.

Remote system type is UNIX.

Using binary mode to transfer files.

ftp> mkdir files

550 Permission denied.

ftp> exit

221 Goodbye.

[root@localhost vusers_dir]# ftp 192.168.227.10

Connected to 192.168.227.10 (192.168.227.10).

220 (vsFTPd 3.0.3)

Name (192.168.227.10:root): weihongbin1

331 Please specify the password.

Password:输入密码

230 Login successful.

Remote system type is UNIX.

Using binary mode to transfer files.

ftp> mkdir files

257 "/files" created

ftp> rename files database

350 Ready for RNTO.

250 Rename successful.

ftp> rmdir database

250 Remove directory operation successful.

ftp> exit

vsftpd服务程序登陆后所在目录

登录方式 默认目录
匿名公开 /var/ftp
本地用户 该用户的家目录
虚拟用户 对应映射用户的家目录

11.3 TFTP简单文件传输协议

简单文件传输协议(Trivial File Transfer Protocol,TFTP)是一种基于UDP协议在客户端和服务器之间进行简单文件传输的协议。简化版FTP,TFTP在传输文件时采用的是UDP协议,占用的端口号为69

tftp-server是服务程序,tftp是用于连接测试的客户端工具,xinetd是管理服务

[root@localhost vusers_dir]# dnf install tftp-server tftp xinetd -y

TFTP服务是使用xinetd服务程序来管理的。xinetd服务可以用来管理多种轻量级的网络服务,而且具有强大的日志功能。它专门用于控制那些比较小的应用程序的开启与关闭,在RHEL 8系统中,tftp所对应的配置文件默认不存在,需要用户根据示例文件(/usr/share/doc/xinetd/sample.conf)自行创建

[root@localhost vusers_dir]# vim /etc/xinetd.d/tftp

service tftp

{

       socket_type             = dgram

       protocol                = udp

       wait                    = yes

       user                    = root

       server                  = /usr/sbin/in.tftpd

       server_args             = -s /var/lib/tftpboot

       disable                 = no

       per_source              = 11

       cps                     = 100 2

       flags                   = IPv4

}

重启xinetd服务并将它添加到系统的开机启动项中,以确保TFTP服务在系统重启后依然处于运行状态。考虑到有些系统的防火墙默认没有允许UDP协议的69端口,因此需要手动将该端口号加入到防火墙的允许策略中:

[root@localhost vusers_dir]# systemctl restart tftp

[root@localhost vusers_dir]# systemctl enable tftp

Created symlink /etc/systemd/system/sockets.target.wants/tftp.socket → /usr/lib/systemd/system/tftp.socket.

[root@localhost vusers_dir]# systemctl restart xinetd

[root@localhost vusers_dir]# systemctl enable xinetd

[root@localhost vusers_dir]# firewall-cmd --zone=public --permanent --add-port=69/udp

success

[root@localhost vusers_dir]# firewall-cmd --reload

success

TFTP的根目录为/var/lib/tftpboot。可以使用刚才安装好的tftp命令尝试访问其中的文件

tftp命令中可用参数及作用

参数 作用
? 帮助信息
put 上传文件
get 下载文件
verbose 显示详细的处理信息
status 显示当前的状态信息
binary 使用二进制进行传输
ascii 使用ASCII码进行传输
timeout 设置重传的超时时间
quit 退出

带入文件并验证tftp

[root@localhost vusers_dir]# echo "weihongbin" > /var/lib/tftpboot/readme.txt

[root@localhost vusers_dir]# tftp 192.168.227.10

tftp> get readme.txt

tftp> quit

[root@localhost vusers_dir]# cat readme.txt  

weihongbin

最后讲一下哈,目前我们都用XFTP进行传输,这个也比较方便,就嵌套再xshell里边,我们从虚拟机往宿主机传输东西不再那么繁琐了,当然操作端用不了xshell的就当我没说了

image.png

二、巩固练习

1.简述FTP协议的功能作用以及所占用的端口号。

答:FTP是一种在互联网中进行文件传输的协议,默认使用20、21号端口,其中端口20用于进行数据传输,端口21用于接受客户端发起的相关FTP命令与参数。

2.vsftpd服务程序提供的3种用户认证模式各自有什么特点?

答:匿名开放模式是任何人都可以无须密码认证即可直接登录FTP服务器的验证方式;本地用户模式是通过系统本地的账户密码信息登录FTP服务器的认证方式;虚拟用户模式是通过创建独立的FTP用户数据库文件来进行认证并登录FTP服务器的认证方式,相较来说它也是最安全的认证模式。

3.使用匿名开放模式登录到一台用vsftpd服务程序部署的FTP服务器上时,默认的FTP根目录是什么?

答:使用匿名开放模式登录后的FTP根目录是/var/ftp目录,该目录内默认还会有一个名为pub的子目录。

4.简述PAM的功能作用。

答:PAM是一组安全机制的模块(插件),系统管理员可以用来轻易地调整服务程序的认证方式,而不必对应用程序进行过多修改。

5.使用虚拟用户模式登录FTP服务器的所有用户的权限都是一样的吗?

答:不一定,可以通过分别定义用户权限文件来为每一位用户设置不同的权限,一定要在配置文件声明地址。

6.TFTP协议与FTP协议有什么不同?

答:TFTP协议提供不复杂、开销不大的文件传输服务(FTP简化版)

三、跋文

如果想上手操作的同学们可以通过阿里云ecs服务器免费试用参与或低价购买专属于自己的服务器入口如下

入口一:新老同学免费试用

入口二:上云第一站

入口三:学生版超低价云服务器

入口四:云服务器专享特惠版

入口五:云服务器特惠1.5折起

入口七:阿里云最新活动中心

入口八:中小企业权益满减礼包

说明:最后的链接只是想方便大家免费试用产品和找到最佳优惠政策。

学习是一件需要投入的事情,无论是精力、金钱、时间,每天花费1小时,坚持一年,你也能成为行业里的大牛。


目录
相关文章
|
5天前
|
安全 Linux 开发工具
Linux中可引起文件时间戳改变的相关命令
【4月更文挑战第12天】Linux中可引起文件时间戳改变的相关命令
12 0
|
7天前
|
存储 关系型数据库 MySQL
Linux服务详解
Linux服务详解
21 0
|
7天前
|
Linux Shell 开发工具
Linux文件常用操作
Linux文件常用操作(几乎覆盖所有日常使用)
69 0
|
8天前
|
网络协议 Ubuntu Linux
Linux 下 TFTP 服务搭建及 U-Boot 中使用 tftp 命令实现文件下载
Linux 下 TFTP 服务搭建及 U-Boot 中使用 tftp 命令实现文件下载
|
8天前
|
Linux 内存技术 Perl
【ZYNQ】制作从 QSPI Flash 启动 Linux 的启动文件
【ZYNQ】制作从 QSPI Flash 启动 Linux 的启动文件
|
14天前
|
Linux
linux 超过4个G的文件传不上去的解决办法
linux 超过4个G的文件传不上去的解决办法
9 0
|
14天前
|
Linux 索引
linux 文件查找 和文件管理常用命令
linux 文件查找 和文件管理常用命令
21 0
|
3月前
|
Linux
百度搜索:蓝易云【Linux中如何对文件进行压缩和解压缩?】
这些是在Linux中进行文件压缩和解压缩的常见方法。根据您的需求和具体情况,可能会使用其他压缩工具和选项。您可以通过查阅相应命令的帮助文档来获取更多详细信息。
53 1
|
4月前
|
NoSQL Java Linux
Linux常用命令(文件目录操作、拷贝移动、打包压缩、文本编辑、查找)
Linux常用命令(文件目录操作、拷贝移动、打包压缩、文本编辑、查找)
|
4月前
|
算法 Java Linux
Linux下文件增删改查定位压缩操作与权限所属用户
Linux下文件增删改查定位压缩操作与权限所属用户
41 0