如何在没有 sudo 权限的情况下从远程计算机挂载分区

如何在没有 sudo 权限的情况下从远程计算机挂载分区

我希望我的组中没有 sudo 权限的用户可以挂载远程计算机上的分区。假设一个用户在多台计算机上都有一个帐户,但大量数据位于某台计算机的硬盘上。

有没有办法让他在当前计算机上安装这个分区?另外,用户不应被授予任何 sudo 权限。

我可以创建一个条目,/etc/fstab以便在特定用户登录计算机时自动安装远程分区吗?

答案1

最简单的方法是使用 NFS 共享(在“服务器”机器上)和在“客户端”上使用自动挂载程序 (autofs)。

根据 Dorian 的第一条评论,我假设 NFS 已安装在服务器和客户端上。

假设要共享的分区位于 /mydata,则在服务器上的文件 /etc/exports 中添加一个条目:

/mydata     *(rw,sync,no_subtree_check)

(选项取决于您的要求)。调用后sudo exportfs -a应导出分区(使用 进行测试showmount -e)。每次重新启动服务器后都应如此。

在每个客户端上安装 autofs:

sudo apt-get install autofs

编辑文件 /etc/auto.master,从 /net 行中删除注释符号:

#
# Sample auto.master file
# This is a 'master' automounter map and it has the following format:
# mount-point [map-type[,format]:]map [options]
# For details of the format look at auto.master(5).
#
#/misc  /etc/auto.misc
#
# NOTE: mounts done from a hosts map will be mounted with the
#   "nosuid" and "nodev" options unless the "suid" and "dev"
#   options are explicitly given.
#
/net    -hosts

重新启动 autofs 服务 ( sudo service autofs restart) 后,您应该能够通过以下方式访问导出的文件系统

/net/<servername_or_ip>/<exportname>

例如,如果您的服务器名称是“myserver”,并且导出的文件系统是“/mydata”,则可以输入

ls /net/myserver/mydata

查看目录的内容。

与 /etc/fstab 中的静态条目相比,它有几个优点:

  • NFS 共享仅在访问时挂载,并且在一段时间不活动后将被卸载。这节省了大量资源和网络带宽。
  • 如果您在服务器上添加第二个共享(例如“/myotherdata”),则无需在客户端上添加任何条目。只需访问路径/net/myserver/myotherdata
  • 如果您添加具有另一个共享的第二台服务器(例如“secondserver”上的“/moredata”),则该路径将不会/net/secondserver/moredata对客户端执行任何操作
  • 如果您在服务器上安装并配置了 autofs,则可以在每个客户端上使用相同的路径 (/net/...),甚至在服务器本身上也可以使用相同的路径。

如果您不想总是进入 /net/....,只需在您的主目录中添加一个链接:

ln -s /net/myserver/mydata .

警告:

NFS 通过 UID/GID 匹配用户/组。因此,“同一”用户必须在所有计算机上具有相同的 UID,这对于组 (GID) 也同样适用。否则,访问权限将被破坏/损坏。如果您有集中式用户管理,则不会出现问题。

相关内容