如何在linux下网上邻居访问另一台机windows共享的目录,解答如下
在访问Windows共享资料之前,请确保Windows共享是可用的,这里就不再赘述该怎样设置Windows共享了,那可是另外一个课题。
Linux访问Windows共享或者Linux共享资料给Windows时,其实都是在使用一个叫做Samba的软件,这个软件已经使用多年,稳定性和可靠性得到了很好的验证,也是很多网络NAS常用的软件。
我们这里要讲的Linux需要用到的工具就是Samba软件中的一种,samba-client。
在尝试访问Windows共享之前,需要首先确认samba-client已经安装了。最简单的方式是命令行查询“rpm -qa | grep samba-client”,当然也可以使用“yum”工具查询, 如“yum info samba-client”或“yum list samba-client”之类的命令。
步骤阅读2如果samba-client没有安装,就需要使用命令“yum install samba-client”安装一下,yum会自动安装samba-client所需的相关依赖库,安装时选择Y就行了。
针对常见的Debian Linux发行版,如Ubuntu或CentOS,也可以使用“sudo apt-get install smbclient”和“sudo apt-get install smbfs”安装相应的共享访问工具。
步骤阅读3准备停当,就可以尝试访问Windows共享文件夹了。我们可以首先使用“smbclient -L //IP地址 -U 用户名”查看一下该用户共享权限下的共享情况。其中不带“$”的那个,就是我们可以访问的共享文件夹了,其中“-U”是用来指定查询共享权限的用户名的。
步骤阅读4Linux将共享文件夹也是当作磁盘资源对待的,因此需要使用mount工具将其挂载到本地文件空间才可以访问,这一点就像Windows常用的网络磁盘映射是一样的。
因此,首先我们需要创建一个挂载点,也就是在本地目录空间中创建一个挂载目录,如“mkdir -p /mnt/MYSHARE”。
挂载点创建之后,就可以使用mount命令挂载共享文件夹了,“mount -t cifs -o user=用户名称,password=共享密码,iocharset=utf8,codepage=cp936 //共享IP地址或NetBIOS名称/共享目录”,其中cifs使用Linux常用的网络文件类型,也可以使用smbfs,以系统可以识别为准,如Ubuntu常见命令就是“sudo mount -t smbfs -o user=用户名称,password=共享密码,iocharset=utf8,codepage=cp936 //共享IP地址或NetBIOS名称/共享目录”。“-o”表示挂载参数,常见的是需要提供共享的用户名和密码,另外需要注意的是iocharset和codepage,这两个参数是用来解决系统之间的字符编码转换的,如果出现乱码的情况,是需要调整这两个参数的,针对简体中文,使用utf8和cp936一般都可以解决问题,关于字符编码已经超出了本经验的范围。
挂载完成之后,就可以像使用本地文件目录一样访问Windows共享文件夹和文件了。
步骤阅读5当然,Linux也有图形化的资源管理器,挂载之后,资源管理器也可以正常访问的。进入Linux桌面,打开“我的电脑”。
步骤阅读6然后就可以像浏览本地文件一样,浏览共享的Windows文件夹和文件了,与命令行并没有太多的差异。
步骤阅读7Windows共享资料使用完毕之后,也可以将其使用umount命令卸载,卸载就很简单了,直接使用“umount /mnt/MYSHARE”就可以了,其中MYSHARE是就是我们前面创建的挂载点了。
如果以后不需要,也可以将挂载点删除的。
步骤阅读8挂载的Windows共享文件夹在Linux重启之后就会消失的,如果还要使用,是需要重新挂载的。
如果希望Linux开机自动挂载Windows共享文件夹,则需要将挂载命令添加到Linux的“/etc/fstab”,也就是将前述的命令参数按照fstab的要求添加到fstab里面,这里就不再展开了,详情参考fstab相关帮助即可。
Mac怎么读写NTFS格式?我们都知道NTFS 格式的 Windows 硬盘在Mac OS X系统下只能读取不能写入,这一问题一直困扰着很多新老Mac 用户,一般的的解决办法就是安装 NTFS 插件来让 OS X 支持 NTFS 格式硬盘的写入 *** 作。其实在 OS X 109 发布以后,OS X 自身就有兼容与支持 NTFS 文件的特性,只是被苹果隐藏起来了,今天我就给大家带来不用安装第三方NTFS读写工具即可在Mac上读写NTFS格式硬盘的教程。温馨提示:此教程需要中高级用户通过输入终端命令行来进行 *** 作,请新用户谨慎 *** 作。
具体 *** 作步骤如下:
1、打开应用程序 - 实用工具 - 终端 运行如下命令。来查看你的硬盘UUID。
diskutil info /Volumes/MACX | grep UUID
特别注意:用你的硬盘的名字替换掉 MACX
硬盘 UUID 显示出来了 ,并且有一个分区 UUID。我们需要用到的就是硬盘的 UUID 识别号。
2、再运行如下命令:
echo "UUID=EC9AB3F7-9AF6-F2EC-C4EC-F22419F32464 none ntfs rw,auto,nobrowse" | sudo tee -a /etc/fstab
用上一步 *** 作得到的硬盘UUID替换命令行UUID=后面的字符,并且输入账户的密码 (如密码为空,请先创建密码。 输入密码不显示但实际已经输入)
3、随后,当你再重新连接此 USB 设备的时候, 桌面上不再显示这个 USB 分区的白色盒子图标。 你需要按 Command-Shift-G 前往 /Volumes 卷宗目录。
3
此时你的 NTFS 硬盘就可以读写了
原因解释,OS X 默认是只识别 NTFS 并且如果显示在桌面上的时候无法激活 rw 即读写功能,所以我们在系统文件 /etc/fstab 中加入了判断,让这个硬盘连接的时候 判断为 NTFS 读写模式,但是不显示在桌面上。mount指令
功能描述:mount挂上文件系统,umount执行相反的 *** 作。用法:
#include<sys/mounth>
int mount(const char source, const char target, const char filesystemtype, unsigned long mountflags, const void data);
int umount(const char target);
int umount2(const char target, int flags);
参数:
source:将要挂上的文件系统,通常是一个设备名。
target:文件系统所要挂在的目标目录。
filesystemtype:文件系统的类型,可以是"ext2","msdos","proc","ntfs","iso9660"。。。
mountflags:指定文件系统的读写访问标志,可能值有以下
MS_BIND:执行bind挂载,使文件或者子目录树在文件系统内的另一个点上可视。
MS_DIRSYNC:同步目录的更新。
MS_MANDLOCK:允许在文件上执行强制锁。
MS_MOVE:移动子目录树。
MS_NOATIME:不要更新文件上的访问时间。
MS_NODEV:不允许访问设备文件。
MS_NODIRATIME:不允许更新目录上的访问时间。
MS_NOEXEC:不允许在挂上的文件系统上执行程序。
MS_NOSUID:执行程序时,不遵照set-user-ID和set-group-ID位。
MS_RDONLY:指定文件系统为只读。
MS_REMOUNT:重新加载文件系统。这允许你改变现存文件系统的mountflag和数据,而无需使用先卸载,再挂上文件系统的方式。
MS_SYNCHRONOUS:同步文件的更新。
MNT_FORCE:强制卸载,即使文件系统处于忙状态。
MNT_EXPIRE:将挂载点标志为过时。data:文件系统特有的参数。返回说明:成功执行时,返回0。失败返回-1,errno被设为以下的某个值EACCES:权能不足,可能原因是,路径的一部分不可搜索,或者挂载只读的文件系统时,没有指定MS_RDONLY标志。
EAGAIN:成功地将不处于忙状态的文件系统标志为过时。
EBUSY:一源文件系统已被挂上。或者不可以以只读的方式重新挂载,因为它还拥有以写方式打开的文件。二目标处于忙状态。
EFAULT:内存空间访问出错。
EINVAL: *** 作无效,可能是源文件系统超级块无效。
ELOOP:路径解析的过程中存在太多的符号连接。
EMFILE:无需块设备要求的情况下,无用设备表已满。
ENAMETOOLONG:路径名超出可允许的长度。
ENODEV:内核不支持某中文件系统。
ENOENT:路径名部分内容表示的目录不存在。
ENOMEM:核心内存不足。
ENOTBLK:source不是块设备。
ENOTDIR:路径名的部分内容不是目录。
EPERM:调用者权能不足。
ENXIO:块主设备号超出所允许的范围。格式:mount [-参数] [设备名称] [挂载点]
其中常用的参数有:
复制代码
-a 安装在/etc/fstab文件中类出的所有文件系统。
-f 伪装mount,作出检查设备和目录的样子,但并不真正挂载文件系统。
-n 不把安装记录在/etc/mtab 文件中。
-r 讲文件系统安装为只读。
-v 详细显示安装信息。
-w 将文件系统安装为可写,为命令默认情况。
-t <文件系统类型> 指定设备的文件系统类型,常见的有:
ext2 是linux目前常用的文件系统
msdos MS-DOS的fat,就是fat16
vfat windows98常用的fat32
nfs 网络文件系统
iso9660 CD-ROM光盘标准文件系统
ntfs windows NT/2000/XP的文件系统
auto 自动检测文件系统
-o <选项> 指定挂载文件系统时的选项,有些也可写到在 /etc/fstab 中。常用的有:
defaults 使用所有选项的默认值(auto、nouser、rw、suid)
auto/noauto 允许/不允许以 –a选项进行安装
dev/nodev 对/不对文件系统上的特殊设备进行解释
exec/noexec 允许/不允许执行二进制代码
suid/nosuid 确认/不确认suid和sgid位
user/nouser 允许/不允许一般用户挂载
codepage=XXX 代码页
iocharset=XXX 字符集
ro 以只读方式挂载
rw 以读写方式挂载
remount 重新安装已经安装了的文件系统
loop 挂载“回旋设备”以及“ISO镜像文件”
复制代码
需要注意的是,挂载点必须是一个已经存在的目录,这个目录可以不为空,但挂载后这个目录下以前的内容将不可用,umount以后会恢复正常。使用多个-o 参数的时候,-o 只用一次,参数之间用半角逗号隔开:
# mount –o remount,rw /
例如要挂载windows下文件系统为FAT32的D盘,一般而言在Linux下这个分区对应/dev/hda5,根据具体的分区情况会有不同,这里就以hda5来举例说明:
# mkdir /mnt/hda5 //创建hda5的目录作为挂载点,位置和目录名可自定义//
# mount -t vfat /dev/hda5 /mnt/hda5
一般而言,Linux会自动探测分区的文件系统,除非让你指定时,否则-t vfat 可以省掉。
# mount /dev/hda5 /mnt/hda5
这样就可以进入/mnt/hda5目录去访问分区中的资源了。
1 为什么mount上分区后显示不了中文文件为问号/乱码?
显示问号表明你的系统中没有可识别使用的中文字体,请先安装中文字体。确保你的系统已经可以很好的显示中文。显示为乱码一般是mount默认使用的文件系 统编码和文件系统中文件的实际编码不一致造成的。要想正常显示中文文件,mount时需要用到 -o 参数里的codepage和iocharset选项。codepage指定文件系统的代码页,简体中文中文代码是936;iocharset指定字符集, 简体中文一般用cp936或gb2312。
# mount –o iocharset=gb2312 codepage=936 /dev/hda5 /mnt/hda5
一般来说 mount –o iocharset=cp936 /dev/hda5 /mnt/hda5 就可以解决问题了。
如果这样做了以后还有问题,请尝试UTF-8编码:
# mount –o iocharset=utf8 /dev/hda5 /mnt/hda5
2 为什么mount上去以后分区普通用户不可写?
mount时加上 –o umask=000 即可:
# mount –o umask=000, iocharset=cp936 /dev/hda5 /mnt/hda5
3 为什么mount上去后的分区中的文件都变成短文件名了?
这是文件系统挂错的原因,将FAT32挂载成FAT16时就会出现这种情况,先umount,然后用 –t vfat 重新挂载即可解决问题。
# mount –t vat /dev/hda5 /mnt/hda5
4 如何挂载U盘和mp3?
如果计算机没有其它SCSI设备和usb外设的情况下,插入的U盘的设备路径是 /dev/sda1,用命令:
# mkdir /mnt/u
# mount /dev/sda1 /mnt/u
挂载即可。
5 可以直接使用iso文件吗?
可以,就是mount的这一选项使得Linux下有免费虚拟光驱的说法,具体用法是:
# mkdir /mnt/iso
# mount –o loop linuxiso /mnt/iso
当然,挂载以后挂载点/mnt/iso也是只读的。
6 如何开机自动挂载分区?
每次挂载都要输入那么长的命令的确是繁琐了些,只要将分区信息写到 /etc/fstab 文件中即可实现系统启动的自动挂载,例如对于 /dev/hda5 的自动挂载添加如下的行即可:
/dev/hda5 /mnt/hda5 vfat defaults,iocharset=cp936, rw 0 0
7 如何挂载samba 分区?
# mkdir /mnt/share
# mount -t smbfs -o username=root,password=abc,codepage=936,iocharset=gb2312 //1921681100/share /mnt/share
如果中文显示不正常请尝试UTF-8编码。当然可以写到fstab中实现自动挂载。
8 mount --bind是什么意思?
mount --bind 是将一个目录中的内容挂载到另一个目录上,用法是
# mount --bind olddir newdir
这个命令使得自己搭建的FTP要共享某个目录的时候变得特别方便。如果要取消mount用命令:
# mount --move olddir newdir
即可。
如果mount --bind 也想写入fstab中的话格式如下:
olddir newdir none bind 0 0
9 为什么umount的时候老显示 device busy?
这是因为有程序正在访问这个设备,最简单的办法就是让访问该设备的程序退出以后再umount。可能有时候用户搞不清除究竟是什么程序在访问设备,如果用户不急着umount,则可以用:
# umount -l /mnt/hda5
来卸载设备。选项 –l 并不是马上umount,而是在该目录空闲后再umount。还可以先用命令 ps aux 来查看占用设备的程序PID,然后用命令kill来杀死占用设备的进程,这样就umount的非常放心了。
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
开机挂载及/etc/fstab格式
当我们在挂载磁盘的时候,除了利用磁盘的代号之外 (/dev/hdxx) 也可以直接利用磁盘的 label 来作为挂载的磁盘挂载点喔!基本上, 就是那个 /etc/fstab 档案的设定,Label 来做为磁盘挂载的依据, 这样有好有坏:
优点:不论硬盘代号怎么变,不论您将硬盘插在那个 IDE 接口 (IDE1 或 IDE2 或 master 或 slave 等),由于系统是透过 Label ,所以,磁盘插在那个接口将不会有影响。
缺点:如果插了两颗硬盘,刚好两颗硬盘的 Label 有重复的,那就惨了~ 因为系统会无法判断那个磁盘分割槽才是正确的!
开机挂载 /etc/fstab 及 /etc/mtab:
系统挂载的一些限制:
根目录 / 是必须挂载的,而且一定要先于其它 mount point 被挂载进来。
其它 mount point 必须为已建立的目录,可任意指定,但一定要遵守必须的系统目录架构原则
所有 mount point 在同一时间之内,只能挂载一次。
所有 partition 在同一时间之内,只能挂载一次。
如若进行卸载,您必须先将工作目录移到 mount point(及其子目录) 之外。
复制代码
[root@linux ~]# cat /etc/fstab
# Device Mount_point filesystem parameters dump fsck
LABEL=/ / ext3 defaults 1 1 (以标头名称挂载)
/dev/hda5 /home ext3 defaults 1 2
/dev/hda3 swap swap defaults 0 0
/dev/hdc /media/cdrom auto pamconsole,exec,noauto,managed 0 0
/dev/devpts /dev/pts devpts gid=5,mode=620 0 0
/dev/shm /dev/shm tmpfs defaults 0 0
/dev/proc /proc proc defaults 0 0
/dev/sys /sys sysfs defaults 0 0
复制代码
其实这个 /etc/fstab 就是将我们使用 mount 来挂载一个装置到系统的某个挂载点, 所需要下达的指令内容,将这些内容通通写到 /etc/fstab 里面去,而让系统一开机就主动挂载。 那么 mount 下达指令时,需要哪些参数?不就是『装置代号、挂载点、档案系统类别、参数』等等, 而我们的 /etc/fstab 则加入了两项额外的功能,分别是备份指令 dump 的执行与否, 与是否开机进行 fsck 扫瞄磁盘。
前面的4个已经很熟悉了,每个档案系统还有很多参数可以加入的,例如中文编码的 iocharset=big5,codepage=950 之类的,当然还有很多常见的参数,具体可以看mount中的详细介绍,具体说一下后2个:dump和fsck。
能否被 dump 备份指令作用:
在 Linux 当中,可以利用 dump 这个指令来进行系统的备份的。而 dump 指令则会针对 /etc/fstab 的设定值,去选择是否要将该 partition 进行备份的动作呢! 0 代表不要做 dump 备份, 1 代表要进行 dump 的动作。 2 也代表要做 dump 备份动作, 不过,该 partition 重要度比 1 小。
是否以 fsck 检验扇区:
开机的过程中,系统预设会以 fsck 检验我们的 partition 内的 filesystem 是否完整 (clean)。 不过,某些 filesystem 是不需要检验的,例如虚拟内存 swap ,或者是特殊档案系统, 例如 /proc 与 /sys 等等。所以,在这个字段中,我们可以设定是否要以 fsck 检验该 filesystem 喔。 0 是不要检验, 1 是要检验, 2 也是要检验,不过 1 会比较早被检验啦! 一般来说,根目录设定为 1 ,其它的要检验的 filesystem 都设定为 2 就好了。
一般来说, 当我们编辑 /etc/fstab 后,为了避免可能的错误,通常就会以 mount -a (模拟开机自动挂载 *** 作)这个指令来测试看看呢!这是很重要的一个测试动作喔!
/etc/fstab 是开机时的设定档,不过,实际 filesystem 的挂载是记录到 /etc/mtab 与 /proc/mounts 这两个档案当中的。每次我们在更动 filesystem 的挂载时,也会同时更动这两个档案喔!但是,万一发生您在 /etc/fstab 输入的数据错误,导致无法顺利开机成功,而进入单人维护模式当中,那时候的 / 可是 read only 的状态,当然您就无法修改 /etc/fstab ,也无法更新 /etc/mtab ,没关系,可以利用底下这一招:
[root@linux ~]# mount -n -o remount,rw /
加上 -n 则不更新 /etc/mtab ,加上 -o 则提供额外的参数设定。 利用这一动作,嘿嘿!您的 / 就可以读写,那么自然就能够更新档案内容了。只读的原因在系统日志/var/log/messages里有,一般是因为检测到文件系统有错误
卸载没用umount /maildata试试
你进单用户模式,手工执行 fsck /dev/sdb1
linux下可以用umount命令来卸载删除文件系统。
使用umount命令案例:
/dev/mapper/vg01-share umounted
#卸载vg01-share这个文件系统。
umount常用参数解析:
-V 打印版本信息并且推出;
-n umount的时候不会更新/etc/mtab文件;
-r 如果umount失败,重新挂载文件系统为只读模式;
-a /etc/mtab中记录的文件系统全部卸载;
-t 指定文件系统类型。如ext3,fat32,iso9600等;
-f 强制卸载。in case of an unreachable NFS system;
-l 属于一个延迟卸载,等文件系统所有资源释放后在卸载。
Linux系统挂载存储变成只读的解决方案:1、mount:
用于查看哪个模块输入只读,一般显示为:
[root@localhost ~]# mount
/dev/cciss/c0d0p2 on / type ext3 (rw)
proc on /proc type proc (rw)
sysfs on /sys type sysfs (rw)
devpts on /dev/pts type devpts (rw,gid=5,mode=620)
/dev/cciss/c0d0p7 on /home type ext3 (rw)
/dev/cciss/c0d0p6 on /var type ext3 (rw)
/dev/cciss/c0d0p3 on /usr type ext3 (rw)
/dev/cciss/c0d0p1 on /boot type ext3 (rw)
tmpfs on /dev/shm type tmpfs (rw)
none on /proc/sys/fs/binfmt_misc type binfmt_misc (rw)
sunrpc on /var/lib/nfs/rpc_pipefs type rpc_pipefs (rw)
/dev/dm-0 on /home/book/upload/BookFile1 type ext3 (rw)
/dev/dm-1 on /home/book/upload/BookFile2 type ext3 (rw)
/dev/dm-2 on /backup type ext3 (rw)
/dev/dm-3 on /home/book/upload/BookFile3 type ext3 (ro)
2、如果发现有ro,就重新mount,或者umount以后再remount
3、umount /dev/dm-3
如果发现有提示“device is busy”,找到是什么进程使得他busy
fuser -m /mnt/data 将会显示使用这个模块的pid
fuser -mk /mnt/data 将会直接kill那个pid
然后重新mount即可。
4、还有一种方法是直接remount,命令为
mount -o rw,remount /mnt/data。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)