SAMBA FTP HTTP 共享文件最简单配置

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的虚拟账户绑定到系统的账户上。

  1. 准备工作

    sudo apt-get install vsftpd
    # ubuntu 下安装vsftpd,如果是centos 使用yum install vsftpd 安装
  2. 配置虚拟用户所需的文件

    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
    # 更改权限否则会有问题
  3. 配置 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
  4. 添加系统的虚拟账户

    mkdir /ftp_root
    # 给虚拟用户创建一个家目录
    useradd -d /ftp_root -s /sbin/nologin virtualftp
    # 创建用户 virtualftp,所有的虚拟账户都会挂在这个账户下面
    chown -R virtualftp:virtualftp /ftp_root
  5. 在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
  6. 配置虚拟账户

    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/
  7. 创建 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的端口
上一篇
下一篇