25
8月
2022
16:00

CIFS和Samba:连接到一般Windows文件夹

25 8月 2022 16:00

对于工作,有必要连接从Linux到通用Windows文件夹以拾取或传输文件。 99%的组织使用运行Windows的计算机,因此您必须连接从Linux到Windows。

Linux中的Samba安装客户

sudo apt-get update
sudo apt-get install samba-client
sudo apt-get install cifs-utils

为了方便查看GUI的网络环境,文件经理 nautilus 添加 nautilus-lure 很方便

sudo apt-get install nautilus nautilus-share

使用命令行查看通用网络资源

调用Samba客户端以从命令行查看服务器资源:

1)查看为本地服务器用户网络上的一般访问提供的通用文件夹

smbclient -L //192.168.100.10 -U Username%Password

或者

smbclient -L //servername -U Username%Password

地点:192.168.100.10- IP服务器地址,SERVERNAME-服务器名称,用户名 - 本地服务器用户,密码 - 用户的密码

2)查看为一般访问域用户提供的通用文件夹

smbclient -L //192.168.100.10 -U Domain/Username%Password

或者

smbclient -L //192.168.100.10 -U Username%Password -W Domain

或用名字

smbclient -L //servername -U Username%Password -W Domain

其中域是Active Directory域的名称。

或(以免每次不报告命令参数中的密码)创建一个文件〜/.smbcredentials
带有入口数据:

username=用户名
password=密码
domain=独立服务器或域名

然后,加入网络目录:

smbclient //server/share --authentication-file=/home/vladimir/.smbcredentials 

在交互式模式下连接到公共Samba文件夹

同一件事,但没有键-L,但使用参数 - 通用文件夹的名称,在这种情况下为“共享”

smbclient //192.168.100.10/share -U Domain/Username%Password

或者

smbclient //servername/share -U Domain/Username%Password

或者

smbclient //servername/share -U Username%Password -W Domain

成功入口后,会出现邀请

smb: \>

您可以输入命令,例如帮助或DIR。 使用命令的SMBClient接口类似于FTP客户端。

使用Nautilus文件管理器连接到一般文件夹

Nautilus启动后,在窗口左侧选择 “+其他位置” ** - 查看本地网络将打开,您可以在其中查看具有通用文件夹的网络上的计算机。

解决连接的问题:摆脱错误-13访问被拒绝或nt_status_access_denied

错误: CIFS: VFS: cifs_mount failed w/return code = -13"

只能通过在服务器上设置权利来解决此错误。 要打开整体查看文件夹,您需要 三个 条件:
1)用户在服务器_il domain_的用户中指示(或允许访问类型的访客)
2)提供(不限)对文件系统的访问。
3)DAN访问特定网络文件夹 - 例如,用户包含在用户组中,并将其访问对公共文件夹。

最后的第三条件是最严格的。 服务器管理员有必要授予用户权利(将其包含在一组通用文件夹的用户中)。

最有趣的是,管理员的权利不能保证它,他将是访问通用文件夹的全部权利,因为必须将用户“管理员”包含在组中,该组被授予_danu_网络文件夹的权利。 在这方面,管理员与OTER/NOOBLE组没有差异:它将收到安装错误(13):拒绝许可,因为它不包含在网络文件夹的用户组中。

使用Mount命令

而不是 smbclient можно использовать команду mount

首先,您需要创建安装点并赋予访问文件夹的权利,例如:

sudo mkdir /mnt/cifs
sudo chmod 0777 /mnt/cifs

使用网络文件夹使用Mount团队的示例:

sudo mount -t cifs //192.168.20.222/share /mnt/cifs -o user=Vlad,pass=Str0ngPa$$word
ls  /mnt/cifs
sudo umount //192.168.20.222/share
ls  /mnt/cifs

或.smbcredientials文件的同一件事:

sudo mount -t cifs //192.168.20.222/share /mnt/cifs -o credentials=/home/vladimir/.smbcredentials

如果网络文件夹的名称包含空白(“与空格共享”),则需要如下输入:

sudo mount -t cifs //192.168.20.222/share\ with\ spaces\ in\ name /mnt/cifs -o credentials=/home/vladimir/.smbcredentials

注意: 因此,在执行_mount_命令文件夹后,它不仅可以用于阅读,而且还可以写入远程烤箱,还需要使用参数 uid = 1000,gid-1000 将远程用户与linux local用户进行比较。 其中1000将用UID和GID用户替换Linux(由命令显示 id )。
或添加到参数 - o noperm,iocharset = utf8
在钥匙键中,您可以设置我们用于连接的Samba版本。 例如,
对于SMB2: vers = 2.0 或smb3 vers = 3.0

示例:

sudo mount -t cifs //192.168.20.222/share\ with\ spaces\ in\ name /mnt/cifs -o user=username,pass=password,uid=1000,gid=1000

