NFS和mount常用参数详解 本文目录

时间:2023-12-15 23:52:44

NFS和mount常用参数详解

NFS权限参数配置

ro                      只读访问
rw 读写访问
sync 所有数据在请求时写入共享
async NFS在写入数据前可以相应请求
secure NFS通过1024以下的安全TCP/IP端口发送
insecure NFS通过1024以上的端口发送
wdelay 如果多个用户要写入NFS目录,则归组写入(默认)
no_wdelay 如果多个用户要写入NFS目录,则立即写入,当使用async时,无需此设置。
hide 在NFS共享目录中不共享其子目录
no_hide 共享NFS目录的子目录
subtree_check 如果共享/usr/bin之类的子目录时,强制NFS检查父目录的权限(默认)
no_subtree_check 和上面相对,不检查父目录权限
all_squash 共享文件的UID和GID映射匿名用户anonymous,适合公用目录。
no_all_squash 保留共享文件的UID和GID(默认)
root_squash root用户的所有请求映射成如anonymous用户一样的权限(默认)
no_root_squas root用户具有根目录的完全管理访问权限
anonuid=xxx 指定NFS服务器/etc/passwd文件中匿名用户的UID
anongid=xxx 指定NFS服务器/etc/passwd文件中匿名用户的GID

mount挂载参数

-t ntfs
告诉挂载命令将要挂载的文件系统类型。这个选项并不是必须的,因为mount会自动识别大多数的文件系统。
-r
以只读形式挂载卷。挂载操作默认以可读写形式挂载卷。除非指明,否则驱动将会以只读形式自动挂载文件系统。
-o ro
和-r相同。
-o umask={VALUE}
因为安全的原因,默认给予已挂载的NTFS卷的权限为rwx------。参数umask控制这些文件和路径的权限。详细的资料和例子请参见4.9节。

mount /dev/hda1 /mnt/windows -t ntfs -r -o umask=0222

-o uid={USERID}
已挂载的NTFS卷上所有文件默认都是root所有的。如果提供uid参数就可以设置文件的所有者。这些参数可以是/etc/passwd中的任何用户名,或者任何表示用户id的数字

mount /dev/hda1 /mnt/windows -t ntfs -r -o uid=flatcap
mount /dev/hda1 /mnt/windows -t ntfs -r -o uid=500

-o gid={GROUPID}
已挂载的NTFS卷上所有的文件默认都是root组所有的。如果提供gid参数就可以设置文件的组。这些参数可以是/etc/group中的组名,或者任何表示组id的数字。

mount /dev/hda1 /mnt/windows -t ntfs -r -o gid=winusers
mount /dev/hda1 /mnt/windows -t ntfs -r -o gid=520

原始驱动程序的挂载选项。

一些选项以true或false作为参数。
你可以用yes或1替换true。
也可以用no或0替换false

-o iocharset={NAME}
NTFS以Unicode形式保存所有的文件名和路径名,这样就可以表示任何语言中的任何字符。而Linux的NTFS驱动则默认将这些名称转换为ASCII形式,这对某些人来说是合适的,但是对于那些包括 ? 或 é 等字符的语言则不合适了。

NLS(本地语言支持)决定字符是如何被显示的。你可以选择像Unicode一样可以表示所有字符的utf8,或者你自己的代码页,比如iso8859-1(西欧)、iso8859-2(中欧)、gb2312(简体中文)、iso8859-8(希伯来文)。下面是一些挂载选项的例子:

mount /dev/hda1 /mnt/windows -t ntfs -r -o iocharset=utf8
mount /dev/hda1 /mnt/windows -t ntfs -r -o iocharset=iso8859-2
mount /dev/hda1 /mnt/windows -t ntfs -r -o iocharset=gb2312

utf8=true
如果你的内核不支持utf8,那么你可以通过这个选项启用NTFS驱动程序对utf8的支持。你应该在任何需要的地方使用选项-o iocharset=utf8

mount /dev/hda1 /mnt/windows -t ntfs -r -o utf8=tru

-o posix={BOOL}
Windows保存了文件名的大小写格式,但在读取时并不进行区分。因此你可以建立一个名为MyFileName的文件,然后用mYfILEname的名称打开它。

Linux默认对于大小写是敏感的,MyFile、Myfile和myfile是不同的文件。如果你希望Linux对NTFS卷具有和Windows相同的表现,那么就应将posix选项设置为true,将选项设置为false将使驱动程序具有与Linux类似的表现(默认设置)。

mount /dev/hda1 /mnt/windows -t ntfs -r -o posix=true

-o show_sys_files={BOOL}
如果这个选项被设置为true,那么文件系统的元数据将会处于可见状态。如若不可见,可通过提供它们的名称,比如ls -l $MFT,使它们被显示地列出。

NB 因为glibc的局限,$MFT可能因为其inode值为0而不会被显示在列表之中。

mount /dev/hda1 /mnt/windows -t ntfs -r -o show_sys_files=true

返回页面顶部

新驱动程序的挂载选项。

要找出你在使用的驱动类型,请参见4.4节。这一节只讨论适用于新驱动程序的选项,所有的常用选项都在4.6节中进行说明。

一些选项以true或false作为参数。
你可以用yes或1替换true。
也可以用no或0替换false。

-o nls={NAME}
NTFS以Unicode形式保存所有的文件名和路径名,这样就可以表示任何语言中的任何字符。而Linux的NTFS驱动则默认将这些名称转换为ASCII形式,这对某些人来说是合适的,但是对于那些包括 ? 或 é 等字符的语言则不合适了。

