使用autofs挂载到每个用户的主目录下

使用autofs挂载到每个用户的主目录下

(来自 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}/&

这有效并允许每个用户在其主目录下的文件中指定自己的凭据。

但是,他们创建的挂载随后可供所有人使用原始用户的凭据使用,直到达到超时为止。这不太理想,所以我一直在考虑尝试执行以下操作之一:

  1. 配置 autofs,以便挂载对于每个用户来说都是本地的,但位于同一路径下,这样他们就可以/mydomain/server1使用自己的凭据同时访问
  2. 配置 autofs,使挂载点位于每个用户的主文件夹下,以便他们每个人都可以~/mydomain/server1使用自己的凭据同时访问
  3. 配置 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提到时,他们指的是运行守护程序的用户,这确实可以回答您的一些问题。这些是您默认获得的变量:$USERautofs

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组成。这些变量只允许在条目的一部分内使用。keyvaluevalue

笔记2:如果-D=...开关不覆盖内置变量,则$USER或将包含正在访问安装的人员的&$UID值。$USER$UID

限制对 CIFS 共享的访问

关于如何限制对CIFS安装的访问的问题,我没有找到一种方法可以使用autofs.

用于挂载CIFS共享的凭据在挂载共享的整个过程中都会使用。实际上autofs,运行它的守护进程automount(例如root)“等同于”用户的凭据CIFS

这不是我认为的典型行为,autofs而是使用mount.cifs.典型的autofs行为会尊重挂载另一端的权限,而 with mount.cifsit 则不会。

底线

我认为您使用 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/&

相关内容