sudo mount -t cifs //192.168.20.222/share\ with\ spaces\ in\ name /mnt/cifs -o credentials=/home/vladimir/.smbcredentials,vers=2.0,noperm 

如果服务器不支持指定的Samba(例如,SMB3),则将显示错误 "mount error(95): Operation not supported."

当不知道远程计算机(服务器)是否打开时,添加Nofail参数很有用。

在下载期间安装网络文件夹(文件 /etc /fstab)

/etc /fstab中的行语法:

//[URL]/[sharename] /mnt/[mountpoint] cifs vers=3.0,credentials=/home/username/.sharelogin,iocharset=utf8,file_mode=0777,dir_mode=0777,uid=[username],gid=[username],nofail 0 0

在哪里:

//[URL]/[sharename] - 服务器和网络文件夹名称

/mnt/[mountpoint] - 本地计算机上的挂载点

vers=3.0 - 强制使用 SMB3 协议版本(如果客户端和服务器仅支持 SMB2,则使用 vers=2.0)

credentials=/home/username/.sharelogin - 指定用于登录的用户名、密码和域的文件

iocharset=utf8 - 直接指定 UTF-8 字符集(如果无需指定也能正常工作,则此项可选)

file_mode=0777,dir_mode=0777 - 执行 mount 操作时的访问权限

uid=[username],gid=[username] - 从命令 cat /etc/passwd | grep username 的输出中获取 uid 和 gid 数据

nofail - 即使 URL 服务器不可用,操作系统仍将继续启动。

想要使用:

defaults - 包含 rw、suid、dev、exec、auto、nouser 和 async 选项。通常放在最前面,因为你可以在后面的行中覆盖单个选项,例如:defaults, noexec, ro - 不执行,只读。

rw - 显然,表示客户端的读写权限(与 ro - 只读(写保护)相反)。

suid - 禁用 SUID(设置用户标识符)或 SGID(设置组标识符)权限位的使用。简而言之,它禁用使用 SUID 和 SGID 位传输某些权限——权限必须显式设置。

auto - 用于 /etc/fstab 文件——在执行 mount -a 命令时启用网络资源的自动挂载。

noauto - 阻止 fstab 在执行 mount -a 命令时自动挂载文件夹。

nouser - 显式禁用除 root 用户之外所有用户的手动挂载(不影响操作系统启动期间的挂载)。

guest - 用于访问无需指定用户名和密码即可通过网络访问的“guest”共享文件夹。

async - 尽可能将数据写入网络文件夹——默认值为 Default。可提高性能。

sync -不建议立即写入远程计算机(不使用缓冲区)。

noperm - 禁用客户端内置的权限检查。如果权限看似存在,但由于客户端和服务器上的 CIFS 实现不兼容,导致创建可写文件(例如通过编程方式)失败,则可以使用 noperm

noexec - 直接禁用从网络共享运行可执行文件。

noatime - 不更新文件创建时间戳(提高性能,但会降低输出详细信息)。

nounix - 禁用 Linux 扩展:不使用符号链接。用于禁用符号链接以兼容 Windows。

mfsymlinks - 用于 Minshall+French 风格符号链接的键。Windows 和 Mac 都支持这种链接风格。

fstab中的行示例(其中在 /etc/.smbcredientials文件中指示了输入数据):

//192.168.20.222/share_name rw,auto,nofail,credentials=/etc/.smbcredentials 0 0

如果在/etc/hosts或local DNS服务器中拼出了机器的名称,而不是IP地址,则可以连接一个名为:// server/share的通用文件夹。

基于FSTAB的安装团队:

sudo mount -a

除“ Noauto”参数外,所有基于 /etc /fstab的光盘都将更改。

Windows中的简短桑巴amba设置(协议SMB1,SMB2,SMB3)

Samba协议具有三个版本1、2和3。
如果组织具有用于Windows XP的汽车,则包括SMB1协议。 在其他情况下,他们试图将SMB1视为不安全。

Windows 7和Windows Server 2008R2的打开和关闭是使用注册表制作的
hkey_local_machine \ system \ currentcontrolset \ services \ lanmanserver \ parameters
DWORD类型参数
SMB1 = 0
SMB2 = 1

在Windows 8中,Windows 10,11,Windows Server 2012,2016及更高版本使用PowerShell命令

Get-SmbserverConfiguration | SELECT启用MB1 -Protocol,ensublesmb2protocol

SET -SMBSERVERCONFIGURATION -EnablesMB2 -Protocol $ true

这些指挥官在Windows 7和Windows Server 2008R2的早期版本中不起作用。
另外,SMB3在Win7中不起作用 - 有关更多详细信息,请参见。这是winitpro.ru


链接:



相关出版物