如何在Linux上安装SMB分享

时间:2020-03-05 15:27:39  来源:igfitidea点击:

SMB是基于Windows的计算机使用的协议,用于在网络上共享对资源的访问权限。
要安装SMB Share,Linux内核现在支持默认支持SMB3(默认要求SMB3.1.1/SMB3.02/SMB3/SMB2.1方言)。

CIFS是服务器消息块(SMB)协议的特定实现。
CIFS是SMB的方言。

CIFS-utils提供用户空间工具,用于在Linux上安装SMB/CIFS共享。
在本教程中,将介绍如何在Linux上安装SMB股票。

在Linux上安装CIFS-Util

安装SMB/CIFS共享我们需要在Linux上安装CIFS Utils包。

运行以下命令以在Ubuntu和Debian上安装CIFS-Util:

$sudo apt update
$sudo apt install cifs-utils

要在RHEL,CentOS或者Fedora上安装CIFS-Util,请键入以下命令:

$sudo yum install cifs-utils

对于Fedora28及以上使用DNF包来安装CIFS-Utils:

$sudo dnf install cifs-utils

使用CIFS安装SMB份额

在本节中,教程将向我们展示在Linux系统上使用CIF安装SMB共享的方法。

使用"CIFS"选项的Mount命令选项,可以将SMB共享安装在安装点上。
在以下示例中,我们使用SMB 1协议使用"-o VERS = 1.0"选项来安装共享:

$sudo mount -t cifs -o vers=1.0,username=user_name //server_name/share_name /mnt/data

默认情况下,Linux内核使用操作系统支持的最新SMB协议版本。
在以下命令中,我们将在不传递'vers ='选项的情况下安装smb共享:

$sudo mount -t cifs -o username=user_name //server_name/share_name /mnt/data

如果用户位于Windows域中,请将域指定为以下命令:

$sudo mount -t cifs -o username=DOMAIN\Administrator,seal,vers=3.0 //server_name/share_name /mnt/data

默认情况下,Linux安装Windows共享与完整权限(RWX或者777)。

如果要自己更改权限,请使用dir_mode和file_mode选项来设置目录和文件的权限。

$sudo mount -t cifs -o credentials=/etc/credentials,dir_mode=0755,file_mode=0755 //server_name/<share_name> /mnt/data

我们还可以通过指定UID(用户ID)和GID(组ID)选项来更改用户和组的默认所有权。

$sudo mount -t cifs -o credentials=/etc/credentials,uid=500,gid=500,dir_mode=0755,file_mode=0755 //server_name/share_name /mnt/data

使用smbmount安装smb份额

smbmount命令用于安装Linux SMB文件系统。
虽然它被弃用,但不再维护,仍然可以通过运行以下命令来使用smbmount来安装smb共享:

smbmount //Hostname/Username /local/mountpoint -o username=username,password=password,lfs

此处启用LFS(大文件系统)选项已启用NAS Samba份额。
从NAS存储复制大文件时,这将避免错误。

# smbmount //nastorage.theitroad.com/oracleshare /oraclefiles -o username=LOGINNAME,password=LOGINPASSWORD,lfs

使用smbclient连接SMB共享

默认情况下,此包不会包含在大多数Linux发行版中,因此我们需要将其与本地包管理器安装。

在Debian和Ubuntu服务器上使用以下命令安装SMBClient:

  • sudo apt-get更新
  • sudo apt-get安装smbclient

SMBClient是一个客户程序,它是Samba套件的一部分,它像FTP程序一样。
我们可以连接到共享,使用Get并放置命令传输文件。

$sudo smbclient //192.168.1.100/myshare -U aloft
Password:
Domain=[LOCALHOST] OS=[Unix] Server=[Samba 3.0.23c-2]
smb: \>

如何列出SMB分享

smbclient命令也可以用于列出远程Samba服务器上的共享SMB资源。

使用以下smbclient -l命令在远程服务器'192.168.1.100'上显示共享SMB资源:

$sudo smbclient -L 192.168.1.100
Password:
Domain=[LOCALHOST] OS=[Unix] Server=[Samba 3.0.23c-2]
Sharename Type Comment
--------- ---- ------
myshare Disk Mary's and Fred's stuff
IPC$IPC IPC Service (Samba Server)
root Disk Home Directories
Domain=[LOCALHOST] OS=[Unix] Server=[Samba 3.0.23c-2]
Server Comment
--------- ------
Workgroup Master
--------- ------
MYGROUP

fstab条目登录smb

FSTAB条目确保寄存器持久在重新引导中。
以下示例显示SMB共享的FSTAB条目:

$sudo cat /etc/fstab
LABEL=/1/ext3 defaults 1 1
LABEL=SWAP-sda2 swap swap defaults 0 0
//192.168.1.100/myshare /smbdata cifs user,uid=500,rw,suid, username=aloft,password=aloft123 0 0

其中本地用户(UID = 500)将成为已安装文件的所有者。
以类似的方式,我们可以指定凭据,例如UID = UID号或者帐户/用户或者组的名称。

/etc/fstab是可读的,所以它显然不会有一个好主意。
通过使用称为凭据文件的内容来解决此问题的方法。

//servername/sharename /mountdirectory smbfs credentials=/home/myhomedirectory/.smbpasswd 0 0

echo命令下面可用于创建凭据文件:

$sudo echo username=mywindowsusername > .smbpasswd
$sudo echo password=mywindowspassword >> .smbpasswd

修改文件的权限,只有我们有权读取和写入它。

$sudo chmod 600 .smbpasswd