访问共享的 Windows 文件系统(2)

永久挂载 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/bash

UID 是密码文件条目中的第三个字段(在本例中为 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 挂载选项,可在每次挂载文件系统时必须指定用户名和密码,与不向每个能访问系统的人公开该信息之间实现很好的平衡。

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/19809.html