我在 Windows 文件服务器上获得了一个帐户。(对我来说)非常奇怪的情况是
smbclient,更改到(深层)子目录或显示其内容/proc/mounts)但我无法更改为相同的路径或列出其内容。我明白了No such file or directory。我对较低级别的子目录既没有“显示内容”也没有“更改为”权限。这不应该是一个问题,它不是为了smbclient.
Windows 管理员已授予我的用户额外权限,以便我现在可以查看要点的内容。现在我也可以通过挂载到达更深层次的子目录。
我们尚未确定要在当前配置中工作所需的最少 Windows 权限集。但是,无论如何,问题必须出在 Linux 端。
smbclient和mount.cifs访问 Windows 共享的方式有什么区别?mount.cifs表现得像smbclient?我让 Windows 管理员重置了共享权限,以便我可以测试答案中的建议。不幸的是,问题消失了。和以前一样,我看不到共享的内容,但现在挂载可以访问深层子目录。很奇怪。
评论@intika:我打算为你的回答提供额外的赏金,但在我这样做的时候你出于某种原因删除了你的回答......
服务器 2016,SMB 3.1.1
4.5.16;不是域的成员
/etc/fstab: //fs-p01.dnsdomain/Data /data cifs credentials=/root/fs-p01.credentials 0 0smbclient //fs-p01.dnsdomain/Data -U username -W windowsdomain我只是意识到windowsdomain在smbclient命令中是不完整的。可能不相关,因为这有效。它只是name代替name.local. 但是,这是命令之间配置的差异。不幸的是,我无法检查是否mount可以使用错误的域,因为我无法将 Windows 服务器上的权限更改回其原始设置。我必须等待 Windows …
从Arch Linux Wiki 条目中收集,我认为是从我的 Arch Linux 4.20.6 通过 SMB 访问 Windows 共享驱动器的最小设置:
sudo pacman -Sy sambasudo echo "logging = systemd" >> /etc/samba/smb.conf因为smb服务需要这个配置文件,否则它会因错误而崩溃:
Job for smb.service failed because the control process exited with error code.
See "systemctl status smb.service" and "journalctl -xe" for details.
Run Code Online (Sandbox Code Playgroud)sudo systemctl start smb假设远程 Windows 机器在172.16.17.52,我可以列出共享名称
smbclient -L 172.16.17.52 -U MyUserName%MyPassword -W OurWindowsDomain
Run Code Online (Sandbox Code Playgroud)
其中有一个“磁盘”类型的服务OurRemoteDirectory,我想访问它的共享名,即从它传输文件和向它传输文件。
希望能够OurRemoteDirectory在共享驱动器上访问,我发出
smbclient 172.16.17.52/OurRemoteDirectory -U MyUserName%MyPassword -W OurWindowsDomain
Run Code Online (Sandbox Code Playgroud)
但这产生了此错误消息:
Unable to …Run Code Online (Sandbox Code Playgroud) 我正在尝试使用 samba 传输文件。我启动了一个 smbserver,但无法连接到它。
命令:smbclient -L //ip地址/temp
错误:“协议协商失败:NT_STATUS_NOT_SUPPORTED”
我正在尝试在 bash 脚本中使用 smbclient 在远程 Windows 服务器上创建一个目录。
虽然这有效:
smbclient -U "DOMAIN/$username" "//remoteserver/folder with spaces" --directory "Another folder with spaces/" -c "mkdir /newfolder/"
Run Code Online (Sandbox Code Playgroud)
这不会:
smbclient -U "DOMAIN/$username" "//remoteserver/folder with spaces" --directory "Another folder with spaces/" -c "mkdir /folder to create with spaces/"
Run Code Online (Sandbox Code Playgroud)
而是创建了一个简单地称为“文件夹”的文件夹。我尝试了许多变体,如下所示:
"mkdir /folder\ to\ create\ with\ spaces/"
"mkdir '/folder to create with spaces/'"
'mkdir '/folder to create with spaces/''
Run Code Online (Sandbox Code Playgroud)
但似乎无法找到神奇的组合。