解决Samba共享文件夹权限配置问题

小豆丁 7小时前 ⋅ 3 阅读
聊天记录
头像

luliang@luliang:~$ sudo cat /etc/samba/smb.conf | grep -A 10 "共享文件夹" [共享文件夹] path = /home/luliang/shared browseable = yes read only = no guest ok = yes

luliang@luliang:~$

头像

您的Samba配置基本正确,但缺少关键的权限映射参数,这会导致访问时权限验证失败。请按以下步骤修复:

1. 修改Samba配置,添加权限映射

BASH
# 备份原配置
sudo cp /etc/samba/smb.conf /etc/samba/smb.conf.backup

# 编辑配置文件
sudo nano /etc/samba/smb.conf

[共享文件夹] 部分添加以下参数:

INI
[共享文件夹]
   path = /home/luliang/shared
   browseable = yes
   read only = no
   guest ok = yes
   # 添加以下关键参数
   create mask = 0777
   directory mask = 0777
   force user = luliang
   force group = luliang

参数说明:

  • create mask = 0777:新创建的文件权限为777(所有用户可读可写可执行)
  • directory mask = 0777:新创建的目录权限为777
  • force user = luliang:强制所有访问者以luliang用户身份操作文件
  • force group = luliang:强制所有访问者以luliang组身份操作文件

2. 检查并设置文件夹权限

BASH
# 确保共享文件夹存在
mkdir -p /home/luliang/shared

# 设置文件夹权限(递归设置所有内容)
sudo chmod -R 777 /home/luliang/shared
sudo chown -R luliang:luliang /home/luliang/shared

# 验证权限
ls -ld /home/luliang/shared
# 应该显示:drwxrwxrwx  (权限为777)

3. 添加Samba用户(即使允许访客也建议添加)

BASH
# 为luliang用户设置Samba密码
sudo smbpasswd -a luliang
# 系统会提示输入密码,输入后确认

# 启用该用户
sudo smbpasswd -e luliang

4. 重启Samba服务并测试

BASH
# 重启服务使配置生效
sudo systemctl restart smbd
sudo systemctl restart nmbd

# 测试本地访问
smbclient -L localhost -U luliang
# 输入刚才设置的Samba密码

# 测试共享文件夹访问
smbclient //localhost/共享文件夹 -U luliang

5. 在Windows端重新连接

方法A:使用文件资源管理器

  1. Win + R,输入:\\172.28.140.244
  2. 或直接输入:\\172.28.140.244\共享文件夹
  3. 如果提示输入凭据:
    • 用户名:luliang
    • 密码:刚才设置的Samba密码

方法B:如果仍提示无权限,在Windows中运行:

POWERSHELL
# 清除旧的网络凭据
net use * /delete /y

# 重新连接
net use \\172.28.140.244\共享文件夹 /user:luliang
# 输入Samba密码

6. 快速诊断命令

运行以下命令检查所有配置:

BASH
echo "=== 诊断信息 ==="
echo "1. 文件夹权限: $(stat -c '%A %U:%G' /home/luliang/shared)"
echo "2. Samba配置:"
sudo testparm -s | grep -A 5 "共享文件夹"
echo "3. 服务状态:"
systemctl status smbd --no-pager | grep Active
echo "4. 监听端口:"
sudo ss -tlnp | grep -E ':445|:139'

7. 如果仍然不行,尝试简化配置

如果上述步骤后仍有问题,使用这个最小化配置:

BASH
sudo tee /etc/samba/smb.conf > /dev/null << 'EOF'
[global]
   workgroup = WORKGROUP
   server string = Samba Server
   security = user
   map to guest = Bad User

[共享文件夹]
   path = /home/luliang/shared
   browseable = yes
   read only = no
   guest ok = yes
   create mask = 0777
   directory mask = 0777
   force user = luliang
EOF

sudo systemctl restart smbd

关键检查点总结

  1. 配置文件:已添加 force user 和权限掩码
  2. 文件夹权限:设置为 777 (drwxrwxrwx)
  3. Samba用户:已添加 luliang 到Samba数据库
  4. 服务状态:smbd 服务正在运行
  5. Windows设置:可能需要启用"不安全的来宾登录"

完成以上步骤后,应该可以正常访问共享文件夹。如果还有问题,请提供 sudo testparm -s 的输出结果。

全部评论: 0

    我有话说: