我如何在命令行中导航到我在Nautilus上挂载的samba位置?

请注意:我在Linux上只有两周的经验。我在互联网上找到了很多关于这个问题的答案,尝试了很多方法,但都失败了。因此,我敢再次询问,希望这里的某个人能简单地解释一下 :)
前提条件:
在我的机构中,我们有一个Samba服务器。在Windows中,通过访问 `\\xyz.220.131.233\` 并输入登录名 `abc` 和密码 `def` 来访问它。
在Ubuntu中,我可以使用Nautilus做完全相同的操作,按下Ctrl+L并输入`smb://xyz.220.131.233/`,然后它会要求登录和密码并连接成功。我甚至可以将文件夹从这里拖到“位置”并创建远程位置的快捷方式。
到目前为止一切正常。我刚刚安装了Matlab,并且想要打开这个远程位置。尝试使用 `cd smb://xyz.220.131.233/` 返回以下错误信息:
无法进入 smb://xyz.220.131.233(名称不存在或不是目录)。
一个我组里的Mac用户告诉我,我首先要挂载这个位置,但他不知道如何操作。
这是真的吗?我应该怎么做?

类似于Debian的问答(Q/A)链接 - Mike T
9个回答

在大多数情况下:
$XDG_RUNTIME_DIR/gvfs

14.04:

/run/user/$(id -u)/gvfs

12.10:

/run/user/<username>/gvfs

12.04:

自12.04版本以来,已挂载的Samba共享文件夹为:
~/.cache/gvfs

11.10及更早版本

你可以学习如何挂载 - 这肯定会起作用。但我认为这对你来说是一个更简单的解决方案:Nautilus将SMB分区挂载在~/.gvfs(其中~/表示/home/user_name/ - 例如:/home/desgua/.gvfs)。 你只需要导航到那里:

cd ~/.gvfs

太棒了!Linux拥有令人难以置信的功能!不过,我想知道学习这些细节的方法是什么呢...谢谢! - texnic
最新的Ubuntu似乎将挂载点放在~/.cache/gvfs/目录下。 - ImaginaryRobots
在我的系统上(Ubuntu Quantal),它被挂载在/run/user/<username>/gvfs目录下。 - krlmlr
16为什么每个版本都要改变它呢? - waspinator
1我使用的是12.04版本,它被挂载到~/.gvfs目录下。 - T0xicCode
我觉得在更新之后,位置已经改变了。 - desgua
214.04和12.10是一样的。在我的系统中,用户被表示为数字而不是名称,就像/run/user/1000/gvfs/smb-share:server=NAS,share=MyShareFolder这样。 - TiloBunt
2$XDG_RUNTIME_DIR == /run/user/$(id -u):在(14.04)上。 - Tom
有趣的是,这些位置中没有一个包含共享文件。它们难道存在于梦幻岛吗?有没有办法确定实际的共享路径,而不仅仅是看到这里提到的默认路径列表? - Nuzzolilo

另一个选择是,在没有直接将目录挂载在Nautilus中的情况下,可以通过命令行挂载位置。
然而,要挂载Samba卷,您必须具备CIFS支持。
sudo apt-get install cifs-utils

从这里开始,您可以选择要挂载位置的选项。在这方面有两种“标准”。如果您希望该位置显示在“位置”菜单中,您应该将其挂载在/media目录下。否则,您应该将其挂载在/mnt目录下(只是为了遵循已挂载卷的常见命名空间。将目录挂载在/home/$user/mount/someshare中也没有问题)。

在“位置”菜单中显示的安装位置示例

假设/media/myshare已存在,您可以通过执行以下命令来实现此目标:

sudo mount -t cifs -o user=abc,password=def //xyz.220.131.233 /media/myshare

附注

你可以通过将以下字符串附加到你的/etc/fstab配置中来自动完成这个操作:

//xyz.220.131.233 /media/SambaMount cifs username=abc,password=def,rw,user,noauto 0 0

