CIFS 集成

学习 Linux, 302 (混合环境): CIFS 集成

http://www.ibm.com/developerworks/cn/linux/l-lpic3-314-1/


在本文中,将学习以下概念:

  • Server Message Block (SMB) 和 Common Internet File System (CIFS) 协议
  • 使用 CIFS 的特性和优势
  • 将 CIFS 共享装载到 Linux 客户端上

本文帮助您准备 Linux Professional Institute's (LPI) Mixed Environment 特性考试 (302) 的主题 312 下的目标 314.1。该目标的权值为 3。

先决条件

本文假设您拥有 Linux 命令行函数的工作知识,理解 Samba 配置的基础知识。您应该熟悉 smb.conf 配置文件的总体结构,还应该理解 Linux 装载本地和远程文件系统的基本操作(使用 mount 命令和 /etc/fstab 文件)。熟悉标准 Linux 文本模式 ftp 命令会对您有帮助,但这不是必须掌握这些知识。


装载 SMB/CIFS 共享

虽然 smbclient 是一个有用的工具,但它无法为您提供您所习惯的类似于 Windows 客户端的服务器无缝访问。如果您需要进行这样的访问,则必须使用其他工具来装载 SMB/CIFS 共享。您可以使用标准的 Linux mount 命令来实现此操作,也可以编辑您的 /etc/fstab 文件,在计算机启动时自动装载 SMB/CIFS 共享。

临时装载共享

您可以使用与装载本地卷或网络文件系统 (NFS) 导出相同的 mount 命令来装载 SMB/CIFS 共享。您可以将文件系统类型指定为 cifs;在大多数情况下,mount 根据该命令的语法判断出要使用该驱动程序。或者,您可以直接调用辅助程序 mount.cifs。原则上,只有设备规范不同于装载本地文件系统,因此,要装载 TANGO 服务器的 GORDON 共享,则需要以 root 用户的身份键入以下内容:

# mount //TANGO/GORDON /mnt
			

但是,在实践中,这种用法存在一个问题:它将 root 作为用户名传递给服务器。如果服务器不允许 root 用户登录,那么装载尝试就会失败。您可以通过使用 -o user=name 选项将用户名传递给服务器,从而修正这个问题:

# mount -o user=gordon //TANGO/GORDON /mnt
Password:

还有其他几个通过 -o 选项传递给 mount 的可用装载选项。表 2 总结了最有用的选项。请访问 mount.cifs 主页,了解有关其他选项的信息。


表 2:重要的 mount.cifs 选项
选项效果
user=nameusername=name指定发送给服务器的用户名。
password=pass指定发送给服务器的密码。如果未指定密码,那么 mount.cifs 会使用 PASSWD 环境变量的值;如果未设置该变量值,程序会提示用户,要求其输入密码。
credentials=filename指定含有用户名、密码和工作组名称(可选)的文件。每个值都用单独的行显示,其开头分别为字符串 username=password=workgroup=
uid=UID设定拥有从共享装载的文件的用户的用户 ID (UID)。
gid=GID类似于 uid=UID 选项,但该选项影响组 ID (GID) 而不是 UID。
file_mode=mode以数字形式设置将从服务器分配给文件的文件模式(权限)。
dir_mode=mode类似于 file_mode=mode,但该选项影响目录而不是文件。
guest防止提示输入密码。此选项通常只在共享支持来宾访问时才有效。
hard如果服务器变得不可访问,试图访问服务器上的文件的进程将挂起,直到服务器恢复。
soft如果服务器变得不可访问,试图访问服务器上的文件的进程将接收错误消息。这是默认行为。

如果您连接到支持 CIFS UNIX 扩展的服务器,通常不必使用 uidgidfile_modedir_mode 选项。不过,在某些情况下,您可以使用这些特性来覆盖服务器所提供的值。还要注意,所有这些选项都会影响文件 在客户端上 的出现方式;在服务器上的权限和所有权不会受到这些选项的影响。

装载 SMB/CIFS 共享后,您可以访问它,就像访问本地卷或 NFS 卷一样。您可以使用 cp 复制文件,使用 rm 删除文件,直接使用文本编辑器或其他程序编辑文件,等等。不过,请记住,如果服务器不支持某个特性,那么您可能无法使用它。例如,除非该服务器支持 UNIX 扩展,否则您无法使用 chmod 命令来更改文件模式。(chmod 的部分例外是,您可以改变写入权限,这些权限已被反向映射到 SMB 的只读位。)

当您使用完共享后,您可以使用 umount 命令卸载它,就好像它是一个本地文件系统一样:

# umount /mnt
			

使用 SMB 装载共享

在内核 2.6.37 之前,Linux 内核都包括独立的 SMB 和 CIFS 驱动程序,您可以将文件系统类型指定为 smbfs,或使用 smbmount 程序,从而使用原始 SMB 协议装载共享。总体上讲,使用此特性的方式与使用 cifs 文件系统类型代码或 mount.cifs 程序的工作方式是相同的,但在某些细节上有所不同。使用 SMB 协议会导致无法使用仅支持 CIFS 的特性,比如 CIFS UNIX 扩展。

在过去,使用 SMB 有时是合理的,例如,它可以使用 Linux 的 smbfs 驱动程序而不是使用 cifs 来装载由非常旧的 Microsoft Windows 9x/Me 计算机导出的共享。现在,这种问题已经很少出现,因为流行的 cifs 实现已消除了大部分以前的限制。然而,如果您认为可能存在这样的问题,那么您可以尝试安装 2.6.37 之前的内核,看看 smbfs 驱动程序能否解决您的问题。

永久装载共享

如果您希望在一台计算机上永久装载 SMB/CIFS 共享,您可以通过在 /etc/fstab 中添加一个条目来实现这一点。该进程与 mount 命令到 /etc/fstab 条目的任何其他转换的工作方式非常相近。然而,在这里需要特别注意 表 2 中的一个选项 credentials。由于大多数 SMB/CIFS 服务器都使用密码进行身份验证,如果您预计到要使用 /etc/fstab 来装载共享,则必须永久保存密码。使用 password 选项可以将密码直接存储在 /etc/fstab 中,但不建议采用这种做法;因为该计算机的所有用户都必须能够读取 /etc/fstab 文件,所有人都应该可以读取以这种方式存储的密码。使用 credentials 使您可以将密码存储在一个只有 root 用户可以读取的文件中,从而提高密码的安全性。

SMB/CIFS 共享的有效密码条目可能具有以下类似形式:

//TANGO/BACKUPS  /saveit  cifs  credentials=/etc/samba/creds.txt  0 0

相关的凭据文件可能具有以下类似形式:

username=buuser
password=Iw2bUmS[t

注意:请务必赋予凭据文件适合的权限:一般是 0600 或 0400,以及 root 用户或者其凭据存储在该文件中的用户所拥有的所有权。

配置就绪后,当您重新启动计算机或键入 mount -a时,会自动装载 //TANGO/BACKUPS 共享。如果该特性不能正常工作,请验证用户名和密码是否正确,使用 mount 命令进行测试,并执行其他常规疑难解答程序。



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值