在网络共享 (samba) 中进行身份验证,无需明确挂载

在网络共享 (samba) 中进行身份验证,无需明确挂载

我有这段代码,其中我必须访问大量的目录,其中一些是网络共享,寻找特定的文件。

在 Windows 中,我只需执行“net use //server/share /user:用户名密码”即可!我可以像在本地机器上一样进入目录。

我如何在 Linux 中执行相同操作?我知道我可以将共享安装到我机器上的特定文件夹,但这意味着要管理很多目录,我真的想避免这种情况。就像我在 Windows 中执行的操作一样。

提前致谢!

答案1

安装 smbfs:

sudo apt-get install smbfs

或者您也可以使用 cifs-utils:

sudo apt-get install cifs-utils

两者都可以工作,它们是两个实现 Windows 共享的不同程序。我已按照以下步骤成功使用了 smbfs,但尚未在 cifs 上测试过。

如果你只想要临时安装,对于 smbfs,命令将是(全部一行):

mount -t smbfs //server/share /mountdirectory -o username=share_user_name,password=share_password

如果您选择使用 cifs-utils,请在此命令中将 smbfs 替换为 cifs。

如果您希望这些共享在启动时自动挂载:

在安全的地方创建一个凭证文件,将其命名为.smbcredentials,并为其提供以下内容:

username=share_username
password=share_password

为了保护此文件:

sudo chown root .smbcredentials
sudo chmod 600 .smbcredentials

将此行添加到/etc/fstab(全部在一行上):

//server/share /mountdirectory smbfs credentials=/path/to/.smbcredentials,uid=USERSID,gid=USERSGROUPID 0 0

或者如果使用 CIFS(同样,所有内容都在一行上):

//server/share /mnt/mountdirectory cifs iocharset=utf8,credentials=/home/whoever/.smbcredentials,dir_mode=0775,uid=USERID,gid=USERGROUPID 0 0

此处的 USERID 是您希望拥有挂载文件夹所有权的用户的 ID,USERGROUPID 是该用户的组 ID。这些可以在 /etc/passwd 和 /etc/group 中找到。

如果您在 /etc/fstab 文件中添加了其中一行,则现在就可以挂载共享:

sudo mount -a

现在您应该看到这些共享已安装在您在 USERID 和 USERGROUP 中指示的本地用户和组的所有权之下。

相关内容