• CentOS7-1810 系统Samba配置说明


    Samba是在Linux和UNIX系统上实现SMB协议的一个免费软件。SMB(Server Messages Block,信息服务块)通信协议是微软(Microsoft)和英特尔(Intel)在1987年制定的协议,主要是作为Microsoft网络的通讯协议,是一种在局域网上共享文件和打印机的一种通信协议,它为局域网内的不同计算机之间提供文件及打印机等资源的共享服务。SMB协议是客户机/服务器型协议,客户机通过该协议可以访问服务器上的共享文件系统、打印机及其他资源。通过设置“NetBIOS over TCP/IP”使得Samba不但能与局域网络主机分享资源,还能与全世界的电脑分享资源。后来微软又把 SMB 改名为 CIFS(Common Internet File System),即公共 Internet 文件系统,并且加入了许多新的功能。

    Samba最大的功能就是可以用于Linux与windows系统直接的文件共享和打印共享,Samba既可以用于windows与Linux之间的文件共享,也可以用于Linux与Linux之间的资源共享,由于NFS(网络文件系统)可以很好的完成Linux与Linux之间的数据共享,因而 Samba较多的用在了Linux与windows之间的数据共享上面。

    NFS针对 Unix-Like系统的机器间文件的共享;
     
    CIFS针对windows系统间文件的共享;
     
    SAMBA针对Unix-Like系统和windows系统间文件的共享;

    因为SMB协议是基于客户机/服务器型的协议,所以一台Samba服务器既可以充当文件共享服务器,也可以充当一个Samba的客户端,例如,一台在Linux 下已经架设好的Samba服务器,windows客户端就可以通过SMB协议共享Samba服务器上的资源文件,同时,Samba服务器也可以访问网络中 其它windows系统或者Linux系统共享出来的文件。

    在早期,SMB运行于NBT协议(NetBIOS over TCP/IP)上,使用UDP协议的137、138及TCP协议的139端口,后期SMB经过开发,可以直接运行于TCP/IP协议上,没有额外的NBT层,使用TCP协议的445端口。如果你要使用Linux和早期的windows系统共享文件,请确认你的windows系统下是否安装了NetBIOS协议。
    NetBios, NetBios over TCP/IP, SMB 之间的关系可以查看这个网址https://www.cnblogs.com/pipci/p/10144840.html

    Samba是一套程序,其中最重要的两个进程是nmbd和smbd:

    smb:提供SMB / CIFS服务(文件共享和打印)的守护进程,使用SMB协议与客户进行连接,完成用户认证,权限管理和文件共享任务。
    nmb:提供NetBIOS名称服务的守护进程,可以帮助客户端定位服务器和域,相当于WindowsNT中的WINS服务器,如果只是单纯的共享文件可以关闭这个服务,这样就不用在防火墙中开发137、138端口,但是在Windows中“桌面”上的“网络”里不会在显示共享的主机,只能通过“运行” 打开 \IP 的方式连接到共享的目录。


    SAMBA所需的软件:

    1、samba:这个软件主要包含了SAMBA的主要服务程序(smbd及nmbd),SAMBA相关的文件,以及其它与SAMBA相关的logrotate配置文件及开机默认选项文件等。

    2、samba-common:这个软件主要提供了SAMBA的主要配置文件(smb.conf),smb.conf语法检验的测试程序(testparm)等。

    3、samba-client:这个软件则提供了当Linux做为SAMBA Client端时,所需要的工具指令,例如Smbmount命令用于Linux下挂载Windows共享文件等。


    一、samba相关软件安装
    -----------------------------------------------------------------------
    [root@CentOS7 ~]# yum install samba     #同时会一起把samba-common软件一起安装

    [root@CentOS7 ~]# yum install samba-client
    -----------------------------------------------------------------------

    二、查看nmb和smb服务的状态,并设置开机启动

    1、查看服务状态,如果没有启动启动他
    ------------------------------------------------------
    [root@CentOS7 ~]# systemctl status smb.service             #查看
    [root@CentOS7 ~]# systemctl status nmb.service

    [root@CentOS7 ~]# systemctl start smb.service              #启动
    [root@CentOS7 ~]# systemctl start nmb.service
    ------------------------------------------------------

    2、设置服务器开机启动
    ------------------------------------------------------
    [root@CentOS7 ~]# systemctl enable smb.service
    [root@CentOS7 ~]# systemctl enable nmb.service
    ------------------------------------------------------

    三、Samba服务器配置

    在安装了Samba服务软件后,会自动在Linux系统中生成一系列的配置文件,了解它们的用途是配置Samba服务器所必须的。

    1、主要配置文件 /etc/Samba/smb.conf
    这是Samba服务的主配置文件,文件由一系列段和选项构成.一个段由一对方括号中的段名开始,直到下一个段名结束,主要由全局设置(Global Settings)和共享定义(Share Definitions)两部分组成。其中全局设置定义了对影响整个Samba系统运行的全局选项,用于设置整个系统的规则,如果在其他段中没有再对这些选项进行重新设置的话,就以全局选项为主:共享定义则是对系统中共享资源进行定义,该部分可以由多个段组成,其中常见的包括:用户主目录段,共享目录和打印机段,每个段中可以再定义详细的共享选项。smb.conf文件的格式如下所示:
    ----------------------------------------------------------------------------

    #======================= Global Settings =======================

    [global]      #全局选项  

    #======================= Share Definitions =======================

    [homes]       #共享选项
       
    [printers]    #共享选项
     
    -----------------------------------------------------------------------------
    smb.conf配置文件中使用;号和#号作为注释符,凡是使用这两个符号开头的行都会被Samba视为注释行而忽略处理,这个配置文件中,大小写是没关系的,因为Windows不分大小写。配置文件中选项的格式如下所示。
    -------------------------
    选项名称 = 选项值
    -------------------------
    四、常用的全局选项及说明如下所示

    先说一下samba定义的变量:
    %S = 当前服务名(如果有的话)
    %P = 当前服务的根目录(如果有的话)
    %u = 当前服务的用户名(如果有的话)
    %g = 当前用户说在的主工作组
    %U = 当前对话的用户名
    %G = 当前对话的用户的主工作组
    %H = 当前服务的用户的Home目录
    %v = Samba服务的版本号。
    %h = 运行Samba服务机器的主机名
    %m = 客户机的NETBIOS名称
    %L = 服务器的NETBIOS名称
    %M = 客户机的主机名
    %N = NIS服务器名
    %p = NIS服务的Home目录
    %R = 说采用的协议等级(值可以是CORE, COREPLUS, LANMAN1, LANMAN2,NT1)
    %d = 当前服务进程的ID
    %a = 客户机的结构(只能识别几项:Samba,WfWg,WinNT,Win95)
    %I = 客户机的IP
    %T = 当前日期和时间

    1、workgroup
    该选项设置Samba服务器所属工作组名称,通过网上邻居可以从该工作组中找到该Samba服务器。默认设置如下:

    workgroup = WORKGROUP
    -------------------------------------------------------
    2、wins support
    该选项设置Samba服务器是否作为WINS服务器。如果要启用该选项,则不能设置wins server选项,默认设置如下:

    #   wins support = no
    选项默认都是被注释掉了
    -------------------------------------------------------
    3、wins server

    该选项指定WINS服务器的IP地址或主机名。默认设置如下:

    ;   wins server = w.x.y.z
    选项默认都是被注释掉了
    -------------------------------------------------------
    4、interfaces 和bind interfaces only = yes
    如果服务器有多个IP地址或网络接口,可以使用interfaces选项把IP地址或网络接口列出来。如果bind interfaces only选项设置为yes,则表示Samba将绑定(监听)interfaces选项所设置的IP地址或网络接口,只通过这个些IP地址或网络接口提供服务,默认设置如下:

    ;   interfaces = 127.0.0.0/8 eth0

    ;   bind interfaces only = yes
    上面两个选项默认都是被注释掉了
    -------------------------------------------------------
    5、dns proxy
    该选项设置是否启用DNS代理功能,默认设置如下:

    dns proxy = no
    -------------------------------------------------------
    6、log file
    该选项用来设置Samba日志文件的存放位置和文件名称,默认设置如下:

    log file = /var/log/samba/log.%m
    这个选项中的.%m是Samba配置文件的保留变量,表示客户端的NetBIOS名称。
    -------------------------------------------------------
    7、max log size
    日志文件最大能达到多少Kbytes,如果超过该限制,则Samba自动在当前的日志文件名后面加上“.old”然后创建一个新的日志文件继续写入。如果为0,则表示没有大小限制。默认设置如下:

    max log size = 1000
    -------------------------------------------------------
    8、syslog only
    设置Samba只通过syslog进行日志记录。默认设置如下:

    #   syslog only = no   
    默认这个选项被注销掉
    -------------------------------------------------------
    9、syslog
    syslog的日志级(0,err)(1,warning)(2,notice)(3,ifno)(4或以上,debug)。默认设置如下:

    syslog = 0
    -------------------------------------------------------
    10、server role
    服务器角色。定义Samba将以何种模式操作。可能的值是“独立服务器”、“成员服务器”、“经典主域服务器”、“经典备份域控制器”、“活动目录域控制器",默认设置如下:

    server role = standalone server
    -------------------------------------------------------
    11、passdb backend
    密码数据库格式,之前samba服务器的用户信息都是以数据文件信息存放,为了加快速度, 目前密码文件已经转为使用数据库了! 默认的数据库格式为tdbsam ,存放在/var/lib/samba/private/passdb.tdb,早期使用smbpasswd命令来管理用户密码, 后来使用 TDB 数据库,因此建议使用新的 pdbedit 指令来管理用户数据smbpasswd仍然可以使用。默认设置如下:

    passdb backend = tdbsam
    -------------------------------------------------------
    12、obey pam restrictions
    在Samba中集成PAM的访问控制功能。默认设置如下:

    obey pam restrictions = yes
    -------------------------------------------------------
    13、 unix password sync = yes
    当用户改变samba加密的密码时,SAMBA会试着更新UNIX用户密码。默认设置如下:

    unix password sync = yes
    -------------------------------------------------------
    14、passwd program
    这个就指定更改密码的命令。默认设置如下:

    passwd program = /usr/bin/passwd %u
    -------------------------------------------------------
    15、passwd chat
    更改密码时的对话。默认设置如下:

    passwd chat = *Entersnews*spassword:* %n *Retypesnews*spassword:* %n *passwordsupdatedssuccessfully* .
    -------------------------------------------------------
    16、pam password change
    为samba打开pam改变密码控制机制的支持。默认设置如下:

    pam password change = yes

    -------------------------------------------------------
    17、map to guest
    这个配置的意思是将所有samba系统主机所不能正确识别的用户都映射成guest用户。默认设置如下:

    map to guest = bad user
    -------------------------------------------------------
    18、usershare max shares
    最大用户共享数量,0表示禁用用户共享。默认设置如下:
     
    usershare max shares = 100
    -------------------------------------------------------
    19、usershare allow guests
    是否允许guest用户访问,这相当于在共享定义中设置guest ok = yes选项,最终以共享中的设置为准。

    usershare allow guests = yes
    -------------------------------------------------------

    以下是smb.conf配置文件中没有提到的,但是可以通过testparm -v 命令查看到默认设置,如果不符合自己的实际设置,可以在配置文件中加入相应
    的选项。
    -------------------------------------------------------
    20、netbios name = CENTOS7

    设置Samba Server的NetBIOS名称,在“网上邻居”中显示的主机名,如果不填,则默认会使用该服务器的DNS名称的第一部分。
    -------------------------------------------------------
    21、server string = Samba 4.8.3

    设定 Samba Server 的注释,可以是任何字符串,也可以不填。宏%v表示显示Samba的版本号。
    -------------------------------------------------------
    22、hosts allow = 127. 192.168.1. 192.168.10.1
    设置允许连接到Samba Server的客户端,多个参数以空格隔开。可以用一个IP表示,也可以用一个网段表示。这选项也可以
    在共享段起作用,只对某个共享的目录单独起作用。

    hosts deny 与hosts allow 刚好相反。

    ALL 表示所有用户,例如:hosts allow = ALL

    EXCEPT 表示排除,例如:允许除192.168.1.100以为的所有主机访问,格式为 hosts allow = ALL EXCEPT 192.168.1.100

    -------------------------------------------------------
    23、max connections = 0

    max connections用来指定连接Samba Server的最大连接数目。如果超出连接数目,则新的连接请求将被拒绝。0表示不限制。
    -------------------------------------------------------
    24、deadtime = 0

    deadtime用来设置断掉一个没有打开任何文件的连接的时间。单位是分钟,0代表Samba Server不自动切断任何连接。
    -------------------------------------------------------
    25、time server = yes/no

    time server用来设置让nmdb成为windows客户端的时间服务器
    -------------------------------------------------------
    26、security = user

    设置用户访问Samba Server的验证方式,一共有四种验证方式。
    1. user:Samba Server共享目录只能被授权的用户访问,由Samba Server负责检查账号和密码的正确性。账号和密码要在本Samba Server中建立。
    2. domain:域安全级别,使用主域控制器(PDC)来完成认证。
    3. auto:这是Samba中的默认安全设置,Samba会通过服务器角色参数(如果设置)来确定安全模式。
    4. ads:在此模式下,Samba将充当ADS领域中的域成员

    在samba4中share 和 server验证方式已被弃用
    -------------------------------------------------------
    27、encrypt passwords = yes/no

    是否将认证密码加密。因为现在windows操作系统都是使用加密密码,所以一般要开启此项。不过配置文件默认已开启。
    -------------------------------------------------------
    28、username map = /etc/samba/smbusers

    用来定义用户名映射,比如可以将root换成administrator、admin等。不过要事先在smbusers文件中定义好。比如:root = administrator admin,这样就可以用administrator或admin这两个用户来代替root登陆Samba Server,更贴近windows用户的习惯。
    -------------------------------------------------------
    29、guest account = nobody

    用来设置Samba中guest用户对用的系统用户名。
    -------------------------------------------------------
    30、load printers = yes/no

    设置是否在启动Samba时就共享打印机。现行几乎都是网络打印机了,默认关闭就可以,这里也不讨论打印机的问题。
    -------------------------------------------------------
    31、 smb ports = 139 445
    指定服务监听SMB流量的端口。

    五、常用的共享选项及说明


    在该段中指定了一个通过Samba进行共享的目录,定义用户访问该目录的各种设置。如下所示:

    [共享名称]:这个共享名称很重要,它是一个代号而已,用户在“网上邻居”中所看到的共享目录名

    comment = 任意字符串
    说明:comment是对该共享的描述,可以是任意字符串。
     
    path = 共享目录路径
    说明:path用来指定共享目录的路径。可以用%u、%m这样的宏来代替路径里的unix用户和客户机的Netbios名,用宏表示主要用于[homes]共享域。例如:如果我们不打算用home段做为客户的共享,而是在/home/share/下为每个Linux用户以他的用户名建个目录,作为他的共享目录,这样path就可以写成:path = /home/share/%u; 。用户在连接到这共享时具体的路径会被他的用户名代替,要注意这个用户名路径一定要存在,否则,客户机在访问时会找不到网络路径。同样,如果我们不是以用户来划分目录,而是以客户机来划分目录,为网络上每台可以访问samba的机器都各自建个以它的netbios名的路径,作为不同机器的共享资源,就可以这样写:path = /home/share/%m 。
     
    browseable = yes/no
    说明:browseable用来指定该共享是否在“网上邻居”中可见。
     
    writable = yes/no
    说明:writable用来指定该共享路径是否可写。

    read only = yes/no
    说明:设置共享目录为只读,这个选项和writable是互斥的,最好不要两个同时出现如果同时出现,那么最后出现的那个设置为主要的设置。
     
    available = yes/no
    说明:available用来指定该共享资源是否可用。
     
    admin users = 该共享的管理者
    说明:admin users用来指定该共享的管理员(对该共享具有完全控制权限)。在samba 3.0中,如果用户验证方式设置成“security=share”时,此项无效。
    例如:admin users =bobyuan,jane(多个用户中间用逗号隔开)。
     
    valid users = 允许访问该共享的用户
    说明:valid users用来指定允许访问该共享资源的用户。
    例如:valid users = bobyuan,@bob,@tech(多个用户或者组中间用逗号隔开,如果要加入一个组就用“@+组名”表示。)
     
    invalid users = 禁止访问该共享的用户
    说明:invalid users用来指定不允许访问该共享资源的用户。
    例如:invalid users = root,@bob(多个用户或者组中间用逗号隔开。)
     
    write list = 允许写入该共享的用户
    说明:write list用来指定可以在该共享下写入文件的用户。
    例如:write list = bobyuan,@bob
     
    public = yes/no
    说明:public用来指定该共享是否允许guest账户访问。
     
    guest ok = yes/no
    说明:意义同“public”。

    create mask = 0700
    说明:指定用户通过Samba在该共享目录中创建文件的默认权限。0600代表创建文件的权限为rw-------

    directory mask = 0700
    说明:指定用户通过Samba在该共享目录中创建目录的默认权限。0600代表创建目录的权限为rwx------


    更多设置参考官方文档
    https://www.samba.org/samba/docs/man/


    六、配置文件生效与检验
    1、与大部分程序配置文件一样,smb.comf文件被修改后并不会立刻生效,需要重启smbd和nmbd服务。在完成配置文件我们需要用testparm命令来验证文件的格式是否正确,命令如下:

    [root@CentOS7 ~]# testparm
    参数
    -v:查阅完整的参数设置,连同默认值也会显示出来

    ------------------------------------------------------
    [root@CentOS7 ~]# testparm      #进行检测
    Load smb config files from /etc/samba/smb.conf
    rlimit_max: increasing rlimit_max (1024) to minimum Windows limit (16384)
    WARNING: The "syslog" option is deprecated
    Processing section "[homes]"
    Processing section "[printers]"
    Processing section "[print$]"
    Loaded services file OK.         #如果格式没有问题将不会看到任何错误信息,如果这行的前面有Unknown parameter encountered:字样的提示就说明有错误。
    Server role: ROLE_STANDALONE

    Press enter to see a dump of your service definitions      #回车后将会显示smb.conf文件当前的配置内容

    # Global parameters
    [global]
        printcap name = cups
        security = USER
        workgroup = SAMBA
        idmap config * : backend = tdb
        cups options = raw
           ----后面的省略----
    --------------------------------------------------------
    如果输出中没有任何错误或警告信息,表示文件格式没有问题。否则,输出结果中将会给出错误的地方以及错误的原因。

    2、重启服务
    ---------------------------------------------------------
    [root@CentOS7 ~]# systemctl restart smb.service
    [root@CentOS7 ~]# systemctl restart nmb.service
    ---------------------------------------------------------

    七、Samba用户管理
    Samba的用户是与操作系统的用户联系在一起的,在创建Samba用户前,必须先添加一个与之同名的操作系统用户。也就是说Samba的用户必须是操作系统中已经存在的用户,但两者的密码可以不相同。在来说下用户在Windows系统下通过Samba访问Linux系统的权限问题,当我们需要通过Samba所提供的功能来进行Linux的访问时,Linux上面的文件或目录是否可读写还要取决于Linux系统上的用户是否对该文件可读写,所以在Windows上访问Samba服务器时,要看Samba对应的用户对Linux系统的文件是否可读写,同时Samba配置文件也会限制读写权限。例如:当Samba用户A要对Linux上面的T文件进行写的时候,smb.conf的配置文件中的共享设置要具有可写的权限,A用户对应的Linux用户也要对T文件有写的权限。

    Samba用户通过pdbedit命令进行管理。命令用法如下:

    [root@CentOS7 ~]# pdbedit 参数

    参数:
     –a username:新建Samba账户。
     –x username:删除Samba账户。
     –L:列出Samba用户列表,读取passdb.tdb数据库文件。
     –Lv:列出Samba用户列表的详细信息。
     –c “[D]” –u username:暂停该Samba用户的账号。
     –c “[]” –u username:恢复该Samba用户的账号。

    举例:
    ---------------------------------------------------------------------------
    [root@CentOS7 ~]# pdbedit -a root               #创建root用户
    new password:
    retype new password:
    Unix username:        root
    NT username:          
    Account Flags:        [U          ]
    User SID:             S-1-5-21-581854895-1790122719-2797274960-1000
    Primary Group SID:    S-1-5-21-581854895-1790122719-2797274960-513
    Full Name:            root
    Home Directory:       \centos7 oot
    HomeDir Drive:        
    Logon Script:         
    Profile Path:         \centos7 ootprofile
    Domain:               CENTOS7
    Account desc:         
    Workstations:         
    Munged dial:          
    Logon time:           0
    Logoff time:          三, 06 2月 2036 23:06:39 CST
    Kickoff time:         三, 06 2月 2036 23:06:39 CST
    Password last set:    五, 21 12月 2018 11:45:14 CST
    Password can change:  五, 21 12月 2018 11:45:14 CST
    Password must change: never
    Last bad password   : 0
    Bad password count  : 0
    Logon hours         : FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF

    [root@CentOS7 ~]# pdbedit -L              #查询目前已经存在的Samba帐号
    root:0:root

    [root@CentOS7 ~]# smbpasswd root         #通过smbpasswd命令修改帐号密码
    -----------------------------------------------------------------------

    如果要添加额外的Samba用户帐号,若该帐号原本不存在,则先使用useradd添加系统帐号,再通过pdbedit -a命令添加Samba用户帐号。

    八、用户映射
    由于Samba用户必须要与操作系统用户同名,出于系统安全或使用习惯的考虑,我们可以把上面的root用户映射为administrator用户或admin用户,映射后就无需在添加administrator或admin用户了,也可以防止Samba用户通过Samba帐号来猜测操作系统用户的信息。映射后的用户其权限和密码都和root一样,映射步骤如下:

    1、编辑smb.conf文件,在[global]部分添加用户映射文件(该文件由用户手动创建,可以把他放在系统可以访问的任何位置),添加内容如下所示:

    username map = /etc/samba/smbusers           #一般文件都放在这里

    2、手动创建用户映射文件/etc/samba/smbusers ,该文件的格式如下:

    Samba用户帐号 = 需要映射的用户列表

    列表中的用户名之间以空格进行分割,如下所示。

    [root@CentOS7 ~]# vi /etc/samba/smbusers

    root = administrator admin

    3、重启mbd和mbd服务

    添加上面的选项可能有问题Centos7 1810测试,就是添加完以后即使允许不需要密码访问,也得先提供密码登录。Debian9.5就没问题

    九、配置实例

    1、不需要密码的共享,我们有时候需要将某个目录共享给所有人访问,要求/home/share1目录所有人都可以读写,/home/share2目录所有人只读,我们需要先把这两个目录的权限给成777,这样任何人才可以对目录进行操作,smb.conf配置文件如下:

    -----------------------------------------------------------------------

    #======================= Global Settings =======================

    [global]

       workgroup = WORKGROUP

       netbios name = SAMBA-CENTOS7

       dns proxy = no
     
       security = user

       passdb backend = tdbsam

       map to guest = bad user            #这行很重要决定任何用户是否可以访问                  

       load printers = no

    #======================= Share Definitions =======================

    [share1]
       comment = guest
       browseable = yes
       path = /home/share1
       available = yes
       guest ok = yes
       writable = yes
       create mask = 0700
       directory mask = 0700

    [share2]
       comment = guest
       browseable = yes
       path = /home/share2
       available = yes
       guest ok = yes
       read only = yes

       
     -----------------------------------------------------------------------  

    十、防火墙设置
    Samba中默认会启用多个端口,这包括数据传输的TCP端口139,445,以及进行NetBIOS名称解析之类工作的UDP端口137,138,我们如果只是为了传输数据可以只开放445端口,前提是smb ports = 的选项中有445端口,我们也可以配置smb ports = 445 ,这样Samba就只监听445端口,这样配置完在Windows中“桌面”上的“网络”里不会在显示共享的主机,只能通过“运行” 打开 \IP 的方式连接到共享的目录。防火墙具体的配置命令这里就不说了。

    查看smb ports选项默认设置的端口:
    [root@CentOS7 ~]# testparm -v | grep port

    查看Samba监听的端口号:
    [root@CentOS7 ~]# ss -tlunp  | grep mbd       #ss命令是netstat命令的替代

    可以直接关闭防火墙:
    [root@CentOS7 ~]# systemctl stop firewalld.service

    十一、SeLinux设置
    SeLinux会影响到Samba的访问,最直接的方法就是关闭他。

    1、查看SeLinux状态
    [root@CentOS7 ~]# sestatus

    2、临时关闭SeLinux
    [root@CentOS7 ~]# setenforce 0

    3、永久关闭SeLinux,需要重启机器
    编辑/etc/selinux/config文件,将SELINUX的值设置为disabled,下次开机SELinux就不会启动了


    十二、Linux客户端上访问

    Linux客户端上访问Windows系统或Samba服务器上共享资源的方式主要有两种,可以使用smbclient程序访问共享资源,也可以使用mount命令把共享目录挂载到本地目录上使用。

    1、smbclient是Samba所提供的一个类似于FTP的客户端程序,使用smbclient链接到共享的资源后,可以使用ls,get,put等类似于FTP的命令对共享资源进行操作,首先要安装smbclient程序:
    ---------------------------------------
    [root@CentOS7 ~]# yum install samba-client
    ---------------------------------------
    smbclient命令的格式如下所示:

    smbclient  [选项] //[address]/[共享目录]

    该命令常用的选项及说明如下所示
    -I=IP: 连接指定的IP地址
    -L=Host: 获取指定共享资源列表
    -p=Port: 指定要连接的共享资源服务器端口号
    -U=Username: 指定连接共享服务器使用的用户帐号
    -N: 不要求输入密码
    -?:显示命令的帮助信息
    -V :显示命令的版本信息

    例如要查看共享服务器192.168.1.30上的共享资源列表,命令如下:
    ----------------------------------------------------------------------
    [root@CentOS7 ~]# smbclient -L=192.168.1.27 -U administrator
    Enter SAMBAadministrator's password:                #要求输入administrator帐号的密码

        Sharename       Type      Comment
        ---------       ----      -------
        ADMIN$          Disk      远程管理
        C$              Disk      默认共享
        IPC$            IPC       远程 IPC
        windd           Disk      
    Reconnecting with SMB1 for workgroup listing.
    Connection to 192.168.1.27 failed (Error NT_STATUS_RESOURCE_NAME_NOT_FOUND)
    Failed to connect with SMB1 -- no workgroup available

    ----------------------------------------------------------------------
    通过上面的查看可以看到共享的资源为windd

    通过smbclient命令登录到共享主机资源,命令如下:
    ----------------------------------------------------------------------
    [root@CentOS7 ~]# smbclient  //192.168.1.27/windd -U administrator
    Enter SAMBAadministrator's password:
    Try "help" to get a list of possible commands.
    smb: >
    ----------------------------------------------------------------------
    在smb: >下面其实就是在 //192.168.1.30/windd这个目录下,我们可以使用ls,get,put等命令进行数据的传输,常用命令如下:

    ? :列出所有可以使用的命令
    cd :远程共享主机上切换目录
    del :删除某个文件
    lcd :本机主机上切换目录
    ls :查看当前所在目录的文件
    get :下载文件
    put : 上传文件
    rm : 删除文件
    exit :退出

    2、通过mount命令挂载共享目录到本地。
    在使用smbclient命令一点也不方便直观,其实除了smbclient为,Linux客户端也可以像NFS一样使用mount命令把远程的共享文件夹挂载到本地的目录上进行使用。挂载后对共享文件夹的访问就像操作本地目录一样方便。首先需要安装cifs-utils软件包(以及cifs-utils依赖的软件包):
    ---------------------------------------------
    [root@CentOS7 ~]# yum install cifs-utils
    ---------------------------------------------

    挂载命令如下:

    [root@CentOS7 ~]# mount.cifs //[address]/[folder] -o user=[username] [mount point]
     
    [root@CentOS7 ~]# mount -t cifs //[address]/[folder] -o user=[username] [mount point]
     
    [root@CentOS7 ~]# mount -t cifs //[address]/[folder] -o domain=[domain_name],user=[username] [mount point]

    [address]是windows的IP地址,[folder]是windows下的共享目录,[username]是window下的设置folder共享时的用户,如果该用户使用域管理(如企业或组织用户),需要设置domain ;[mount point]是Linux系统上的挂在点,mount.cifs命令可以取代mount -t cifs命令。

    挂在举例:将共享文件windd挂载到linux系统的/mnt目录,共享用户为administrator
    ---------------------------------------------------------------------
    [root@CentOS7 ~]# mount.cifs //192.168.1.27/windd -o user=administrator /mnt/
    Password for administrator@//192.168.1.27/windd:  ********                   #这里要求输入共享用户administrator的密码
    [root@CentOS7 ~]#
    ---------------------------------------------------------------------


  • 相关阅读:
    遗传算法的几种改进
    python3中让程序暂停运行的语句
    python内存增长问题
    关于编程思路
    关于程序中delay函数带来的繁琐问题
    python一切皆对象的理解
    Inspector did not run successfully.
    ProtocolError: <ProtocolError for 127.0.0.1/RPC2: 401 Unauthor.
    决策树的升入浅出-视频
    -bash: /opt/cslc/jdk1.8.0_144/bin/jps: /lib/ld-linux.so.2: bad ELF interpreter: 没有那个文件或目录
  • 原文地址:https://www.cnblogs.com/pipci/p/10155761.html
Copyright © 2020-2023  润新知