SAMBA FTP HTTP 共享文件最简单配置
共享文件给别人的时候使用微信之类的东西需要上传再下载,在同个局域网内的时候这样做就比较慢了。这里总结几个在局域网内可以快速分享文件给其他人的方式。我个人长期使用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的匿名账户的权限非常的有限,且只能上传部分内容,故此不再尝试。早期版本的vsftpd可以使用和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的端口