现在,我知道 ServerFault 上有很多有关 samba 的问题(大约 1400 个),我至少浏览了其中的一半,但无法使用任何答案来解决我的问题。
我们正在一台新的空白机器上安装 CentOS 6.2 - 全新安装;它将作为网络服务器运行来托管 Asterisk。
我想配置机器,以便从我的 Windows 工作站对根目录(我的意思是“/”根目录)拥有完全的管理访问权限。
这样我就可以使用自己舒适的机器(和 Notepad++)来编辑所有配置文件。换句话说,我应该能够\\mylinux\etc\samba\
在 Windows 资源管理器中打开,然后拥有smb.conf
使用 Windows 文本编辑器进行编辑的完全权限。
我在 CentOS 4 上可以很好地使用它,但在 CentOS 6.2 上却无法使用它。在较旧的操作系统版本中,所有东西都有 GUI,但现在我需要学习和使用 CLI 来完成所有事情。我仍然使用 GUI 来做一些我还没有学会如何从 CLI 中做的事情,所以我仍然会在这里的笔记中引用 GUI。
现在您知道了我的问题和目标,以下是一些详细信息:
smb
正在运行、安装并设置为运行级别 35。nmb
正在运行并设置为运行级别 35。- 防火墙在 eth0 上完全打开并且
network
处于开启状态(我运行了此命令iptables -A INPUT -s 192.168.0.0/255.255.255.0 -j ACCEPT
:) - 我已将我自己在Linux机器上的用户帐户添加到该
root
组中。 - 该用户帐户具有与我的 Windows 计算机相同的用户名和密码。
- samba 配置为知道我的 Windows 工作组的名称
- 我可以很顺利地 ping
\\mylinux
通\\mywindows
,反之亦然。 - 如果我打开
Network
,\\mylinux
我会收到一条错误消息:“无法从服务器检索共享列表”,我发布了有关这里。 - 如果我做一个
net view
来自,那么它根本\\mywindows
看不到。\\mylinux
- samba 配置为共享根驱动器:
。
[root]
comment = Root Directory
path = /
valid users = @root all root group
invalid users = None
writeable = yes
browseable = yes
另外,在 中
/etc/samba/smbusers.conf
我也做了记录:myuser = myuser
现在,您可能会认为我此时可以访问 Linux 共享。但是,当我从 Windows 计算机尝试映射路径时\\mylinux\root\
,我收到一条错误消息,提示目标不存在。在我的旧 Linux 计算机上,我甚至可以浏览\\oldlinux\
并获取共享列表。我似乎无法复制该功能!
[编辑]
好的,我完全禁用了防火墙,现在我可以随时随地浏览文件了。现在剩下的就是编辑 smb.conf 等文件的权限。换句话说,我用来浏览文件的用户帐户(属于该组)root
也需要root
权限。我该如何获得它?
答案1
Samba 将您的访问权限映射到服务器上的 Unix 用户帐户,并强制执行该用户的正常权限。因此,这相当于授予 Unix 用户对这些文件的写访问权限。您要么需要实际成为用户root
(即充当具有写权限的文件所有者),要么需要属于具有文件组写权限的组。后者(略微)更可取,因此将自己添加到该root
组并更改文件权限以允许组写。(我假设您知道这样做的安全隐患。)
答案2
终于搞定了!这需要做两件事: - 禁用 selinux - 取消注释 smb.conf 中的以下行
username map = /etc/samba/smbusers
然后,在 smbusers.conf 中,我添加了root = myuser
运行命令:
smbpasswd -a myuser
smbpasswd -e myuser
service smb restart
现在我可以从我的 Windows 计算机连接到机器,浏览根目录中的文件,并使用我的 Windows 计算机上我最喜欢的文本编辑器编辑它们。
只是想给大家提个醒——我确实明白,我所执行的程序存在安全风险,但是我位于安全的防火墙路由器后面,并且只会在 LAN 内以这种方式管理机器。
对于CentOS7
在 CentOS 7 中,它默认拒绝 root 访问的 ntlm 身份验证 - 这意味着您无法使用 root 帐户连接 - 除非您将其添加到[global]
smb.conf 的部分:
ntlm auth = yes
如果你想要使用 smbusers 文件,请将其添加到 smb.conf 中的相同全局部分:
username map = /etc/samba/smbusers
然后您可以创建该文件并添加以下内容:
root = myusername