(来自 SF 的交叉帖子,我在那里并没有得到太多快乐)
我已经启动并运行了 CentOS 6.2 机器,并使用互联网上的各种操作方法将 autofs 配置为在 /mydomain 文件夹下自动挂载 Windows 共享。具体来说,我有三个文件:
/etc/auto.master
# ...
/mydomain /etc/auto.mydomain --timeout=60
# ...
/etc/auto.mydomain
* -fstype=autofs,-DSERVER=& file:/etc/auto.mydomain.sub
/etc/auto.mydomain.sub
* -fstype=cifs,uid=${UID},gid=${EUID},credentials=${HOME}/.smb/mydomain ://${SERVER}/&
这有效并允许每个用户在其主目录下的文件中指定自己的凭据。
但是,他们创建的挂载随后可供所有人使用原始用户的凭据使用,直到达到超时为止。这不太理想,所以我一直在考虑尝试执行以下操作之一:
- 配置 autofs,以便挂载对于每个用户来说都是本地的,但位于同一路径下,这样他们就可以
/mydomain/server1
使用自己的凭据同时访问 - 配置 autofs,使挂载点位于每个用户的主文件夹下,以便他们每个人都可以
~/mydomain/server1
使用自己的凭据同时访问 - 配置 autofs 以便挂载位于用户命名的文件夹下,这样他们就可以
/mydomain/$USER/server1
使用自己的凭据同时访问(但我还需要确保/mydomain/$USER
给定的 $USER 是 0700)
到目前为止,我看不到任何执行 #1 的方法,但对于 #2 或 #3,我尝试更改 /etc/auto.master 中的条目,以便密钥为 或${HOME}/mydomain
,/mydomain/${USER}
但两者都不起作用(第一个显示没有匹配的条目/var/log/messages
,第二个似乎没有进行变量替换)。
我错过了一些明显的东西吗?
(PS:如果您可以提供一种方法来避免需要纯文本凭证文件,那就额外奖励了——也许是直接提示输入用户名/域/密码,甚至可能是一些 kerberos 魔法?)
(PPS:我简要地浏览了SMB网络文件系统,但我无法让它配置/制作 -fuse >= 2.6
即使我有 v2.8.3,它也要求fusermount --version
- 并且我找不到 的发布版本yum install
)
(PPPS:我也简要地查看了所提供的内容/etc/auto.smb
,但看起来它也会遇到相同的共享问题?)
答案1
我已经使用它做了很多工作autofs
并安装了各种不同类型的资源。您可以查看手册页如果您能明确指出,当他们在文档中autofs
提到时,他们指的是运行守护程序的用户,这确实可以回答您的一些问题。这些是您默认获得的变量:$USER
autofs
Variable Substitution
The following special variables will be substituted in the key and location fields of an automounter map if prefixed with $ as customary from shell scripts (Curly braces can be used to separate the field name):
ARCH Architecture (uname -m)
CPU Processor Type
HOST Hostname (uname -n)
OSNAME Operating System (uname -s)
OSREL Release of OS (uname -r)
OSVERS Version of OS (uname -v)
autofs provides additional variables that are set based on the user requesting the mount:
USER The user login name
UID The user login ID
GROUP The user group name
GID The user group ID
HOME The user home directory
HOST Hostname (uname -n)
Additional entries can be defined with the -Dvariable=Value map-option to automount(8).
您可能会想使用,-DUSER=$USER
但这只会在映射文件$USER
内设置autofs
为启动守护程序的用户autofs
。该守护进程通常由诸如 之类的用户拥有,root
或者chrooted
专门为autofs
.
注意#1:一个文件由 a和 aautofs
组成。这些变量只允许在条目的一部分内使用。key
value
value
笔记2:如果-D=...
开关不覆盖内置变量,则$USER
或将包含正在访问安装的人员的&$UID
值。$USER
$UID
限制对 CIFS 共享的访问
关于如何限制对CIFS
安装的访问的问题,我没有找到一种方法可以使用autofs
.
用于挂载CIFS
共享的凭据在挂载共享的整个过程中都会使用。实际上autofs
,运行它的守护进程automount
(例如root
)“等同于”用户的凭据CIFS
。
这不是我认为的典型行为,autofs
而是使用mount.cifs
.典型的autofs
行为会尊重挂载另一端的权限,而 with mount.cifs
it 则不会。
底线
我认为您使用 autofs 完成设置不太走运。我认为fuse
如果您确实希望每个用户都使用CIFS
自己的凭据访问共享,则必须使用。
答案2
file_mode
您可以使用和选项强制在 CIFS 挂载上设置权限dir_mode
,并结合uid=${USER}
您已经使用的设置,给出如下所示的自动挂载映射行:
* -fstype=cifs,uid=${UID},gid=${EUID},file_mode=0600,dir_mode=0700,credentials=${HOME}/.smb/mydomain ://${SERVER}/&
挂载的文件系统将归该用户所有,并且权限设置为禁止所有其他用户访问。我刚刚尝试过这个,看起来效果很好:)
您可能需要设置file_mode=0700
共享上是否存储了您希望能够运行的可执行文件。我的示例删除了执行权限,因为这是我想要的行为。
注意:这个选项在提出问题时可能不存在,但现在已经存在了!
答案3
使用桑巴:
在/etc/auto.home
:
* -fstype=cifs,credentials=/etc/smbcreds.& ://MYSERVERIP/homes
您需要将所有用户和密码存储在独立文件中/etc/smbcreds
该行的最后一部分将通过 samba 挂载。
使用 NFS:
在 /etc/auto.home 中:(对于 NFS)
* MYSERVERIP:/home/&