samba

作者: Miracle001 | 来源:发表于2018-03-23 00:12 被阅读10次
    SMB:Server Message Block服务器消息块,IBM发布,最早是DOS网络文件共享协议
    实现windows和UNIX相通
    功能:
    • 共享文件和打印,实现在线编辑
    • 实现登录SAMBA用户的身份认证
    • 可以进行NetBIOS名称解析
    • 外围设备共享
    计算机网络管理模式:
    • 工作组WORKGROUP:计算机对等关系,帐号信息各自管理
    • 域DOMAIN:C/S结构,帐号信息集中管理,DC,AD
    
    yum list samba*
    centos6:samba-swat  提供一个web界面,与centos7的不同之处
    yum list samba-client
    yum list cifs-utils
    yum -y install samba samba-client cifs-utils
    rpm -ql samba  提供smb服务
    rpm -ql samba-common  配置文件
        /etc/samba/smb.conf
        /var/lib/samba/private  存放samba账号
    rpm -ql samba-client
    rpm -ql cifs-utils
        /usr/bin/cifscreds
        /usr/sbin/mount.cifs
    locate cifs.ko  samba和nfs一样,内核级别,文件系统,不同于ftp
    
    Windows
    右键——管理——服务和应用程序——服务——Workstation(与samba相关),Server
    命令行
    nbtstat -h
    nbtstat -a 127.0.0.1  找不到主机,防火墙
    nbtstat -n  
    Windows共享
    新建文件夹——右键——属性——共享——高级共享——共享此文件夹——权限——可读可写——确定并退出
    命令行("win键+x"——按a——以管理身份运行)
    net user qiangge qiangge /add  添加用户
    net share  查看共享资源
    "win键+r": \\127.0.0.1\d$ or \\目标IP地址\d$  输入用户名和密码访问目标IP的计算机
    centos7
    smbclient -L 192.168.29.1(Windows的IP)
    smbclient -L 192.168.29.1 -Uqiangge%qiangge  显示默认的资源
    smbclient //192.168.29.1/testdir$ -Uqiangge%qiangge  
    ls/dir
    !ls
    put anaconda-ks.cfg  可以上传
    get 新建文本文档.txt  可以下载
    !ls
    数据更改,不能自动同步,不方便,还是挂载好。
    
    Windows共享
    共享此文件夹——添加——testdir$,删除testdir,就可以使该文件夹隐藏
    "win键+r": \\192.168.29.1\  回车看不到内容
    \\192.168.29.1\testdir$(搜索栏里)  虽然隐藏,但可以看到内容,更加安全了
    命令行
    netstat -nt
    netstat -nt  |findstr  445  查看连接共享文件夹的IP
    Windows共享文件的端口:445
    ping -a 192.168.29.1  反向做名词解析的,解析IP为计算机名称
    net share
    UNC路径:主机名或者IP地址+共享名称:\\192.168.29.1\testdir$
    共享名称:testdir$
    文件夹名称:g:\testdir
    
    Windows主机名解析
    NetBUEI-->IP
    NetBIOS
    wins(相当于dns,已经淘汰了)
        网络设置——更改适配器选项——右键点击网卡——属性——tcp/ipv4——属性——高级——就可以看到wins了
    lmhosts
        win+r: c:\Windows\System32\drivers\etc\  lmhosts.sam文件去掉后缀变为lmhosts才生效
    编辑lmhosts文件
      1.1.1.1  fengqwinsrv  页面最下方添加信息
    命令行
    ping fengqwinsrv  先尝试FQDN解析,后NetBIOS解析,所以会慢点  ok
    
    LINUX: FQDN-->IP: dns or /etc/hosts
    
    挂载windows共享
    Linux做客户端
    centos7
    mkdir /mnt/winshare
    smbclient -L 192.168.29.1 -Uqiangge%qiangge
    mount -o username=qiangge,password=qiangge //192.168.29.1/testdir$ /mnt/winshare/
    cd /mnt/winshare/
    touch file1; ls  创建成功
    Windows
    win+r: \\192.168.29.1\testdir$  可以看到file1
    centos7
    永久存盘
    cd  离开/mnt/winshare
    umount /mnt/winshare/; df
    vim /etc/fstab
    //192.168.29.1/testdir$         /mnt/winshare   cifs credentials=/etc/winuser  0  0 
    注意:credentials=/etc/winuser  把账号和密码放到一个安全的文件里
    vim /etc/winuser
    username=qiangge
    password=qiangge
    ll /etc/winuser
    chmod 600 /etc/winuser
    mount -a; df
    删除Windows共享
    win+x+a:net share testdir$ /del
    
    挂载Linux共享
    Linux做服务器
    centos7
    yum -y install samba samba-client cifs-utils  前面做过了
    systemctl status smb  dead
    systemctl status nmb  dead
    systemctl restart smb
    systemctl restart nmb
    systemctl status smb
    systemctl status nmb
    ss -ntlp|grep smbd  TCP端口:139和445
    ss -ntlup |grep nmbd  UDP端口:137和138
    iptables -vnL; iptables -F
    Windows
    win+r:\\192.168.29.127\  出现账号和口令界面,无samba账号,不能登陆
    centos7
    useradd -s /sbin/nologin smb1  操作系统账号
    useradd -s /sbin/nologin smb2
    useradd -s /sbin/nologin smb3
    getent passwd
    which smbpasswd
    rpm -qf `which smbpasswd`  来自samba-common包
    smbpasswd -a smb1  把操作系统账号映射为samba账号
    smbpasswd -a smb2
    smbpasswd -a smb3
    pdbedit -L  查看samba账号
    ll -h /var/lib/samba/private/passdb.tdb  存放samba账号和口令,数据库文件
    strings  /var/lib/samba/private/passdb.tdb |grep smb  可以看到用户,不能看到口令
    cd ~smb1
    touch file11; ll
    Windows
    win+r:\\192.168.29.127\ 
    输入samba账号和密码即可登陆到用户的家目录里,可以写东西进去
    用smb1登陆后,smb2登陆就不行了,因为有记录
    命令行
    net use  显示记录的网络连接
    net use \\192.168.29.127\IPC$ /del  删除记录
    net use \\127.0.0.1\IPC$ /del  此记录也要删除
    net use
    win+r:\\192.168.29.127\
    smb2登陆——记住我的凭据——连接  ok
    net use  再把记录删除后,还是smb2,因为有凭据了
    打开"控制面板主页"——凭据管理器——删除记录即可
    win+r:\\192.168.29.127\  smb3登陆
    ---------------------------------------------------------------------------
    管理SAMBA用户
    smbpasswd -a user  添加samba用户
    pdbedit -a -u user  添加samba用户
    smbpasswd user  修改用户密码
    smbpasswd -x user  删除用户和密码
    pdbedit -x -u user  删除用户和密码
    pdbedit -L  查看samba用户列表
    pdbedit -L -v  详细用户列表
    smbstatus  查看samba服务器状态
    ---------------------------------------------------------------------------
    centos6
    yum -y install samba
    vim /etc/samba/smb.conf  比centos7详细
    centos7
    rpm -ql samba-common  配置文件
    cat /etc/samba/smb.conf.example
    cat /etc/samba/smb.conf  
        主配置文件,继承了.ini文件的格式,用[ ]分成不同的部分
        #和;开头的语句为注释,大小写不敏感
        宏定义
            %m 客户端主机的NetBIOS名       %M 客户端主机的FQDN
            %H 当前用户家目录路径           %U 当前用户用户名
            %g 当前用户所属组               %h samba服务器的主机名
            %L samba服务器的NetBIOS名       %I 客户端主机的IP
            %T 当前日期和时间                %S 可登录的用户名
    vim /etc/samba/smb.conf  参照centos6的配置文件进行更改
    服务器通用或全局设置的部分
    [global]    
    以下信息都有更改
            workgroup = WORKGROUP 
            (指定工作组名称:Windows——>网络——>可看到同一个网络的计算机)
            server string = Samba Server FGQ Version %v  
            (主机注释信息:不添加,显示版本,不安全,%v  版本信息)
            netbios name = FGQSERVER  
            (指定NetBIOS名:通过主机名进行解析,不用IP可以ping通)
            interfaces = lo ens33  (指定服务侦听接口和IP)
            hosts allow = 127. 192.168. .fgq.com  
            (白名单:允许访问的IP和主机名:如centos7.fgq.com)
            log file = /var/log/samba/log.%m
            (不同客户机采用不同日志,%m  客户端主机的NetBIOS名)
            log level = 2  (记录日志的级别,不写默认0——日志不详细)
            max log size = 50
            (日志文件达到50K,将轮循rotate,覆盖旧日志,单位KB)
    以下信息不变
            security = user
            [Security认证方式,user:samba用户(采用linux用户,samba的独立口令)]
            passdb backend = tdbsam  (密码数据库格式)
            printing = cups
            printcap name = cups
            load printers = yes
            cups options = raw
    特定共享设置  (此处不考虑)
            [homes]  用户的家目录共享
            [printers]  定义打印机资源和服务
            [sharename]  自定义的共享目录配置
    testparm  检查配置是否出错
    systemctl restart smb
    systemctl start nmb
    ss -ntlp|grep smb
    ss -ntulp|grep nmb
    Windows
    命令窗口
    net use /?  查看用法
    net use \\192.168.29.127\ipc$ 123456 /user:smb1
    net view \\192.168.29.127  Linux挂载成功
    net use \\FGQSERVER 123456 /user:smb1  ok
    net view \\FGQSERVER  ok
    win+r: \\FGQSERVER  输入用户名和密码可以登陆
    centos6
    smbclient -L 192.168.29.127 -Usmb1%123456  看到挂载
    smbclient -L FGQSERVER -Usmb1%123456  OK
    smbclient //192.168.29.127/smb1 -Usmb1%123456  连接OK
    get file11
    put anaconda-ks.cfg
    centos7
    cd /var/log/samba; ll
    cat og.centos6  可以看到日志,但是没有显示put和get字样
    ----------------------------------------------------------------------------------------------
    在此基础上建立一个自己的共享
    \\ip\sharename --> [sharename]
    centos7
    mkdir /app/share1
    ll /app/share1/ -d
    chmod 777 /app/share1/
    touch /app/share1/f1
    touch /app/share1/f2
    vim /etc/samba/smb.conf
    在最下面添加信息
    [share1]  [共享名称] 远程网络看到的共享名称
            comment = share1 dir  (注释信息)
            path = /app/share1  (所共享的目录路径)
            public = yes(不安全) 
      (能否被guest访问的共享,默认no,yes允许匿名连接,和"guest ok"类似)
            read only = no
      (writable=yes等价,读写--上传下载,如与以上设置冲突,放在后面的设置生效,默认只读--仅下载)
            valid users = smb1 smb2
      (特定用户才能访问该共享,如为空,将允许所有用户,用户名之间用空格分隔)
            browsable = no
      (是否允许所有用户浏览此共享,默认为yes,no为隐藏此共享,但仍可以访问)
    
    更改完配置文件后,不用重启服务,即可生效
    testparm  显示share1目录
    centos6
    smbclient -L 192.168.29.127  匿名看不到共享目录
    smbclient -L 192.168.29.127 -Usmb1%123456  smb1看不到share1共享目录
    smbclient -L 192.168.29.127 -Usmb3%123456  smb3看不到共享目录
    smbclient //192.168.29.127/share1  匿名不能连接共享("public = yes"配置,"valid users"配置)
    smbclient //192.168.29.127/share1 -Usmb1%123456  smb1看不到,但可连接共享
    get f1  下载
    put anaconda-ks.cfg  上传("read only = no"配置)
    smbclient //192.168.29.127/share1 -Usmb3%123456  smb3不能连接共享("valid users"配置)
    
    windows
    命令窗口
    net use  删除所有记录
    net use  \\192.168.29.127\ipc$ /del
    net use \\FGQSERVER\IPC$ /del
    win+r: \\192.168.29.127\  
    所有账号都不能看到共享目录,只能看到家目录("browsable = no"配置)
    搜索栏: \\192.168.29.127\share1  smb1/2仍可访问共享目录
    ----------------------------------------------------------------------------------------------
    上面例子的权限设置:smb1/2可读写,smb3不能访问
    权限设置:smb1/2可读写,smb3只读
    centos7
    vim /etc/samba/smb.conf
    [share1]
            comment = share1 dir
            path = /app/share1
            public = yes
            read only = yes  (更改处: no-->yes) or (等价: writable = no)
            browsable = no
            hosts allow = 127. 192.168.29.126 .fgq.com  (添加,允许访问的IP和主机名)
            write list = smb1 smb2  (添加)
        (三种形式:用户,@组名,+组名,用,分隔,如writable=no,列表中用户或组可读写,不在列表中用户只读)
            或者
            write list = smb1,smb2,@g1(or +g1)
            groupadd g1
            usermod -aG g1 smb3  把smb3加入到g1组里(可读写)
    centos6
    smbclient //192.168.29.127/share1 -Usmb3%123456  no
    smbclient //192.168.29.127/share1 -Usmb1%123456  ok
    或者
    smbclient //192.168.29.127/share1 -Usmb3%123456  ok  把smb3加入到g1组里
    lcd /etc 
    put fstab  ok
    当前目录为/etc
    pwd; !ls
    lcd ..; pwd
    centos7-3
    smbclient //192.168.29.127/share1 -Usmb3%123456  no  不允许访问
    ("hosts allow"配置: 允许特定的IP访问此共享目录)
    
    centos6
    vim /etc/fstab
    添加信息
    //192.168.29.127/share1          /mnt/share1   cifs credentials=/etc/share1user  0  0
    mkdir /mnt/share1
    vim /etc/share1user
    username=smb3
    password=123456
    df; mount -a; df
    cd /mnt/share1; touch file1; mkdir dir1; ll  所建文件644权限,文件夹755
    centos7
    vim /etc/samba/smb.conf
    [share1]最下面添加信息
            create mask = 0642
    centos6
    cd /mnt/share1; touch file2; mkdir dir2; ll  
    所建文件还是644权限,文件夹还是755
    挂载方式受本机的umask值影响
    smbclient //192.168.29.127/share1 -Usmb1%123456
    put anaconda-ks.cfg
    cd /mnt/share1
    ll  发现上传的anaconda-ks.cfg文件是642权限
    smbclient方式是samba配置文件设置的权限
    ----------------------------------------------------------------------------------------------
    centos7
    用户访问的目录不一样,用户的权限也可以单独定义
    /app/share1已经创建
    mkdir /app/share2
    mkdir /app/share3  
    3个文件夹都是755权限
    touch /app/share1/share1.txt
    touch /app/share2/share2.txt
    touch /app/share3/share3.txt
    vim /etc/samba/smb.conf
    [global]
    添加信息
            config file = /etc/samba/user_conf/%U  每个用户的配置文件单独存放此处
    [share1]
            comment = share1 dir
            path = /app/share1
            read only = yes
            browsable = no
    mkdir /etc/samba/user_conf
    cd /etc/samba/user_conf  
    vim smb2
    [share1]
            comment = share1 dir
            path = /app/share2
            read only = yes
            browsable = no
    vim smb3
    [share1]
            comment = share1 dir
            path = /app/share3
            read only = yes
            browsable = no
    smb1不定义默认登陆到/app/share1里
    centos6
    smbclient //192.168.29.127/share1 -Usmb1%123456  登陆到/app/share1
    dir/ls
    smbclient //192.168.29.127/share1 -Usmb2%123456  登陆到/app/share2
    dir/ls
    smbclient //192.168.29.127/share1 -Usmb3%123456  登陆到/app/share3
    dir/ls
    ----------------------------------------------------------------------------------------------
    在samba客户端用实现多用户访问
    CentOS7支持  CentOS6不支持
    centos7
    vim /etc/samba/smb.conf
    [global]
            #config file = /etc/samba/user_conf/%U  此处注释掉
    [share1]
            comment = share1 dir
            path = /app/share1
            read only = yes
            write list = smb1 smb3
            browsable = no
    chmod 777 /app/share1
    centos7-3
    yum -y install samba samba-client cifs-utils
    smbclient //192.168.29.127/share1 -Usmb1%123456  smb1/2/3都ok
    vim /etc/fstab
    //192.168.29.127/share1    /mnt/share1   cifs credentials=/etc/share1user,multiuser  0  0
    mkdir /mnt/share1
    vim /etc/share1user
    username=smb3
    password=123456
    df; mount -a; df
    ls /mnt/share1
    touch /mnt/share1/file31  ok  此时访问的是smb3
    useradd smb1
    useradd smb2  客户端用户名和samba服务器的名字相同才可以
    su - smb1
    cifscreds add 192.168.29.127
    ls /mnt/share1/
    touch  /mnt/share1/f11
    exit
    su - smb2  权限禁止(原因:"write list"配置里没有smb2)
    cifscreds add 192.168.29.127
    ls /mnt/share1/  权限禁止
    touch  /mnt/share1/f22  权限禁止
    ----------------------------------------------------------------------------------------------
    实现图形化管理
    centos6
    第一张盘
    yum list samba xinetd  
    yum -y install samba xinetd  
    关机挂第二张盘(最好自己刻录把两张盘弄到一个盘里)
    samba-swat安装包在CentOS6(第二张光盘)上
    rpm -ivh /misc/cd/Packages/samba-swat-3.6.23-41.el6.x86_64.rpm  
    chkconfig --list  有swat服务
    vim /etc/xinetd.d/swat
    port            = 901
    only_from       = 127.0.0.1  此行改为192.168.29.0/24
    disable         = yes  此行改为no
    service smb restart
    service xinetd restart
    ss -ntl  901端口
    cat /etc/samba/smb.conf  有注释
    浏览器: 192.168.29.126:901  
    root登陆-->GLOBALS-->更改配置后-->Commit Changes
    cat /etc/samba/smb.conf  无注释
    注意:commit changes后会自动重新加载配置,且自动将/etc/samba/smb.conf中原有的注释全删除
    
    防火墙和SELinux配置,开机禁用,所以,此处不考虑
    
    

    相关文章

      网友评论

        本文标题:samba

        本文链接:https://www.haomeiwen.com/subject/cpaiqftx.html