我想在本地网络上的 PC 之间共享文件夹,这些 PC 可能安装了不同的 Linux(或从 USB 密钥启动)。因此,我不是想要依靠给定文件管理器的共享功能(如nautilus
),因为网络上的一些 PC 可能有给定的文件管理器 - 有些可能没有!
本地网络上的一些 PC 的键盘可能坏了,只有鼠标可用——使用鼠标在虚拟键盘上输入所有需要的命令会非常繁琐。
我知道system-config-nfs
Fedora有CentOS / Redhat:设置 NFS v4.0 文件服务器(cyberciti.biz)):
... 但:
- 这似乎只涵盖服务器设置——我还想设置客户端
- 我经常使用 Ubuntu,但它似乎并不
system-config-nfs
存在于 Ubuntu 存储库中(但不确定 Debian 存储库中是否存在兼容的软件包)
如果system-config-nfs
无法配置客户端,还有其他方法可以通过 GUI 管理多台机器上的 NFS 服务器和客户端配置 - 而无需从命令行单独连接每台机器?
答案1
好吧,我确实找到了一个工具,它为服务器和客户端 NFS 设置提供了 GUI,它是网页管理,一个“基于 Web 的 Unix 系统管理界面”。以下是一些可点击的屏幕截图:
服务器设置 GUI 屏幕截图
(s0) (第1部分) (第 2a 条) (第 2b 条) (第3节)
客户端设置 GUI 屏幕截图
然而:
- 由于它基于 Web,因此要求客户端和服务器计算机上都安装支持 JavaScript(和 SSL)的浏览器
- 作为系统管理工具,它包含的选项远不止 NFS 设置,因此很难立即了解它
另外,请注意,我对 NFS 了解不够,无法设置适当的安全性,这就是为什么我的目标是快速为没有安全性的本地网络设置共享;完成一项工作;然后同样快速地拆除 NFS 共享。这个和上述两个原因是我希望能够找到一个更简单的 GUI(例如用 Python/Tkinter 编写,仅适用于 NFS);但至少webmin
提供两个都服务器和客户端 GUI 设置,这对我来说是最重要的(因此我尽可能地避免处理 NFS 内部问题)。
我已经在 Ubuntu 11.04 PC(正确安装)上进行了测试,将其作为服务器,并在 Ubuntu 12.04 PC(基于 Mini Remix ISO 的实时映像)上进行了测试,将其作为客户端;除了安装webmin
和依赖项并不简单之外,使用它来设置 NFS 也并不简单。这就是为什么我会冒昧地以某种教程格式在此处发布我的笔记的原因 - 希望这样没问题。
首先,用法。请注意,在 NFS ( webmin
?) 用语中:
- 网络上共享文件夹的 PC 是服务器,其共享文件夹称为“NFS 导出“
- 对于 NFS 4,所有导出的文件夹都将设置在一个(或多个)“NFSv4 伪文件系统”根目录下
- 访问网络共享文件夹的 PC 是客户,并且访问的网络文件夹称为“NFS 共享“
服务器 NFS 共享设置
- 创建要共享的目录,例如
/tmp/sharetest
- 在
webmin
,访问https://127.0.0.1:10000
,并使用 sudoer 帐户登录 - 登录后,展开左侧框架中的“网络”节点(需要 JavaScript)(s0),然后单击“网络”/“NFS 导出”(s1)
- 在随后的“NFS 导出”页面上,单击“添加新导出”(s1)
- 在下一页“创建导出”中,保留“NFS 版本”为 4,然后单击
...
“要导出的目录”字段中的按钮,然后导航到(双击) - 并选择 - 目录/tmp/sharetest
(s2a) - 返回“创建导出”页面,您可能需要将“只读?”设置为“否”,否则保留默认设置 - 最后单击“创建”按钮(s2b)
- “NFS Exports”页面再次显示,其中有两个新条目,
/export
并且/export/sharetest
(s3) - 请注意,这
/export
是一个自动创建的“NFSv4 伪文件系统”根- 如果创建额外的 NFS 导出,他们可以使用这个伪文件系统根目录 - 或者请求创建一个新的
请注意,如果您想编辑 NFS 导出,NFS v4 的 GUI 行为可能会有缺陷 - 为此我已经提交了一个错误:Webmin / Bug / #4286 NFS v4 导出在编辑后不会保留为 v4 - 它们会恢复为 v3;并且缺少 NFS 版本帮助。此处对 NFS 导出所做的更改反映在文件中/etc/exports
。请注意,将“只读?”(这是rw
中的选项/etc/exports
)设置为“否”是不是足以允许客户端在目录中写入 - 您必须还使用(参见参考文献[3])使/tmp/sharetest
世界可写chmod 777
;还要注意,客户端写入的文件将保留写入者的uid - 您应该检查这是否会给您带来问题。
客户端 NFS 共享设置
- 创建将映射到网络共享的本地目录,例如
/tmp/nfsshare
- 在
webmin
,访问https://127.0.0.1:10000
,并使用 sudoer 帐户登录 - 登录后,展开左侧框架中的“系统”节点(需要 JavaScript)(c0),然后单击“系统”/“磁盘和网络文件系统”(c1)
- 在随后的“磁盘和网络文件系统”页面上,从下拉菜单中选择“网络文件系统 v4 (nfs4)”,然后单击“添加挂载”按钮 (c1)
- 在下一页“创建挂载”中,单击“NFS 主机名”文本字段旁边的“...”按钮(最初显示“挂载”)(c2a:1)
- 将弹出一个新窗口“选择 NFS 服务器”;如果 NFS 服务器正在运行,则应该自动检测到它 - 因此单击“IP 地址”列 (c2a:2) 下的链接,它将使用相应的“主机名”填充“NFS 主机名”文本字段;然后关闭弹出窗口
- 返回“创建挂载”页面,单击“NFS 目录”文本字段旁边的“...”按钮(c2a:3)
- 将会弹出一个新窗口“选择 NFS 目录”;应该列出导出内容 - 但请注意“对于 NFSv4 挂载,您应该选择‘/’” - 因此单击
/
“目录”列 (c2a:4) 下的链接,它将使用相应的“目录”填充“NFS 目录”文本字段 - 或者只是关闭弹出窗口以保持默认设置/
不变 - 返回“创建挂载”页面,单击“挂载为”文本字段旁边的“...”按钮(c2a:5)
- 将弹出一个新窗口“选择目录”;导航到并选择
/tmp/nfsshare
目录,然后单击“确定”(c2a:6) - 返回“创建挂载”页面,您可能需要将“只读?”设置为“否”,否则保留默认设置 - 最后单击“创建”按钮(c2b)
- 返回“磁盘和网络文件系统”后,您应该会看到表中列出的新共享(c3)
- 要检查一切是否正常,您可以尝试列出
/tmp/nfsshare
目录 (c3) - 或写入/tmp/nfsshare/sharetest
目录
请注意,如果您在客户端仍在运行时意外关闭了 NFS 服务器,则可能会留下“悬空”共享;在这种情况下,该命令sudo umount -lf ...
似乎有所帮助:
ubuntu@Client:~$ mount
...
Server-eth0:/export/sharetest on /tmp/nfsshare type nfs (rw,addr=192.168.1.42)
Server-eth0:/export/sharetest on /tmp/.webmin/402201_1_save_mount.cgi type nfs (rw,vers=4,addr=192.168.1.42,clientaddr=192.168.1.77)
rpc_pipefs on /run/rpc_pipefs type rpc_pipefs (rw)
Server-eth0:/export/sharetest on /tmp/.webmin/303774_1_save_mount.cgi type nfs (rw,vers=4,addr=192.168.1.42,clientaddr=192.168.1.77)
ubuntu@Client:~$ sudo umount -lf /tmp/.webmin/402201_1_save_mount.cgi
ubuntu@Client:~$ sudo umount -lf /tmp/.webmin/303774_1_save_mount.cgi
ubuntu@Client:~$ mount
...
Server-eth0:/export/sharetest on /tmp/nfsshare type nfs (rw,addr=192.168.1.42)
webmin
在服务器上安装(Ubuntu 11.04 正确安装)
suser@Server:tmp$ sudo apt-get install nfs-kernel-server # also pulls nfs-common
suser@Server:tmp$ sudo apt-get install libauthen-pam-perl libio-pty-perl libnet-ssleay-perl
suser@Server:tmp$ wget http://prdownloads.sourceforge.net/webadmin/webmin_1.580_all.deb
suser@Server:tmp$ sudo dpkg -i webmin_1.580_all.deb
停止服务
sudo service nfs-kernel-server stop # also clears /etc/exports
sudo service idmapd stop
sudo service portmap stop
sudo service webmin stop # also: sudo /etc/webmin/stop
卸载
sudo apt-get remove --purge nfs-kernel-server libauthen-pam-perl libio-pty-perl libnet-ssleay-perl && sudo apt-get autoremove --purge
# sudo dpkg -r webmin # not needed; the previous command should remove webmin by dependency
webmin
在客户端上安装(Ubuntu 12.04 live 映像)
ubuntu@Client:~$ sudo nano /ets/apt/sources.list # uncomment `universe` repositories, and save
ubuntu@Client:~$ sudo apt-get update
ubuntu@Client:~$ sudo apt-get install nfs-common # "initctl: Unknown job: portmap / statd / gssd / idmapd" here
ubuntu@Client:~$ sudo initctl reload-configuration
ubuntu@Client:~$ sudo apt-get install --reinstall rpcbind nfs-common # now "portmap ... idmapd start/running,"
ubuntu@Client:~$ sudo apt-get install libauthen-pam-perl libio-pty-perl libnet-ssleay-perl
ubuntu@Client:~$ wget http://prdownloads.sourceforge.net/webadmin/webmin_1.580_all.deb
ubuntu@Client:~$ sudo dpkg -i webmin_1.580_all.deb
停止服务
sudo service idmapd stop
sudo service portmap stop
sudo service webmin stop # also: sudo /etc/webmin/stop
卸载
sudo apt-get remove --purge nfs-common libauthen-pam-perl libio-pty-perl libnet-ssleay-perl && sudo apt-get autoremove --purge
# sudo dpkg -r webmin # not needed; the previous command should remove webmin by dependency
安装说明:
webmin
在 Ubuntu 存储库中不可用;可以通过.deb
webmin 站点上的包 进行安装- 下载较旧的 .deb 文件(如这里)不是问题,因为 webmin 允许直接从其 Web 界面进行更新
- 几乎所有
webmin
依赖项都可以在 Ubuntumain
存储库中找到,除了libauthen-pam-perl
,它位于universe
存储库中 - Ubuntu Live 镜像有
universe
存储库默认禁用;因此必须首先通过取消注释相应的条目来启用它们/etc/apt/sources.list
,然后是sudo apt-get update
(否则E: Unable to locate package libauthen-pam-perl
/E: Package 'libauthen-pam-perl' has no installation candidate
发生) - Ubuntu live 镜像显然“没有自动重新扫描 /etc/init 目录”(参考 [1]),因此需要手动调用
initctl reload-configuration
(否则initctl: Unknown job: portmap
发生)initclt
需要用sudo
(否则initctl: Rejected send message, 1 matched rules; ...
发生)
- 安装后
nfs-common
,服务portmap
在 11.04 和 12.04 上都存在 ,- ...但是,11.04 有一个包裹调用
portmap
- 而 12.04 用包替换它rpcbind
(消息Note, selecting 'rpcbind' instead of 'portmap'
发生) nfs-common
在旧版 Ubuntu 中,所谓的服务现在(显然)被称为idmapd
(参考 [2])
- ...但是,11.04 有一个包裹调用
- 没有
nfs
在任何地方安装任何服务(可能在较旧的教程中找到)——无论是在服务器上还是在客户端上 libio-pty-perl
如果您已经安装了例如,则可能已经存在于您的系统中moreutils
;如果是这样,请注意不要在上面的卸载命令中引用它(其他依赖项也是如此)
参考:
答案2
好的,通过[gnome] Nautilus NFS 集成我发现nfs-lan
(http://nfs-lan.sevka.info/);这是我在 Ubuntu 14.04.5 LTS(带有 Gnome 3)上安装它的操作:
sudo apt-get install gir1.2-nautilus-3.0
sudo apt-get install python-nautilus nfs-kernel-server autofs
# wget "http://nfs-lan.sevka.info/downloads/nfs_lan-1.0.deb?attredirects=0&d=1"
sudo dpkg -i ~/Desktop/nfs_lan-1.0.deb
...然后,配置:
sudo nano /etc/auto.master
# add: /net -hosts --timeout=60
# then save file, exit
sudo service autofs restart
现在,要在 Nautilus 中浏览,您必须先键入/
以打开地址栏,然后键入net/
- 然后按回车键,您就可以浏览 NFS 网络:
否则,为了共享,Nautilus 文件夹将有一个右键单击选项: