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