学习 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
命令会对您有帮助,但这不是必须掌握这些知识。
虽然 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=name 或 username=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 扩展的服务器,通常不必使用 uid
、gid
、file_mode
和 dir_mode
选项。不过,在某些情况下,您可以使用这些特性来覆盖服务器所提供的值。还要注意,所有这些选项都会影响文件 在客户端上 的出现方式;在服务器上的权限和所有权不会受到这些选项的影响。
装载 SMB/CIFS 共享后,您可以访问它,就像访问本地卷或 NFS 卷一样。您可以使用 cp
复制文件,使用 rm
删除文件,直接使用文本编辑器或其他程序编辑文件,等等。不过,请记住,如果服务器不支持某个特性,那么您可能无法使用它。例如,除非该服务器支持 UNIX 扩展,否则您无法使用 chmod
命令来更改文件模式。(chmod
的部分例外是,您可以改变写入权限,这些权限已被反向映射到 SMB 的只读位。)
当您使用完共享后,您可以使用 umount
命令卸载它,就好像它是一个本地文件系统一样:
# umount /mnt |
如果您希望在一台计算机上永久装载 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
命令进行测试,并执行其他常规疑难解答程序。