NLS(本地语言支持)决定字符是如何被显示的。你可以选择像Unicode一样可以表示所有字符的utf8,或者你自己的代码页,比如iso8859-1(西欧)、iso8859-2(中欧)、gb2312(简体中文)、iso8859-8(希伯来文)。下面是一些挂载选项的例子:

mount /dev/hda1 /mnt/windows -t ntfs -r -o nls=utf8
mount /dev/hda1 /mnt/windows -t ntfs -r -o nls=iso8859-2
mount /dev/hda1 /mnt/windows -t ntfs -r -o nls=gb2312

-o fmask={VALUE}
-o dmask={VALUE}
参数umask同时改变文件和路径两者的权限,fmask以同样的方式作用于文件而dmask作用于路径,这些选项也可以被组合使用。下面是一些例子:

mount /dev/hda1 /mnt/windows -t ntfs -r -o fmask=0222
mount /dev/hda1 /mnt/windows -t ntfs -r -o dmask=0222
mount /dev/hda1 /mnt/windows -t ntfs -r -o fmask=0077,dmask=0222

-o case_sensitive={BOOL}
Windows保存了文件名的大小写格式,但在读取时并不进行区分。因此你可以建立一个名为MyFileName的文件,然后用mYfILEname的名称打开它。

Linux默认对于大小写字母是敏感的,MyFile、Myfile和myfile是不同的文件。如果你希望Linux对于NTFS卷具有和Windows相同的表现,那么就应将case_sensitive选项设置为false。将选项设置为true将使驱动具有和Linux类似的表现(默认设置)。

mount /dev/hda1 /mnt/windows -t ntfs -r -o case_sensitive=true
mount /dev/hda1 /mnt/windows -t ntfs -r -o case_sensitive=false

-o sloppy={BOOL}
默认情况下,驱动程序在任何选项发生错误时将拒绝进行挂载,添加参数sloppy后驱动程序将完全忽略这些错误参数。

mount /dev/hda1 /mnt/windows -t ntfs -r -o sloppy=true
mount /dev/hda1 /mnt/windows -t ntfs -r -o sloppy=false

-o errors={VALUE}
这个参数控制驱动程序处理问题的方式。默认为尝试进行处理并继续执行,任何的corruption都会被标记并留待以后处理。另一种选择是让驱动程序尝试处理并进行恢复,目前驱动程序可以做的唯一恢复是用备份替换当前的启动扇区。

mount /dev/hda1 /mnt/windows -t ntfs -r -o errors=continue
mount /dev/hda1 /mnt/windows -t ntfs -r -o errors=recover

怎样改变已经挂载的NTFS卷的权限?

共有三个可以控制文件和路径的权限和所有权的选项,分别是:umask、uid和gid。它们在常用挂载选项一节中都有提及。

下面是每个选项以及它们对文件所起作用的一些例子。我们每次都会使用相同的挂载命令,并且只显示相关的选项。

mount /dev/hda1 /mnt/windows -t ntfs -r

umask是对权限的过滤器,因此它的工作方式和chmod恰好相反。全部权限等价与777(rwxrwxrwx),umask值0222(-w--w--w-)则代表权限555(r-xr-xr-x)。

考虑到安全的原因,默认的umask被设置为0077。

mount ... -o umask=0277

-r-x------ 1 root    root    28096 Aug 24 1996 chkdsk.exe

mount ... -o umask=0222

-r-xr-xr-x 1 root    root    28096 Aug 24 1996 chkdsk.exe

到此为止,这些文件的所有者和所有组仍为root,下面我们将会尝试使用uid和gid选项。

mount ... -o uid=flatcap

-r-x------ 1 flatcap root    28096 Aug 24 1996 chkdsk.exe

mount ... -o gid=winuser

-r-x------ 1 root    winuser 28096 Aug 24 1996 chkdsk.exe

mount ... -o uid=flatcap,gid=winuser

-r-x------ 1 flatcap winuser 28096 Aug 24 1996 chkdsk.exe

最后我们将组合一些选项以得到精确的权限控制。下面的例子中,我们将赋予用户flatcap完全的控制权限,赋予组winuser中的用户读权限,而其他所有用户则没有任何访问权限。

mount ... -o umask=0027,uid=flatcap,gid=winuser

-rwxr-x--- 1 flatcap winuser 28096 Aug 24 1996 chkdsk.exe

返回页面顶部

怎样自动挂载一个NTFS卷?

一旦你熟悉了挂载命令,就可以通过向/etc/fstab (filesystem table)中添加指令行来告诉Linux如何自动挂载卷了。

下面是一些挂载命令的例子和等价的fstab中指令行。
NB 不必担心行尾 0 0 表示的意思。

mount /dev/hda1 /mnt/windows -t ntfs -r

/dev/hda1 /mnt/windows ntfs ro                                    0 0

这里我们将 -r 转换为等价的 -o ro。

mount /dev/hda1 /mnt/windows -t ntfs -r -o umask=0222

/dev/hda1 /mnt/windows ntfs ro,umask=0222                         0 0

mount /dev/hda1 /mnt/windows -t ntfs -r -o umask=0222,uid=flatcap,gid=winuser

/dev/hda1 /mnt/windows ntfs ro,umask=0222,uid=flatcap,gid=winuser 0 0