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配置,开机禁用,所以,此处不考虑
网友评论