SAMBA FTP HTTP 共享文件最简单配置
[toc]
共享文件给别人的时候使用微信之类的东西需要上传再下载,在同个局域网内的时候这样做就比较慢了,这里总结几个在局域网内可以快速分享文件给其他人的方式。我个人长期使用linux作为主力的办公电脑,所以以下的各个环境均是在 linux 主机上实现。此次使用的版本为,ubuntu 20.04 lts
0x00 SAMBA
1.匿名账户
sudo apt-get install samba
# 安装 samba
mkdir ~/share
# 建立共享用的文件夹
chmod 777 ~/share
# 放开share的权限
sudo cp /etc/samba/smb.conf /etc/samba/smb.conf.bak
# 备份原始的配置文件
sudo vim /etc/samba/smb.conf
# 编辑配置文件,在配置文件的最后添加以下内容
[share]
#中括号里面是共享的名字,隨意写,后面用的时候smb://192.168.1.105/share
comment = File
# 共享描述
path = /home/hy/share
# 將要共享的文件夾的位置
public = yes
# 设置共享是否允许guest账户访问
browseable = yes
# 设置共享是否可浏览,如果no就表示隐藏,需要通过IP+共享名称进行访问
security = share
# 用户访问Samba Server不需要提供用户名和口令, 安全性能较低。
writable = yes
# 设置共享是否具有可权限
sudo systemctl restart smbd.service
# 重启 samba 服务,让新写的配置生效
2.分权限账户
useradd -s /sbin/nologin test
# 添加虚拟账户
smbpasswd -a test
# 把系统的虚拟用是 test 添加为samba的用户
pdbedit –L
# 查看samba用户
# 建立共享文件夹放开权限,备份配置文件与上面的一致。
sudo vim /etc/samba/smb.conf
# 编辑配置文件,在配置文件的最后添加以下内容
[share]
#中括号里面是共享的名字,隨意写,后面用的时候smb://192.168.1.105/share
comment = File
# 共享描述
path = /home/hy/share
# 將要共享的文件夾的位置
browseable = yes
# 设置共享是否可浏览,如果no就表示隐藏,需要通过IP+共享名称进行访问
security = user
# 用户访问Samba Server不需要提供用户名和口令, 安全性能较低。
writable = yes
# 设置共享是否具有可权限
0x01 FTP
1.匿名账户
由于ftp 的匿名账户的权限非常的有限,且只能上传部分内容故此不再尝试。早期版本的vsftp可以使用和samba类似的方式使用全匿名账户来实现所有功能,但是随着版本的更新权限方面越来越不方便。
2.分权限账户
这里采用虚拟账户的方式进行配置,这样是最灵活可用的。权限也能够得到很好的控制。先创建系统的用户,在把ftp的虚拟账户绑定到系统的账户上
- 准备工作
sudo apt-get install vsftpd
# ubuntu 下安装vsftpd,如果是centos 使用yum install vsftpd 安装
- 配置虚拟用户所需的文件
mkdir /etc/vsftpd
# 创建ubuntu下所需的文件夹,centos 这个不用
vim /etc/vsftpd/vir_ftpuser
hppp
123456
#创建虚拟用的用户名和密码,第一行写用户名,第二行密码, hppp 是用户名,123456是密码。多个账户的依次类推,多个账户的话一行用户名一行密码,一一对应的写
sudo apt install db-util
# 安装db—load的工具,在centos下 yum -y install libdb-utils用来生成虚拟用户的数据库
db_load -T -t hash -f /etc/vsftpd/vir_ftpuser /etc/vsftpd/vir_ftpuser.db
# 生成数据库文件
chmod 700 /etc/vsftpd/vir_ftpuser.db
# 更改权限否则会有问题
- 配置 vsftp 的 pam 认证部分
vim /etc/pam.d/vsftpd
# 用#注释掉所有的配置,然后写入下面两行
auth required pam_userdb.so db=/etc/vsftpd/vir_ftpuser
account required pam_userdb.so db=/etc/vsftpd/vir_ftpuser
- 添加系统的虚拟账户
mkdir /ftp_root
# 给虚拟用户创建一个家目录
useradd -d /ftp_root -s /sbin/nologin virtualftp
# 创建用户 virtualftp,所有的虚拟账户都会挂在这个账户下面
chown -R virtualftp:virtualftp /ftp_root
- 在vsftpd 中启用虚拟账户
vim /etc/vsftpd.conf
# centos 下是在 /etc/vsftpd/vsftpd.conf 在最后添加下面的内容,如有你之前改过一写配置项,请保持不要与下面的配置项冲突。
#启用虚拟账户
guest_enable=YES
#把虚拟账户映射到系统账户virtualftp
guest_username=virtualftp
#使用虚拟用户验证(PAM验证)
pam_service_name=vsftpd
#设置存放各虚拟用户配置文件的目录(此目录下与虚拟用户名相同的文件为他的配置文件)
user_config_dir=/etc/vsftpd/vsftpd_viruser
#启用chroot时,虚拟用户根目录允许写入
allow_writeable_chroot=YES
- 配置虚拟账户
mkdir /etc/vsftpd/vsftpd_viruser/
# 配置虚拟用户各自的配置文件(创建虚拟用户配置文件的存放目录)
vim /etc/vsftpd/vsftpd_viruser/hppp
# 上面写了那个虚拟账户这里就创建什么文件
# 允许写入
write_enable=YES
#允许浏览FTP目录和下载
anon_world_readable_only=NO
#允许虚拟用户上传文件
anon_upload_enable=YES
#允许虚拟用户创建目录
anon_mkdir_write_enable=YES
#允许虚拟用户执行其他操作(如改名、删除)
anon_other_write_enable=YES
#上传文件的掩码,如022时,上传目录权限为755,文件权限为644
anon_umask=022
#指定虚拟用户的虚拟目录(虚拟用户登录后的主目录)
local_root=/ftproot/admin/
- 创建 ftp 的虚拟账户的家目录
mkdir -p /ftproot/admin/
chown -R virtualftp:virtualftp /ftproot/admin/
systemctl restart vsftpd
# 重启vsftpd服务
systemctl enable vsftpd
# 开机自启vsftpd服务
0x02 HTTP 方式
HTTP 的方式适合分享,不适合上传,最简单就是用 python
1.python方式
python3 -m http.server 8080
# 在终端中打开需要共享的文件夹下,输入上面的命令,其他机器访问 http://分享主机的ip:8080 即可下载
# -m 模块
# http.server python3内置的http服务
# 8080 web的端口