我希望我的组中没有 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) 也同样适用。否则,访问权限将被破坏/损坏。如果您有集中式用户管理,则不会出现问题。