在Ubuntu上设置共享文件夹的方法主要有两种:使用Samba共享和使用NFS共享。
一、使用Samba共享
1.安装Samba服务器
在终端中运行以下命令安装Samba服务器:
sudo apt update
sudo apt install samba
2.创建共享文件夹
在终端中运行以下命令创建共享文件夹,并设置相应的权限:
sudo mkdir -p /home/sambashare
sudo chown -R sambashare:sambashare /home/sambashare
sudo chmod -R 777 /home/sambashare
3.创建Samba用户
在Ubuntu系统中,您可以创建一个本地用户账号,然后配置Samba使其仅能访问特定的共享文件夹samba
,而不能登录到系统本身。以下是如何实现这一目标的步骤:
3.1. 创建本地用户账号
首先,创建一个新的本地用户账号,这个账号将用于Samba共享的访问:
sudo adduser sambashare
或者:
# 仅文件夹共享账号,不允许登录系统
sudo useradd -d /home/ftp -s /sbin/nologin Tygmsamba
# 查看有哪些账号
cat /etc/passwd
在提示时,填写必要的信息。此用户不需要具有特殊权限,因为它仅用于文件共享。
3.2. 设置Samba密码
Windows 上输入的是 Samba 用户名和密码,而不是 Ubuntu 系统用户的密码。Samba 用户密码是通过以下命令单独设置的:sudo smbpasswd -a sambauser你在 Windows 上输入的用户名和密码应该与上面设置的一致。
接下来,为Samba服务为这个新用户设置密码:
sudo smbpasswd -a sambashare
在提示时,输入并确认密码。
4. 配置Samba共享
编辑Samba配置文件来设置共享参数
sudo nano /etc/samba/smb.conf
编辑Samba配置文件并添加以下内容:
[samba]
#描述信息
comment = samba
#共享文件夹路径
path = /home/sambashare
#允许访问该共享的用户,多个用户或者组中间用逗号隔开
valid users = sambashare
#read only = no
#该共享是否可以浏览,如果no则表示隐藏,需要通过"//ip/共享目录"进行访问
browsable = yes
#是否有写权限
writable = yes
#该共享资源是否可用
available = yes
其他配置:
public = yes # 表示是否允许匿名访问该共享目录
browsable = yes # 表示是否可以在 Window Explorer中显示该目录
create mask = 777 # 指明新建立的文件的属性
directory mask = 777 # 指明新建立的目录的属性
确保将path
指向正确的共享文件夹路径。如果您没有为用户sambashare
创建samba
文件夹,您需要先创建它:
sudo mkdir -p /home/sambashare/samba
sudo chown -R sambashare:sambashare /home/sambashare/samba
5. 限制用户登录权限
为了防止用户sambashare
登录系统,可以编辑/etc/passwd
文件来更改用户的登录shell为/bin/false
或/usr/sbin/nologin
:
sudo nano /etc/passwd
找到用户sambashare
的条目,将其最后一部分(默认是/bin/bash
)更改为/bin/false
或/usr/sbin/nologin
。看起来会像这样:
sambashare:x:1001:1001:sambashare,,,:/home/sambashare:/bin/false
或者:
sambashare:x:1001:1001:sambashare,,,:/home/sambashare:/usr/sbin/nologin
保存并关闭文件。
6.开放、修改端口
使用Samba服务时通常需要开放139
以下是修改端口号的步骤:
6.1. 打开Samba配置文件进行编辑
sudo nano /etc/samba/smb.conf
6.2. 修改端口
在配置文件中找到Globals
部分或相应章节,添加或修改以下两行来更改SMB服务的端口号:
smb ports = 39139
6.3. 防火墙开放端口
更新防火墙规则以开放新的端口号。如果你使用的是ufw
,可以使用以下命令:
sudo ufw allow 19139/tcp
请注意,更改默认端口可能会带来一些问题:
- 需要确保所有需要连接到Samba服务的客户端都配置为使用新的端口号。
- 其他网络设备或安全策略可能也需要更新以允许这些新的端口号。
6.4 查看samba服务使用的端口
netstat -tlnp |grep smb
使用非标准端口可以提高安全性,因为它们不如标准端口那样常见,这可能使得恶意扫描器不太可能发现你的Samba服务。然而,最佳的安全性实践还包括使用其他安全措施,如配置强密码、限制用户权限、使用加密以及定期更新软件。
7. 重启Samba服务
应用更改后,重启Samba服务:
sudo systemctl restart smbd
sudo systemctl restart nmbd
现在,用户sambashare
应该能够通过Samba访问samba
文件夹,但无法登录到系统。在客户端连接时,使用sambashare
作为用户名和之前设置的密码进行身份验证。
请注意,更改系统文件,如/etc/passwd
,可能会对您的系统安全造成风险,因此请确保您了解所做的更改,并仅在不违反系统安全策略的情况下进行
8. 在Windows下访问samba服务器
win10通过ip访问时似乎都是默认走445
--Port 139 (TCP) - 文件和打印共享 ; smbd (基于SMB(Server Message Block)协议,主要在局域网中使用,文件共享协议)
--Port 445 (TCP) - NetBIOS服务在windos 2000及以后版本使用此端口, (Common Internet File System,CIFS,它是SMB协议扩展到Internet后,实现Internet文件共享)。这是 Windows 系统当前主要使用的方式。
如果你只修改了 445 端口,Windows 系统默认会尝试通过修改后的端口进行通信。因为 Windows 更倾向于使用 445 端口,而不是 139,所以即使只修改 445 端口,Windows 应该能够正常工作。
8.1 方式一
映射服务器的19139端口到本地455端口。
由于windows访问远程文件夹时使用默认455端口,无法指定自定义端口,因此还需要在win端通过“映射该服务器的1939端口到本地455端口”的方式实现访问
# 添加
netsh interface portproxy add v4tov4 listenport=445 listenaddress=127.0.0.1 connectport=1399 connectaddress=SERVER_IP #SERVER_IP写自己服务器IP
# 删除端口转发命令:
netsh interface portproxy delete v4tov4 listenaddress=<Listen Address> listenport=<Listen Port>
参数解释:
-- <Listen Address>要删除的规则的监听地址
-- <Listen Port>要删除的规则的监听端口。
添加后可检查映射列表是否已存在
netsh interface portproxy show all
8.2 方式二
8.2.1. 修改 Samba 配置
你需要在 Samba 的配置文件 /etc/samba/smb.conf
中修改 445
端口为 11445
:
smb ports = 139 11445
这里你保留 139
端口并将 445
改为 11445
。
8.2.2. 配置防火墙
你需要确保防火墙允许新的 11445
端口通过,而不需要保留 445
端口:
8.2.3. **访问说明:
8.2.3.1 - Linux 客户端访问
在 Linux 系统上,访问 SMB 共享时需要指定新的端口号:
sudo mount -t cifs //服务器IP地址/apk /mnt -o username=sambauser,password=密码,port=11445
8.2.3.2- Windows 客户端访问
- Windows 文件资源管理器无法直接指定端口,因此可以通过 命令提示符 映射共享:
打开 **命令提示符 (cmd)**,然后运行:
net use Z: \\服务器IP地址\apk /user:sambauser 密码 /persistent:yes /port:11445
这将通过 11445
端口映射到 Windows 的 Z:
驱动器。
通过这些步骤,你可以成功修改端口并确保防火墙的配置与之匹配。
8.3 windows开启SMB文件共享
进入控制面板 > 程序 > 启用或关闭windows功能,勾选SMB文件共享支持
版权归原作者 O波V步 所有, 如有侵权,请联系我们删除。