出于工作需要,经常需要在Ubuntu电脑上访问Windows主机的共享目录,网上有很多教程,不过,大多满足不了我的需求。
现在记录一下linux电脑访问windows共享文件夹的方式。
环境:
windown电脑:
主机IP: 200.200.72.222
共享文件夹:整个 H 盘(设置为共享,共享权限设置为 允许读写)
用户名:user
密码:password
Ubuntu电脑:
主机IP: 200.200.72.111
挂载文件夹: ~/windows/win7_h
方式一:使用Samba 从Linux上访问Windows共享出来的目录
1. 确保linux电脑已经安装smbclient smbfs
sudo apt-get install smbclient smbfs
2. 安装完smb之后,在文件导航栏输入 远程windows共享目录路径(CTRL+L ),就可以在ubuntu文件管理系统中访问windows共享目录了。
使用这种方式,可以在该目录下面直接访问windows文件夹,并且可以直接读写,不需要root权限。
使用smb访问windows共享目录,该共享目录默认是挂载在 ~/.gvfs 目录下面的,如果用户需要在terminal终端中 操作 该共享目录,比如该H盘,就可以直接使用命令进入这个相应目录
~/.gvfs/h on 200.200.72.222
方式二:将windows共享目录挂载到ubuntu本地目录进行访问
1. 首先创建挂载目录(如不存在)~/windows/win7_h
2. 将windows共享目录挂载到本地~/windows/win7_h目录,网上大多数介绍的方式是:
sudo mount -t cifs -o username=user,password=password //200.200.72.222/h /home/lzr/win7_h
这种方式是可以达到访问共享目录的目的的,不过,缺点是 普通用户,只能读,不能写。如果对远程共享目录有写操作,比如创建新的文件或文件夹,就需要切换到root权限(直观上可以看到每个文件图标都有一把锁)。
由于工作过程中经常需要在unbuntu和windown主机是交互数据,因此这种非人性化限制,表示接受不了。网上继续搜索了好久,后来找到一种方法,可以解决这种缺点。
sudo mount -t cifs -o username=user,password=password,uid=1000,gid=1000 //200.200.72.222/h /home/lzr/win7_h
和上面的挂载方式不一样的,该方式在挂载过程中设置uid和pid为本机使用者的uid和gid, 尝试了一下,确实可以解决普通用户不能写的问题,之前文件图标中那把锁也不见了。
延伸:
问题一:那么,如何查看自己的UID和PID呢?
方法:cat /etc/passwd |grep user (user为你的用户名), 比如我的用户名是uuu,下面的两个1000便分别是我的UID和PID
uuu:x:1000:1000:uuu,,,:/home/uuu:/bin/bash
问题二:如果想要开机就自动将windows共享目录挂载到ubuntu本地目录呢,该怎么做?
此种情况,可以直接修改 /etc/fstab. 在fstab文件中,添加对远程共享目录的挂载操作,具体做法是在fstab文件中添加以下代码:
//200.200.72.222/H /home/user/windows_share/win7_h cifs defaults,uid=1000,gid=1000,username=user,password=password
注意:共享磁盘或文件夹不宜太大,毕竟是通过网络传输。如果Windows共享目录太大,有可能导致Ubuntu本地目录这边响应太慢。