现在,我知道 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 box 上将我自己的用户帐户添加到
root
组中。 - 该用户帐户与我的 Windows 计算机具有相同的用户名和密码。
- samba 配置为知道我的 Windows 工作组的名称
- 我可以正常 ping通
\\mylinux
,\\mywindows
反之亦然。 - 如果我在 中打开
Network
,\\mylinux
我会收到一条错误消息:“无法从服务器检索共享列表”,我在此处发布了该消息。 - 如果我做一个
net view
from\\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
权限。我怎么得到它?
Samba 将您的访问映射到服务器上的 Unix 用户帐户,并强制执行该用户的正常权限。因此,这与授予 Unix 用户对这些文件的写访问权相同。您要么需要实际成为
root
用户(即作为文件的所有者,具有写权限),要么您需要在一个对文件具有组写权限的组中。后者(稍微)更可取,因此将您自己添加到root
组中并更改文件权限以允许组写入。(我假设您知道这样做的安全隐患。)终于明白了!它做了两件事: - 禁用 selinux - 取消注释 smb.conf 中的行
然后,在 smbusers.conf 中,我添加了
root = myuser
运行命令:现在我可以从我的 windows 电脑连接到机器,浏览 root 中的文件,并在我的 windows 电脑上用我最喜欢的文本编辑器编辑它们。
仅供所有人注意 - 我确实理解我正在处理的程序存在安全风险,但我在安全的防火墙路由器后面,并且只会在 LAN 内以这种方式管理机器。
对于 CentOS7
在 CentOS 7 中,它默认拒绝对 root 访问的 ntlm 身份验证——这意味着你不能连接到 root 帐户——除非你将它添加到
[global]
smb.conf 的部分:如果您想使用 smbusers 文件,请将其添加到 smb.conf 中的同一全局部分:
然后你可以创建那个文件,并添加这个: