inode客户端连接成功上不了网_Linux 上挂载 Samba(Windows & macOS 共享文件夹)的正确姿势...
一、操作环境
- 服务器 1:Windows 7 家庭版的 PC
- 服务器 2:macOS 10.12.4 的 MacBook Pro
- 客户端:CentOS 7.3.1611 已安装好
cifs-utils
软件包
二、查看服务器共享出来的资源
在 Linux 命令行界面中,必须手动指定共享出来的资源,不像 Windows 以及 macOS 可以自动列出。
2.1 smbclient 命令用法
smbclient -L <服务器IP或主机名> -U <用户名>
以 Windows 7 服务器为例,macOS 用法一样
2.2 举例
smbclient -L 192.168.100.2 -U zenandidi
Enter zenandidi's password: #输入密码,不回显
Domain=[WIN7] OS=[Windows 7 Home Basic 7601 Service Pack 1] Server=[Windows 7 Home Basic 6.1]
#共享点名称# #类型# #描述#
Sharename Type Comment
--------- ---- -------
ADMIN$ Disk 远程管理
C Disk
C$ Disk 默认共享
IPC$ IPC 远程 IPC
Connection to 192.168.100.2 failed (Error NT_STATUS_RESOURCE_NAME_NOT_FOUND)
NetBIOS over TCP disabled -- no workgroup available #可能会出现一些错误警告,不过可以列出的话就不用管
上面列出来的表格就是共享点信息,下面将连接 C
这个共享点。
2.3 解决错误
如果执行完上面的命令后出现 Server does not support EXTENDED_SECURITY but 'client use spnego = yes and 'client ntlmv2 auth = yes'
那么说明服务器不支持扩展性安全认证,通常出现在 Windows XP 这种古董身上,需要在 /etc/samba/smb.conf
文件前面加上下面两行:
client use spnego = yes
client ntlmv2 auth = no
三、挂载服务器共享资源
3.1 挂载命令的用法
mount -t cifs <共享点路径> <挂载点> -o username=<用户名>
或者
mount.cifs <共享点路径> <挂载点> -o username=<用户名>`
另外,Windows 和 macOS 的挂载姿势有点不一样,请注意区别。
(以下均使用 mount
命令)
3.2 挂载 Windows 的共享资源举例
mount -t cifs //192.168.100.2/C /mnt/smb -o username=zenandidi #如果共享点带空格,请在空格前加上 “ ”
Password for [email protected]//192.168.100.2/C: ****************** #输入密码
如果没显示任何错误,说明挂载成功。下面检查一下挂载点。
mount | grep cifs
//192.168.100.2/C on /mnt/smb type cifs (rw,relatime,vers=1.0,cache=strict,username=zenandidi,domain=WIN7,uid=0,noforceuid,gid=0,noforcegid,addr=192.168.100.2,file_mode=0755,dir_mode=0755,nounix,serverino,mapposix,rsize=61440,wsize=65536,echo_interval=60,actimeo=1)
ls /mnt/smb
. Intel Recovery
.. MSOCache $Recycle.Bin
AX MyDrivers ss
BaiduNetdiskDownload new_zxjt_v6 System Volume Information
dd PerfLogs Users
dd2 ProgramData Windows
Documents and Settings Program Files zd_pazq
.DS_Store Program Files (x86)
目录以及文件可以正常显示,说明挂载已成功。
3.3 挂载 macOS 的共享资源举例
如果使用以上方法挂载 macOS 上的共享资源,发现挂载点下一片空白。
mount -t cifs //192.168.100.3/Macintosh HD /mnt/smb -o username=zenandidi
Password for [email protected]//192.168.100.3/Macintosh HD: ******************
ls /mnt/smb/
#什么都没有啊
嗯,一定是哪里出了问题。用 journal -xe
看一下日志。
4月 25 16:35:42 CentOS kernel: CIFS VFS: Send error in QFSUnixInfo = -95
4月 25 16:35:42 CentOS kernel: CIFS VFS: server does not support POSIX extensions
4月 25 16:35:42 CentOS kernel: CIFS VFS: server does not support POSIX extensions
4月 25 16:35:59 CentOS kernel: CIFS VFS: Autodisabling the use of server inode numbers on //192.168.100.3/Macintosh HD. This server doesn't seem to support them properly. Hardlinks will not be recognized on this mount. Consider mounting with the "noserverino" option to silence this message.
果然是有问题,好像是说不支持硬链接什么的,可以加一个 noserverino
选项忽略错误。
查了下文档
noserverino
Client generates inode numbers itself rather than using the actual ones from the server.
意思大概是说加了这个选项之后客户端使用自己的 inode 号而不使用服务器提供的 inode 号。
毕竟 samba 这个协议的亲妈是 Windows,而 Windows 中的文件系统没有 inode 这个概念,来到 Unix 文件系统上多少还是有些水土不服的。
好吧,那就按照提示添加 noserverino
选项吧。
mount -t cifs //192.168.100.3/Macintosh HD /mnt/smb -o username=zenandidi,noserverino
Password for [email protected]//192.168.100.3/Macintosh HD: ******************
ls /mnt/smb/
Applications dev installer.failurerequests Network sbin Users Volumes
bin etc Library opt System usr
cores home net private tmp var
好了,挂载成功了!
四、总结
4.1 挂载 Windows samba 服务器的正确姿势
mount -t cifs <共享点路径> <挂载点> -o username=<用户名>
或
mount.cifs <共享点路径> <挂载点> -o username=<用户名>
4.2 挂载 macOS samba 服务器的正确姿势
mount -t cifs <共享点路径> <挂载点> -o username=<用户名>,noserverino
或
mount.cifs <共享点路径> <挂载点> -o username=<用户名>,noserverino
如果依然出错,可以按照日志的指引进行配置文件的更改,实在不行再上网求助。
4.3 开机自动挂载方法
在 /etc/fstab
末尾添加:
<共享点路径> <挂载点> cifs username=<用户名>,password=<密码> 0 0
这里不在赘述,选项也跟上面一样,就是把文件系统的类型改为 cifs 还有把密码输进里面。个人不建议修改这个文件,如果断网挂载失败的话,会进入救援模式,比较麻烦。我的做法是把挂载命令写进 /etc/rc.d/rc.loacl
文件中。
上一篇: 老婆大人逛街,苦了老公