使用 sudo 按需挂载 Windows 共享
如果只希望偶尔挂载一个共享,可将 noauto 选项添加到上一节示例中所示的挂载选项列表中。此选项可在每次重新启动系统时避免自动挂载指定的 Windows 共享。然后,在希望访问该共享中的文件时,必须从命令行挂载该共享。
必须始终以 root 用户身份执行 mount 命令,这通常意味着任何希望挂载该共享的人都必须知道该系统上的 root 密码。如果不希望在每次重新启动系统时自动挂载该共享,且希望限制需要知道 root 密码的用户(或只是限制必须使用该命令的次数),则可使用 sudo 命令使一个普通用户能够挂载该共享。为此,使用 visudo 命令编辑 /etc/sudoers 文件,这会将一个以下格式的条目添加到 /etc/sudoers 文件的末尾。
wvh ALL=/bin/mount /mnt/PUBLIC, /bin/umount /mnt/PUBLIC此条目使用户 wvh 能够使用 sudo 命令执行 /bin/mount /mnt/PUBLIC 和 /bin/umount /mnt/PUBLIC 命令,但不允许该用户使用 mount 或 umount 命令挂载或卸载任何其他文件系统。如果希望给定系统上的所有用户都能够挂载或卸载 /mnt/PUBLIC 共享,可将用户名 wvh 替换为一般性的 %users 表达式。在此情况下,请确保用户希望更新的文件可由关联的 /etc/fstab 条目中的 anongid 所标识的组写入数据,并且所有用户都属于这个组。
备注:另一种挂载 Windows 共享的方法是使用一个支持 CIFS 文件系统的 File system in User Space (FUSE) 程序包。smbnetfs 和 fusesmb 程序包很流行,但已很久未更新了,且需要大量配置才能使它们正常工作。(参见 参考资料 获取这些项目的链接。)
在 Linux 系统上使用 Windows 文本文件
大部分人都认为文本文件在每个计算机系统上都是一种标准的文件类型,因此可安全地用于配置文件、可在任何操作系统上读取的便笺等。不幸的是,情况不是这样的。尽管 Windows 和 Linux 系统上的文本文件使用了相同的字符集,但用于标识文本的行尾的字符却不同。Windows 和 DOS 系统使用两个字符来标识文本的行尾:一个回车字符 (Ctrl-M) 和一个换行符 (Ctrl-J)。Linux 和所有类似 UNIX 的系统都使用单个字符来标识文本的行尾:换行符。如果使用 Linux 实用程序打开在 Windows 系统上创建的文本文件,将会在每行末尾看到一个 Ctrl-M 字符,该字符常常显示为 ^M 或 \r。这个额外的字符可能会让需要读取这类文件的 Linux 实用程序难以理解。
Linux 提供了两个命令来自动更改文本文件中的行结束符。dos2unix 命令(位于大部分 Linux 发行版中都提供的一个具有相同名称的程序包中)自动转换在 Windows(或 DOS)中创建的文本文件,以使用 Linux 和 UNIX 约定来标记文本的行尾,这会删除所有的 Ctrl-M 字符。一个同名的程序包中有一个等效的程序 unix2dos,可将 Linux 和 UNIX 文本文件转换为 Windows 格式的文本文件。
如果您是 Emacs 文本编辑器的爱好者,可以将 清单 4 中所示的 Emacs 命令添加到 Emacs 配置文件 (~/.emacs) 中。然后就能够执行 dos-file、mac-file 和 unix-file 命令,将一个文本缓冲区的上下文转换为使用该命令指定的文本文件格式。
清单 4. 更改文本文件类型的 Emacs 命令
;
; Functions for changing buffer modes
;
(defun dos-file ()
"Change the current buffer to Latin 1 with DOS line-ends."
(interactive)
(set-buffer-file-coding-system 'iso-latin-1-dos t))
(defun mac-file ()
"Change the current buffer to Latin 1 with Mac line-ends."
(interactive)
(set-buffer-file-coding-system 'iso-latin-1-mac t))
(defun unix-file ()
"Change the current buffer to Latin 1 with Unix line-ends."
(interactive)
(set-buffer-file-coding-system 'iso-latin-1-unix t))
备注:清单 4 中所示的样例 Emacs 命令假设您使用的是 Latin 1 字符集。如果在文本文件中使用另一个字符集,则将需要修改这些命令以反映该字符集。