如何挂载 UNC 根目录?(SMB / CIFS)

如何挂载 UNC 根目录?(SMB / CIFS)

我遇到需要挂载 UNC 根目录(即“\”或“smb://”)的情况。我可以打开 nautilus 并转到“smb://”,但我需要实际执行一些操作,例如:使用标准 POSIX 文件系统 API 执行 readdir、mkdir、unlink、rmdir、open、read、write 等。是否有现成的软件可以让我执行这些操作?

我试过了mount -t cifs "//",但它给了我

安装错误:UNC 名称太短

我也尝试过mount -t cifs "smb://",但这让我

尚未实现挂载 cifs URL。尝试挂载 smb://

我尝试了所有旧的 smb 命令,但它们不再存在 - 我相信它们已移至 cifs。我还尝试了这些新奇的 gvfs / gio 东西,我猜想它是一个基于 gobject 的用户空间安装系统,但它给 gio mount smb://了我...

gio: smb:///: 位置已安装

... 挂载在哪里?我可以在 nautilus 中访问它,但我还是无法用它做任何事情。我以为它可能被挂载在 /run/user/1000/gvfs 上,但除非我使用命令专门挂载东西,否则 program-fuse-folder 似乎本身并没有做太多事情。

我甚至实际上不需要能够列出 smb:// 甚至 smb://server/,但我需要所有 smb://server/shares/ 可用,其功能与我使用 smb 或 gvfs 安装它们相同(例如列出、创建文件夹、删除内容、打开文件以及身份验证)。

为了进一步说明,所有应用程序都需要能够在所有 unc 路径上执行基本的文件系统 API 函数,至少在 gvfs 或 cifs 提供的范围内。例如,我应该能够:

cd /some/path/server1/share1/folder1
cat file1
mkdir newfolder2
cd ../existingfolder3
touch file2
cd /some/path/server2/share2
rmdir existingfolder4

...等等。如果可以的话,我会得到加分ls /some/path/server1

有很多 fuse 库,所以我考虑编写一个小脚本,在请求时自动挂载共享,然后只需将命令传递到挂载点,但我当然不想重新发明轮子,而且我也希望有比我有时间开发的任何东西更便携的东西。但如果这是最简单的方法,那么我可以开始编写一些代码,并将其发布在这里,或者在需要帮助时开始一个新问题。

谢谢你!

答案1

附注:每当地球上的某个人创建某台机器根目录的 smb/samba 共享时,天堂中的网络管理员就会失去他的翅膀。

我已经尝试过 mount -t cifs "//"

您的语法错误,不完整,并且您不能将服务器上的共享指定为“/”。

[1] 如果你确实想这样做,请进入服务器并创建“/”的共享,但请将共享命名为...我不知道...“root”怎么样

[2] 在客户端上创建一个挂载点来挂载共享 - 比如说 /home/agnes/servername

mkdir /home/agnes/servername

[3] 然后使用如下命令挂载:

sudo mount -t cifs //servername/root /home/agnes/servername -o some-list-of-options

它会完成你在原始帖子中想要它做的所有事情吗?我不知道。

我想你也可以采用老式的方法并使用 smbclient:

smbclient //servername/root

您将得到以下提示:

smb:>

如果你输入 help,你将看到可以使用的命令列表:

? allinfo altname 存档 备份 块
大小 取消 区分大小写 cd chmod
chown 关闭 del deltree dir
du echo 退出 获取 getfacl
geteas 硬链接 帮助 历史 iosize
lcd 链接 锁定 小写 ls
l 掩码 md mget mkdir
更多 mput 较新 通知 打开
posix posix_encrypt posix_open posix_mkdir
posix_rmdir posix_unlink posix_whoami 打印 提示
放置 pwd q 队列 退出
readlink rd 递归 reget 重命名
reput rm rmdir showacls setea
setmode scopy stat 符号链接 tar
tarmode 超时转换 解锁 卷
vuid wdel 登录 listconnect
showconnect tcon tdis tid 注销
..

答案2

据我了解 - 该smbtree命令将执行您想要的操作。

从其man smbtree-页

姓名
smbtree- 基于文本的 smb 网络浏览器

描述

该工具是 samba(7) 套件的一部分。

smbtree是一个文本模式的 SMB 浏览器程序。它类似于 Windows 计算机上的“网络邻居”。它会打印出一棵树,其中包含所有已知域、这些域中的服务器以及服务器上的共享。

答案3

我找到了...

它被称为smbnetfs

它完成了我在问题中所要求的所有事情,尽管对于列表和其他一些操作来说它确实很慢。

相关内容