在Ubuntu 22.04上使用NFS和CIFS

在Ubuntu 22.04上使用NFS(Network File System)进行挂载,你可以按照以下步骤操作:

服务器端配置

  1. 安装NFS服务器
    首先,你需要在Ubuntu服务器上安装NFS服务器。打开终端并输入以下命令:

    bash复制代码

    sudo apt update 
    sudo apt install nfs-kernel-server

    如果系统提示需要更新,请先执行sudo apt update

  2. 创建共享目录
    创建一个你想要共享的目录。例如,在/home/username/nfsdir下创建一个目录:

    sudo mkdir -p /home/username/nfsdir

    请将username替换为你的用户名。

  3. 配置NFS
    打开NFS的配置文件/etc/exports。你可以使用任何文本编辑器,如vimgedit。这里以vim为例:

    sudo vim /etc/exports

    在文件末尾添加一行来定义你的共享目录和访问权限。例如:

    /home/username/nfsdir *(rw,sync,no_root_squash)

    这表示/home/username/nfsdir目录对所有客户端都是可读写的(rw),数据是同步写入的(sync),并且NFS客户端上的root用户具有与服务器上的root用户相同的权限(no_root_squash)。

    注意:如果你只想允许特定的IP地址或网络段访问,你可以替换*为相应的IP地址或CIDR表示法。

  4. 重启NFS服务
    保存并关闭/etc/exports文件后,重启NFS服务以使更改生效:

    sudo systemctl restart nfs-kernel-server

客户端配置

  1. 安装NFS客户端(如果尚未安装):
    在Ubuntu客户端上,你可能需要安装NFS客户端工具。不过,这些工具通常作为NFS服务器包的一部分一起安装。如果没有,你可以使用以下命令安装:

    sudo apt install nfs-common

  2. 挂载NFS共享
    现在你可以在Ubuntu客户端上挂载NFS共享了。使用mount命令并指定服务器地址、共享目录和本地挂载点。例如:

    sudo mount -t nfs server_ip:/home/username/nfsdir /mnt/nfs

    请将server_ip替换为你的NFS服务器IP地址,/mnt/nfs替换为你想要挂载到的本地目录(如果目录不存在,需要先创建它)。

  3. 验证挂载
    使用df -h命令来查看已挂载的文件系统,确认NFS共享已成功挂载:

    df -h

    你应该能在输出中看到类似于server_ip:/home/username/nfsdir的条目。

现在,你的Ubuntu客户端应该能够像访问本地文件系统一样访问NFS共享了。

如果出现报错mount.nfs: access denied by server while mounting

当您遇到 mount.nfs: access denied by server while mounting  错误时,这通常意味着NFS服务器拒绝了客户端的挂载请求。以下是几个可能的解决方案:

  1. 检查NFS导出配置
    • 确保NFS服务器的 /etc/exports 文件中包含了对应的导出目录和允许访问的客户端IP或子网。例如:
      /yww_nfs_ssd 172.26.111.0/24(rw,sync,no_root_squash)
    • 如果您使用的是NFSv4,请确保您使用的是正确的访问控制机制(如sec=syssec=krb5等)。
    • 导出目录的权限也需要是适当的,以便NFS服务可以访问它们。
  2. 重新加载NFS导出
    • 在NFS服务器上,每次更改 /etc/exports 文件后,您都需要重新加载NFS配置。可以使用以下命令:
      sudo exportfs -ra
  3. 检查NFS服务状态
    • 确保NFS服务正在运行。在大多数Linux发行版中,可以使用以下命令检查:
      sudo systemctl status nfs-server
    • 如果NFS服务没有运行,请使用以下命令启动它:
      sudo systemctl start nfs-server
  4. 检查防火墙设置
    • 确保NFS服务器和客户端的防火墙都允许NFS相关的端口。NFS通常使用111端口(rpcbind/portmapper)和一系列动态分配的端口。
    • 如果您使用的是云服务提供商的安全组或VPC设置,请确保这些设置允许NFS通信。
  5. 检查NFS版本和挂载选项
    • 如果您的NFS服务器和客户端使用的NFS版本不同,可能会出现兼容性问题。请确保它们使用相同的NFS版本(通常是NFSv3或NFSv4)。
    • 使用正确的挂载选项。例如,如果您使用的是NFSv4,您可能需要指定 sec=sys 或其他安全选项。
  6. 检查NFS客户端ID映射
    • 如果您使用的是NFSv4并且遇到了ID映射问题,请确保NFS服务器和客户端都正确配置了ID映射。
  7. 查看日志
    • 在NFS服务器和客户端上查看系统日志,以获取更多关于为什么访问被拒绝的信息。在大多数Linux系统上,您可以使用 dmesgjournalctl 或直接查看 /var/log/ 目录下的日志文件。
  8. 测试NFS连接
    • 在客户端上,使用 showmount -e 172.26.111.1 命令来查看NFS服务器上的导出列表。这可以帮助您验证NFS服务器是否可访问以及是否列出了您尝试挂载的目录。

