挂载远程主目录

挂载远程主目录

我有一个 SAMBA/CIFS 服务器,用户有自己的目录。我的客户端计算机运行 Linux 或 Windows。我想做的是在两个操作系统中使用该共享。但我的用户可以在任何计算机上登录,这是我的问题:在 Linux 中,我需要更改/etc/fstab并包含如下内容:

//sambaserver/username /mnt/samba smbfs username=<username>,password=<pass> 0 0  

我的问题是我无法静态设置用户名和密码,但我需要它动态的(我不确定这是正确的术语)。因此,简而言之:当某个用户登录系统时,我必须将共享安装为其主目录,但要记住该用户可以在其他计算机上登录,因此必须/etc/fstab“捕获”用户名和密码。
我希望我的问题很清楚。提前致谢。

答案1

不要尝试将登录用户的 samba 共享安装在单个可重用位置(如果您有多个用户登录,这将导致问题),请考虑安装到每个用户唯一的位置(例如/home/<username>/sambaserver,或/mnt/samba/<username>在紧要关头)

如果您使用的是 Linux,smbmount那么一个简单的用户空间 samba 安装程序应该可以满足您的需求。

创建一个像这样的小脚本:

#!/bin/sh
# Default samba server to connect to
SAMBASERVER="sambaserver"
USERNAME="$USER"

if [ -n "$1" ]
then
  # We've been given a different samba server
  SAMBASERVER="$1"
fi

if [ -n "$2" ]
then
  # We've been given a different user on the samba server to use
  USERNAME="$2"
fi

CREDSFILE="${HOME}/.${SAMBASERVER}.credentials"

# Try and make the mount point if it doesn't yet exist (and set suitable mount dir perms)
if [ ! -d "${HOME}/${SAMBASERVER}" ]
then
  mkdir "${HOME}/${SAMBASERVER}" && chmod 0555 "${HOME}/${SAMBASERVER}" || exit 1
fi

if [ ! -f "$CREDSFILE" ]
then
  echo "$CREDSFILE not found!"
  exit 1
fi

smbmount "\\${SAMBASERVER}\${USERNAME}" "${HOME}/${SAMBASERVER}" -o user="$USERNAME",credentials="$CREDSFILE" || exit 1

(未经测试 - 您可能需要调整/调试/等)

然后在每个用户的主目录中创建一个名为(例如)的凭据文件,.sambaserver.credentials并将其权限设置为 0600,由该用户拥有:

username=<samba user>
password=<samba password>

最后,在他们的 .profile 中调用上面的挂载脚本。例如:/usr/local/bin/mount-user-home.sh/usr/local/bin/mount-user-home.sh sambaserver somedifferentusername特殊情况。

这应该适用于多个 samba 服务器、多个用户以及具有多个 samba 服务器的多个用户。

答案2

您可能正在寻找自动挂载。

描述 automount 程序用于管理 autofs(内联 Linux 自动挂载器)的挂载点。 automount 通过读取 auto.master(5) 映射来工作,并为主映射中的每个条目设置挂载点,以便在访问时自动挂载它们。文件系统在一段时间不活动后会自动卸载。

因此,您可以使用固定凭据甚至 LDAP/AD 票证动态挂载特定用户目录。

固定密码文件的配置示例:

$ cat auto.homedir
* -fstype=cifs,rw,credentials=/home/&/.smbcredentials,uid=&,gid=&,file_mode=755,dir_mode=755,users,sec=ntlmssp ://nas.example.com/&

CentOS 8 上的默认配置会检查密码文件是否存在。如果没有,它将尝试使用 kerberos,

相关内容