永久挂载 Windows 共享
可将 Windows 共享手动挂载在系统上的目录上,方法是以 root 用户身份使用 mount 命令或使用 sudo 应用程序,如 清单 3 中所示。mount 命令的 -t 选项及其 cifs 参数指定您挂载的文件系统类型,而且在此情况下,会导致一般性的 mount 命令调用 /bin/mount.cifs 命令。使用您系统的 package-management 命令安装 cifs-utils 程序包,该程序包是 Samba 套件的一部分。
清单 3. 挂载并列出手动挂载的 Windows 共享的内容
# mkdir /mnt/PUBLIC
# mount -t cifs //winserver2008/Public /mnt/PUBLIC
Password:
# ls -l /mnt/PUBLIC
total 1
drwxr-xr-x. 1 root root 0 Jan 27 16:19 Desktop
-rwxr-xr-x. 1 root root 174 Jan 19 2008 desktop.ini
drwxr-xr-x. 1 root root 0 Jan 19 2008 Documents
drwxr-xr-x. 1 root root 0 Jan 27 23:38 Downloads
drwxr-xr-x. 1 root root 0 Jan 19 2008 Favorites
drwxr-xr-x. 1 root root 0 Jan 19 2008 Music
drwxr-xr-x. 1 root root 0 Jan 19 2008 Pictures
drwxr-xr-x. 1 root root 0 Jan 27 23:37 Software
drwxr-xr-x. 1 root root 0 Jan 19 2008 Videos
清单 3 中的示例 mount 命令使远程共享可通过 /mnt/PUBLIC 目录使用,但具有一些缺点:
简单地将此命令添加到 /etc/fstab 文件中无法自动挂载该共享,因为您在执行 mount 命令后会被提示输入密码。如果尚未确定要用于验证的特定用户,就必须为用于执行 su 或 sudo 命令的用户提供远程 Windows 密码。
以 root 用户身份执行 mount 命令,将共享挂载为 root 用户所有的资源。如果仅希望读取该共享中的文件,尽管可通过此方式挂载共享,但您只能以 root 用户身份向挂载的共享写入数据,这通常很不方便。
要解决这些问题,可在执行 mount 命令时指定特殊的 CIFS 相关选项,以挂载一个 CIFS 共享。这些选项包括:
username=<login> - 指定将用于对远程共享进行验证的用户。可将此选项缩写为 user=。
password=<login> - 指定将对远程共享进行验证的用户(您将该用户指定为将使用的用户)的密码。
uid=<UID> - 指定将拥有所挂载共享中的文件和目录的用户 ID (UID)。如果在 Linux 桌面上使用密码文件身份验证方式,则可使用 grep 命令在系统的密码文件中搜索您的登录名,以找到您的 UID,如以下示例中所示。
$ grep wvh /etc/passwd wvh:x:500:500:William von Hagen:/home/wvh:/bin/bashUID 是密码文件条目中的第三个字段(在本例中为 efficiently500)。
gid=<GID> - 指定将拥有所挂载共享中的文件和目录的用户的组 ID (GID)。如果在 Linux 桌面上使用密码文件身份验证方式,则可使用 grep 命令在系统的密码文件中搜索您的登录名,以找到您的 GID。GID 是密码文件条目中的第四个字段,如上面的示例中所示。
下面给出了一个使用这些选项的示例 mount 命令,出于格式化用途将该命令分为两行:
# mount -t cifs -o username=wvh,password=MYPASSWORD,uid=500,gid=500 //win2008server/Public /mnt/PUBLIC可从 CLI 使用一条类似这样的命令或向 /etc/fstab 文件添加一个类似条目,以在启动系统时自动挂载该文件系统。以下是与前面的 mount 等效的 /etc/fstab 文件条目:
//win2008server/Public /mnt/PUBLIC cifs username=wvh,password=MYPASSWORD,uid=500,gid=500 0 0此命令将在 /etc/fstab 文件中显示为一行,但在本例中出于格式化用途而分为多行。遗憾的是,此命令具有明显的安全问题,因为您必须在 /etc/fstab 条目中公开密码,而文件 /etc/fstab 通常可供系统上的每个用户读取。要解决此问题,可使用 credentials 挂载选项将用户名和密码放在指定的文本文件中。例如:
//win2008server/Public /mnt/PUBLIC cifs credentials=/etc/cred.wvh,uid=500,gid=500 0 0一个 credentials 文件的格式如下所示:
username=wvh password=MYPASSWORD然后可使用以下命令,使 /etc/cred.wvh 文件仅可供 root 用户(必须以其身份执行 mount 命令的用户)读取:
# chmod 600 /etc/cred.wvh使用 credentials 挂载选项,可在每次挂载文件系统时必须指定用户名和密码,与不向每个能访问系统的人公开该信息之间实现很好的平衡。