在Ubuntu 22.04中使用CIFS挂载共享文件夹,你可以按照以下步骤操作:

  1. 安装cifs-utils软件包
    首先,你需要安装cifs-utils软件包,该软件包包含CIFS挂载工具。在终端中执行以下命令进行安装:

    sudo apt update 
    sudo apt install cifs-utils

  2. 创建本地挂载点
    你需要在Ubuntu上创建一个本地目录,用于挂载共享文件夹。你可以在任何位置创建这个目录,但通常建议选择一个容易访问的位置。例如,在/mnt目录下创建一个名为share的目录:

    sudo mkdir /mnt/share

  3. 挂载共享文件夹
    使用mount命令来挂载共享文件夹。你需要提供共享服务器的IP地址、共享名称、本地挂载点以及你的用户名和密码。以下是一个示例命令的基本结构:

    sudo mount -t cifs //共享服务器IP地址/共享名称 /本地挂载点 -o 用户名=你的用户名,密码=你的密码,iocharset=utf8,sec=ntlm
    

    将命令中的共享服务器IP地址共享名称本地挂载点你的用户名你的密码替换为实际的值。例如:

    sudo mount -t cifs //192.168.1.100/myshare /mnt/share -o username=myuser,password=mypassword,iocharset=utf8,sec=ntlm

    输入你的用户密码以确认挂载操作。如果成功,你将能够在/mnt/share目录下访问共享文件夹的内容。

  4. (可选)自动挂载
    如果你希望在系统启动时自动挂载共享文件夹,可以编辑/etc/fstab文件并添加相应的条目。但是,请注意,将密码明文存储在/etc/fstab中可能存在安全风险。因此,建议仅在了解风险并接受其后果的情况下使用此方法。

    如果你选择使用/etc/fstab进行自动挂载,并希望避免在文件中明文存储密码,你可以考虑使用其他方法(如密钥环或凭证助手)来安全地存储和管理凭据。

完成上述步骤后,你就应该能够在Ubuntu 22.04上成功使用CIFS挂载共享文件夹了。

如果出现如下错误

mount error(22): Invalid argument
Refer to the mount.cifs(8) manual page (e.g. man mount.cifs) and kernel log messages (dmesg)

使用命令

tail -f /var/log/kern.log

 

这个错误消息是在警告你,使用SMB/CIFS协议的不太安全的版本(vers=1.0)通常是不被推荐的,除非你需要访问非常旧的服务器。SMB 1.0(也被称为CIFS 1.0)由于存在一些已知的安全漏洞,因此在许多现代环境中已经被禁用或不再推荐使用。

如果你确实需要访问一个只支持SMB 1.0的服务器,并且没有其他选择,你可以继续使用这个版本,但你应该非常清楚你正在承担的安全风险。

然而,如果可能的话,你应该尝试以下步骤来解决问题:

  1. 更新服务器:如果可能的话,尝试更新SMB服务器到支持更安全的SMB版本(如SMB 2.0、SMB 2.1、SMB 3.0等)。

  2. 使用更安全的SMB版本:在挂载命令中指定一个更安全的SMB版本。例如,使用vers=2.0vers=3.0(取决于服务器支持的版本)。

    sudo mount -t cifs //server-ip/share-name /mnt/cifs-share -o username=your-username,password=your-password,vers=3.0

    注意:在上面的命令中,我移除了sec=ntlm或类似的参数,因为当你指定一个较新的SMB版本时,通常不需要明确指定安全选项,除非服务器有特殊需求。

当你看到错误消息 "CIFS: VFS: bad security option: ntlm" 时,这通常意味着你尝试在挂载CIFS共享时使用了不被支持的安全选项ntlm。虽然NTLM曾经是一个常见的SMB认证协议,但随着时间的推移,它被认为是不够安全的,并且在现代Linux发行版中,默认可能不再支持或推荐使用。

要解决这个问题,你可以尝试以下几种方法:

  1. 使用ntlmv2ntlmssp
    尝试使用NTLMv2或NTLM Session Security Package(ntlmssp)代替NTLM。这些是NTLM的更新和更安全的版本。

    例如:

    sudo mount -t cifs //server-ip/share-name /mnt/cifs-share -o username=your-username,password=your-password,vers=3.0,sec=ntlmv2

    或者

    sudo mount -t cifs //server-ip/share-name /mnt/cifs-share -o username=your-username,password=your-password,vers=3.0,sec=ntlmssp
  2. 检查服务器配置
    确保SMB服务器支持你想要使用的安全选项。如果服务器只支持NTLM,并且你的Linux发行版不再支持NTLM,你可能需要更新服务器配置以使用更新的认证方法。

  3. 查看mount.cifs文档
    使用man mount.cifs命令查看mount.cifs的文档,了解可用的安全选项和其他挂载选项。

  • 21
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

雨会停rain

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值