![在网络共享 (samba) 中进行身份验证,无需明确挂载](https://linux22.com/image/847956/%E5%9C%A8%E7%BD%91%E7%BB%9C%E5%85%B1%E4%BA%AB%20(samba)%20%E4%B8%AD%E8%BF%9B%E8%A1%8C%E8%BA%AB%E4%BB%BD%E9%AA%8C%E8%AF%81%EF%BC%8C%E6%97%A0%E9%9C%80%E6%98%8E%E7%A1%AE%E6%8C%82%E8%BD%BD.png)
我有这段代码,其中我必须访问大量的目录,其中一些是网络共享,寻找特定的文件。
在 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 中指示的本地用户和组的所有权之下。