Linux运维 第三阶段 (四) SAMBA

  1. 云栖社区>
  2. 博客>
  3. 正文

Linux运维 第三阶段 (四) SAMBA

技术小阿哥 2017-11-28 15:16:00 浏览1197
展开阅读全文

FTP(主机间通过应用层报文传送,网络(资源子网、通信子网),TCP/IP负责将报文安全传达到目的地,最终请求什么资源,是FTP应用就靠FTP请求报文和响应报文完成,协议本身很复杂,但实现的功能很简单,通过FTP可在远端服务器上创建文件、删除文件,但无法在线编辑文件(需要先下载-->修改-->上传))

NFS(工作于LINUX间,或UNIX间)

SAMBA(用于linuxwindows共享文件,CIFS commoninternet file systemSMB servicemessage blockNETBIOS(WINS服务)

 

NETBIOS(通过广播形式在windows同一个工作组内实现主机名称解析的协议)

WINS(在WINDOWS主机内部类似NETBIOS一样解析主机名,但它是单播的,当得到一台主机,直接向WINS请求它的主机名是什么,或向WINS请求当前网络内有多少台主机)

WINDOWS的网上邻居基于二进制传输文件

UNC路径:\\IP\SHARED_NAME共享名(同一台主机,共享名不能相同)

linux上实现NETBIOS,CIFS/SMB(基于NETBIOSCIFS/SMBWINBINDLDAP(openldap)linux成为windows的域控制器)

NETBIOS137/udp138/udp139/tcp445/tcp(共享文件)

WINBIND(让linux主机加入到windowsAD(activedirectory)域,非常重要的程序)

WINDOWS名称解析时:hosts文件-->WINS-->DNS-->lmhosts

 

SAMBA如何验证client的访问:账号是系统用户;密码是SAMBA密码(smbpasswd独立文件存储且加密存放)

 

实际使用权限=共享权限与文件系统权限的交集

 

redhat2.6.18-308.el5

#yum  list  all samba*

#rpm  -e  samba-client samba-commoncommon,clientserver都要用到的通用组件)

#yum  -y  install samba3x  samba3x-client  samba3x-common  samba3x-swatswat sambaweb access toolsWEB服务访问工具,基于WEB接口,图形化配置samba

#rpm  -ql  samba3x

/etc/rc.d/init.d/nmb

/etc/rc.d/init.d/smb

#rpm  -ql  samba3x-common

/etc/samba/lmhosts

/etc/samba/smb.conf

/usr/bin/testparm(测试主配置文件smb.conf是否有语法错误)

/usr/bin/smbpasswd(管理SAMBA用户)

#rpm  -ql  samba3x-client

/usr/bin/smbclientftp-likeclient to access SMB/CIFS resources on servers

/sbin/mount.cifs

/sbin/umount.cifs

/usr/bin/findsmb

#smbpasswd  -a  USERNAMEadd将本地用户加入SAMBA服务)

#smbpasswd -d|-e  USERNAMEdisableenable,禁用或启用指定用户访问SAMBA服务)

#smbpasswd  -x  USERNAME(将指定用户从SAMBA服务中删除)

#smbclient  -L  NETBIOS_NAME -U  USERNAME-L,--list

#service  smb  startsmbd文件共享,tcp/139tcp/445

#service  nmb  startnmbd NETBIOSudp/137udp/138

#netstat  -tulnp

 

#man  smb.conf

#vim /etc/samba/smb.conf#是纯注释,;分号开头的是可以启用的指令或参数,配置风格类似WINDOWS*.ini文件,注意等号两边空格)

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

[global]

  workgroup  = MYGROUPWINDOWS的工作组默认为WORKGROUP

  serverstring  = Samba Server Version %v(鼠标放在共享上时的悬停描述,%v是宏,显示版本号,可理解为变量,这些变量只为这个软件所使用,此项改为其它内容,不要暴露自己的版本号,常量(一次定义永久生效))

  netbios name  = MYSERVER(此项若为启用,则生效主机名的第一段,例如主机名为www.magedu.com只生效www

  hosts allow  = 127.  192.168.1.(白名单,基于IP的访问控制)

  hosts deny  =    (黑名单)

#------------Logging Options--------------

  log file  = /var/log/samba/log.%m(每个clientserver访问时有独立的日志文件,%m是宏,表示客户端主机自己的名字或IP

  max log size  =  50(单位KB

#------------Standalone Server Options----------

  security  =  user(安全级别usersharesever被废弃deprecated

  passdbbackend  =  tdbsam(密码存放的格式,如有ldapsam

#-----------Printing Options--------------

  load printers  =  yes

  cups options  =  rawcommon unix printing system,哪种驱动)

#=======Shared Definitions=======

[homes](每个用户是否可以访问自己的家目录)

  comment  =  HomeDirectories(描述信息)

  browseable  =  no(是否可被浏览)

  writable  =  yes(是否可写,也可表示为read  only  =  no

[printer](共享打印机)

  comment  = All  Printers

  path  = /var/spool/samba(缓冲池)

  browseable  =  no(打印机不需要在共享文件中被浏览,在打印机里查看)

  guest  ok =  no(是否允许来宾账号访问,来宾账号仅读权限,也可表示为public  =  no

  writable  =  no

  printable  =  yes

 

常用指令:

comment  =

path  =

browseable  =

guest  ok  = yes|no(等同于public  = yes|no

writable  =  no(等同于read  only =  yes,两种表示二选一即可)

write  list  = user1,  user2,  @GROUP_NAME(定义可写用户列表,@GROUP也可表示为+GROUP

valid  users  = USERNAME,  (只允许哪些用户访问,白名单,也可用黑名单invalid  users =  USERNAME,白名单与黑名单二选一使用)

 

举例:win下访问linuxsamba服务

#vim /etc/samba/smb.conf

[tools]

  comment  = share  test

  path  = /share/test

  guest  ok =  yes

  writable  =  yes

#testparm

#mkdir  -pv  /share/test

#useradd  fedora

#passwd  fedora

#smbpasswd  -a 

#ll  -d  /share/test

#setfacl  -m  u:fedora:rwx /share/test

#smbpasswd  -a  fedora(最好不要与登录系统密码相同)

WIN下使用UNC路径访问:\\192.168.101.170(输入账号密码进入,可看到家目录和共享的tools目录)

 

举例:linux访问win共享

win下共享一目录,并开启GUEST帐户

#smbclient  -L  192.168.101.106(直接回车以匿名anonymous用户查看)

#smbclient  192.168.101.106/test  -U  administrator(以管理员身份访问共享)

smb:\>help

smb: \> pwd

Current directory is \\192.168.101.106\test\

smb: \> lcd /root(切至本地目录)

smb: \> !pwd(查看本地路径)

/root

smb: \> !ls

anaconda-ks.cfg Desktop  install.log  install.log.syslog

smb: \> put install.log

putting file install.log as \install.log (3327.0 kb/s)(average 3327.0 kb/s)

smb: \> pwd

Current directory is \\192.168.101.106\test\

smb: \> ls

  .                                   D        0 Mon Nov  2 15:11:07 2015

  ..                                  D        0  Mon Nov 2 15:11:07 2015

  111.txt                             A        0 Mon Nov  2 14:58:22 2015

  install.log                         A    30662 Mon Nov  2 15:11:07 2015

 

举例:在linux下访问linux共享

#smbclient //192.168.101.170/tools  -U  fedora

smb:\>help

 

 

挂载:

#mkdir  /mnt/samba

#mount  -t  cifs //192.168.101.170/tools  -o  username=fedora  /mnt/samba

#mount

//192.168.101.170/tools on /mnt/samba type cifs (rw,mand)

 

自动挂载:

#vim  /etc/fstab(此种方式挂载不安全,可被其它用户看到)

//192.168.101.170/tools /mnt/samba  username=fedora,password=redhat  0  0

#mount  -a

#umount  /mnt/samba

 

#vim /etc/samba/credit.passwd#man  mount.cifs搜索关键字credentials

username=fedora

password=redhat

#chmod  go=---  /etc/samba/credit.passwd

#vim  /etc/fstab

//192.168.101.170/tools /mnt/samba credentials=/etc/samba/credit.passwd  0  0

#mount  -a

 

 

浏览器端配置samba:

#rpm  -ql  samba3x-swat

#vim /etc/xinetd.d/swat

disable  =  no(启用swat服务)

only_from  =  0.0.0.0(让其监听在任意地址)

#service xinetd  restart

#chkconfig --list  swat

浏览器:http://192.168.101.170:901(注意在此界面下,改任意一项点保存commit changes将会覆盖之前的配置文件,仅保留生效的选项,而且会立即生效不用重启服务)

 

 




以上是学习《马哥网络视频》做的笔记。

 

 

 







1、samba协议(server message block)服务消息块;

CIFS协议(common internet file system)通用互联网文件系统。

作用:分享档案与打印服务;可提供用户登入samba主机时的身份认证;可提供windows上的主机名解析(netbios name解析)。

#rpm –qa | grep samba

samba-3.6.9-15.el6.x86_64   (主程序

samba-client-3.6.9          (客户端

samba-common-3.6.9          (公共包、测试工具等

samba-winbind-clinets-3.6.9 (windows中域

samba-winbind-3.6.9

samba-libs-4.0.0            (底层库等

主要程序:smbd(提供对服务器中文件、打印资源的共享访问,端口139、445;

nmbd(提供基于netbios主机名称的解析,端口137、138

脚本:/etc/init.d/smb

配置文件:/etc/samba/smb.conf   (主配置文件

/etc/samba/lmhosts              (主机名与IP对应关系

/etc/samba/smbusers             (设置用户别名

配置文件检查工具:#testparm –s (检查配置文件语法是否正确

2、常见配置项:

[global]                    (全局配置

[homes]                     (用户目录共享设置

[prints]                    (打印机共享设置

[myshare]                   (用户自定义名称的共享目录设置

注:;分号是配置样例行,实例

#cat /etc/samba/smb.conf.bak | grep –v "^#" | grep –v "^;"| grep –v "#" | awk 'NF>0'     (提取有效配置行

》常见全局配置项:

    workgroup = WORKGROUP

    server string = Samba ServerVersion %V

    security = share    (share匿名访问;user本地访问;server由其它服务器提供认证;domain由域控制器提供认证

    passdb backend = tdbsam

》常见共享目录配置项:

    comment = 描述信息  (可写变量%I,%H,%T

    path = 路径

    browseable = yes    (是否浏览中可见

    guest ok = yes      (是否允许所有人访问,等同于public

    writable = yes      (是否可写,与readonly的作用相反

》其它设置:

    username map =/etc/samba/smbusers  (用户映射,在此文件中添加多个别名,空格隔开

    hosts allow =                      (ACL控制

    hosts deny =       

例:hosts allow = 192.168.1. EXPECT 192.168.1.15

    display charset =utf8              (samba服务器显示的字符集格式

    unix charset = utf8                (unix客户端的字符集格式

    dos charset = cp950               (windows客户端的big5编码

    %I                                 (显示客户端的IP地址

    %H                                 (显示家目录路径

    %T                                 (显示当前日期和时间

3、本地映射:

    #mount –t cifs –o username=用户名,password=密码 原路径 目标路径

    #vi  /etc/fstab

原路径  目标路径  cifs  defaults,username=  ,password=  0   0

4、例:匿名访问

    服务器端:#vi  /etc/samba/smb.conf

    [global]

        ……

        workgroup= WORKGROUP

        security= share

        ……

    [movie]

        comment = cang

        path = /cang

        writable = yes

        browseable = yes

        guest ok = yes

    客户端:#smbclient  -L //192.168.216.16    (查看

    #smbclient  //192.168.216.16/movie

    smb:\>get  文件名

    smb:\>put   文件名

    #mount  -t cifs  //192.168.216.16/movie  /mnt

    #df  -hT

    windows客户端下:\\192.168.216.16\movie

注:服务端对目录设权限时,可用chmod设置目录本身权限,也可在主配置文件中设置可写或可读,两种配合使用。

5、例:本地用户访问

    服务器端:#vi  /etc/samba/smb.conf

    [global]

        ……

        security = user

        ……

    [homes]

        comment = Home Directory (可写%I,%T,%H

        browseable = yes

        writable = yes

        create mode = 0644

        directory mode = 0755

    [music]

        comment =

        path = /music

        browseable = yes

        write list = zhangsan,@group    (拥有写权限的列表

    #pdbedit  -a  -u  zhangsan      (将本地用户转为samba用户

    #pdbedit  -x -u  zhangsan       (删除samba用户

    #pdbedit  -L              (查看samba用户

    客户端:#smbclient  -L //192.168.216.16  -U  zhangsan

    #smbclient  //192.168.216.16/homes  -U zhangsan

    #mount  -t cifs  -o  username=zhangsan,password=123 //192.168.216.16/music  /mnt

    6、例:仅项目组的人对/var/share/devel有写权限

    #vi  /etc/samba/smb.conf

    write list = @devel(添加此项

    #groupadd  devel

    #useradd  -G devel  dev01

    #passwd  dev01

    #pdbedit  -a -u  dev01

    #chgrp  devel /var/share/devel

    #chmod  2770 /var/share/devel

    例:技术部的人对项目组目录下文件只读

    #groupadd  tech

    #useradd  -G tech  tech01

    #passwd  tech01

    #pdbedit  -a -u  tech01

    #setfacl  -m g:tech:rx  /var/share/devel

    #setfacl  -m d:g:tech:rx  /var/share/devel

 



本文转自 chaijowin 51CTO博客,原文链接:http://blog.51cto.com/jowin/1656976,如需转载请自行联系原作者

网友评论

登录后评论
0/500
评论
技术小阿哥
+ 关注