请注意noauto标志,这将阻止卷在启动时被挂载,因此当您不再在工作场所时,它不会在启动过程中尝试轮询和挂载该共享而导致系统停顿。

很抱歉没能及时回复,我被一些紧急工作分散了注意力,不得不暂时切换回Windows。这个建议似乎不起作用:我遇到了一个“重试使用大写共享名称。挂载错误(6):没有此设备或地址”的错误。类似的情况在https://bugzilla.redhat.com/show_bug.cgi?id=195264中有描述。 - texnic
1我意识到那可能是我的错误。我应该挂载//xyz.220.131.233/foldername而不是整个服务器。纠正了这个问题之后,我不再遇到错误,并且可以在Nautilus的“Places”中看到/myshare文件夹。然而,当尝试浏览它时,出现'无法显示文件夹内容。您没有足够的权限查看“myshare”的内容'的提示。怎么回事? - texnic
1检查您是否具有访问该资源的权限,包括远程系统上使用的用户(在挂载字符串中)以及用于在本地机器上创建挂载的用户账户。 - lazyPower
啊哈,慢慢进展 :) 如果我用sudo启动Nautilus,我可以浏览/myshare位置。现在我该如何以普通用户(texnic)的方式挂载它?据我所知,我可以在不使用sudo启动的Nautilus中访问远程位置,因为我可以浏览到smb://xyz.220.131.233/foldername。另一方面,为什么我尝试执行'cd /media/myshare'时会出现“权限被拒绝”的错误,同时对于'sudo cd /media/myshare'却显示“找不到命令”呢? - texnic
你需要在挂载选项中添加用户标志,可以通过fstab或在发出的挂载命令中进行设置。例如:-o user - lazyPower
读完了 http://www.tuxfiles.org/linuxhelp/fstab.html,我也是这么想的,但似乎并不必要。请看下面我的回答。 - texnic
错误:smb://computer/dev 上的文件系统类型错误,选项错误,超级块错误, 缺少代码页或辅助程序,或其他错误 (对于几个文件系统(例如nfs,cifs),您可能需要一个/sbin/mount.<type> 辅助程序) - Nuzzolilo

在Ubuntu 16.04和VLC 2.2.2中; 选择“媒体 > 打开目录”,然后导航到“/run/user/1000/gvfs/” << ID号码(1000)可能因您的系统而异。 在这里,您可以看到共享文件夹的名称,并选择您想要添加到播放列表中的文件夹(参见下图)。

vlc add dierctory


所以,不确定这是否是真正的答案(如果有疑问或自己检查过,请评论),但在与另一位Linux同事一起努力后,我意识到我实际上并不在系统的用户组中(nano /etc/group)。在将自己添加到该组中(sudo nano /etc/group,将我的名字添加到users行)之后,我现在能够访问远程目录。我的/etc/fstab文件有以下几行:
//xxx.220.131.233/user  /mnt/rua_user  cifs  username=abc,password=def 0 1
//xxx.220.131.233/all   /mnt/rua_all   cifs  username=abc,password=def 0 1

文件夹的权限如下(ls -lh /mnt):
drwxrwx---  8 1016 users 0 2011-03-08 11:14 rua_all
drwxrwx--- 25 1016 users 0 2011-05-25 18:21 rua_user

12.10那天,你可以在以下地点找到:
/run/user/USERNAME/gvfs/

在Ubuntu 12.04上,我正在运行:
~/.gvfs/[SHARENAME]

~/.cache/ 只包含一个名为 gvfs-burn 的文件夹。



ln -s "/run/user/1000/gvfs/smb-share:server=192.168.1.1,share=Name_server/Path_Directory_source_in/Path_file.pdf" /Path_directory_source_out/Path_file.pdf

这是我在Ubuntu终端中创建文件链接的示例。
使用双引号 "" 来转义特殊字符,如空格。

在一些最新的Ubuntu版本(例如13.XX,14.XX),你需要前往
/run/user/(USERID)/gvfs/

找到挂载位置。这里的(UID)是账户的UID,可以通过命令找到。
id