零, 实验环境
SambaServer:192.168.80.100/24
SambaClient:192.168.80.110/24
WinXP:192.168.80.120/24
一, 安装
1, 安装 Samba 服务
yum install samba
2, 查看相关软件包
rpm -qa | grep samba
samba4-libs-4.2.10-12.el6_9.x86_64
samba-winbind-3.6.23-45.el6_9.x86_64
samba-client-3.6.23-45.el6_9.x86_64
samba-3.6.23-45.el6_9.x86_64
samba-winbind-clients-3.6.23-45.el6_9.x86_64
samba-common-3.6.23-45.el6_9.x86_64
3, 查看 Samba 相关配置文件
rpm -qc samba
/etc/logrotate.d/samba
/etc/pam.d/samba
/etc/samba/smbusers
4, 查看 Samba 主配置文件
cat /etc/samba/smb.conf
5, 设置开机自动启动 samba 服务
chkconfig smb on
6, 启动 samba 服务
service smb start
二, 配置防火墙规则
1, 检查防火墙是否启动, 是否开机启动
service iptables start
chkconfig iptables on
2, 添加防火墙规则, 允许客户端访问共享文件夹
iptables -I INPUT -p tcp --dport 139 -j ACCEPT
iptables -I INPUT -p tcp --dport 445 -j ACCEPT
iptables -I INPUT -p udp --dport 137 -j ACCEPT
iptables -I INPUT -p udp --dport 138 -j ACCEPT
3, 保存防火墙规则
/sbin/service iptables save
4, 查看防火墙配置
iptables -L
三, Samba 服务器的配置文件
1, 查看 Samba 主配置文件
cat /etc/samba/smb.conf
2, 重命名配置文件
mv /etc/samba/smb.conf /etc/samba/smb.conf.bak
3, 去掉注释行并产生新的配置文件
grep -v "#" /etc/samba/smb.conf.bak >/etc/samba/smb.conf
4, 测试配置文件是否正确
testparm -v
四, 设置允许匿名用户访问的 Samba 服务器
1, 创建文件夹
mkdir /data
2, 修改权限
chmod 777 /data
3, 设置配置文件
vi /etc/samba/smb.conf
[smb.conf]
①将 [global] 中 security 改为 = share
②在后边添加以下内容
[data]
comment = dataFile #设置共享的说明信息 (描述)
path = /data #指定共享目录的路径
browseable = yes #所有 samba 用户都可以看到该目录 (是否可见)
read only = no #允许只读 (NO, 可读写)
public = yes #是否允许匿名用户访问
create mode =0664 #与 create mask 参数意思相同, 在主目录中建立一个文件的默认权限
directory mode =0775 #与 directory mask 参数意思相同, 在主目录中建立一个目录时的默认权限
writable = yes #用户对共享目录可写
4, 重启 Samba 服务
service smb restart
5, 验证: 在 XP 上访问 Samba 服务器
①在浏览器中输入 \ 192.168.80.100
②上传测试文件
③查看权限
ll /data/
总用量 8
-rw-rw-r-- 1 nobody nobody 23 1 月 25 21:22 test.txt 664
drwxrwxr-x 2 nobody nobody 4096 1 月 25 21:24 zhang 775
6, 减少在 Windows 中打开 Samba 服务器的等待时间
vi /etc/hosts
[hosts]
127.0.0.1 SambaServer #写自己的计算机名
::1 localhost localhost.localdomain localhost6 localhost6.localdomain6
五, 创建需要登录的 Samba 服务器
1, 修改 Samba 配置文件来支持验证
vi /etc/samba/smb.conf
[smb.conf]
security = user #修改
2, 关于 samba 用户密码的文件
存放 samba 用户密码的文件有两种类型
数据库文件
/var/lib/samba/private/passdb.tdb
密码文件
/var/lib/samba/private/smbpasswd
3, 创建 Linux 用户并设置密码
useradd zhang
useradd wang
passwd zhang
passwd wang
4, 将 Linux 用户添加到 Samba 用户并设置密码
smbpasswd -a zhang
smbpasswd -a wang
5, 查看有几个 Samba 用户
pdbedit -L
PS:
Smbpasswd: 主要作用是为系统创建用户创建 samba 用户
-a 新建用户
使用的时候创建的 samba 用户必须在系统用户中存在. 否则 samba 找不到系统用户则创建失败
-d 冻结用户, 就是这个用户不能在登录了
-e 恢复用户, 解冻用户, 让冻结的用户可以在使用
-n 把用户的密码设置成空.
-x 删除用户
pdbedit: 管理 samba 用户数据库的一个工具
pdbedit -a -u username 增加一个 samba 用户
pdbedit -x samba_user 删除用户
pdbedit -L 查看创建的 samba 用户
6, 验证: 在 WindowsXP 访问并进行上传修改操作, 在 Linux 上用 ll 对应目录 可以查看文件所有者.
PS: 如想快速切换用户可以在 CMD 中用 net use * /del 删除访问凭证.
六, 更改 samba 用户密码文件
1, 修改配置文件
vi /etc/samba/smb.conf
在 [global] 中修改 passdb backend = 为 smbpasswd, 保存并重启.
2, 查看用户数据库文件夹中有没有密码文件
ll /var/lib/samba/private/
3, 查看 Samba 用户的状态
pdbedit -L
回车后为空, 需要创建账户
4, 将 Linux 用户添加到 Samba 用户并设置密码
smbpasswd -a zhang
smbpasswd -a wang
5, 再次查看
pdbedit -L
zhang:500:
wang:501:
6, 查看 Samba 账户密码文件
cat /var/lib/samba/private/smbpasswd
zhang:500:XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX:3DBDE697D71690A769204BEB12283678:[U ]:LCT-5A69E386:
wang:501:XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX:5A420E7750B39BE09FA29D314FA4B51C:[U ]:LCT-5A69E38C:
7, 验证: 再次在 WindowsXP 访问
七, 设置 Samba 服务器网络安全
1, 网络访问控制
①设置 Samba 服务允许通过哪个地址或哪个网卡来访问 (根据实际情况设置)
vi /etc/samba/smb.conf
[smb.conf]
; interfaces = lo eth1 #寻找这个, 根据你的实际情况设置, 可使用 ifconfig 查看
interfaces = 192.168.80.100/24 #添加
bind interfaces only = YES #强制绑定
重启服务, 在 Windows 客户端中检查可否访问
service smb restart
②设置那些网段能够访问 Samba 服务器
vi /etc/samba/smb.conf
; interfaces = lo eth0
interfaces = 192.168.80.222/24
bind interfaces only = YES
hosts allow = 127. 192.168.80.0/24 EXCEPT 192.168.80.130 ,192.168.80.131 #允许那个网段访问, EXCEPT 排除那个访问
hosts deny = 192.168.80.140
PS:
a. 等价某一个网段写法:
例如:
192.168.80.X 等价于 192.168.80.0/24 等价于 192.168.80.0/255.255.255.0
b. 在 Samba 服务器中允许优先
③设置文件夹允许那些网段访问
客户端必须先通过全局网络设置允许访问 Samba 服务才可以, 以下设置 data 文件夹只允许 192.168.80.10 和 192.168.80.20 访问.
vi /etc/samba/smb.conf
[data]
comment = dataFile
path = /data
browseable = yes
read only = no
public = yes
create mode =0444
directory mode =0775
writable = yes
hosts allow = 192.168.80.10 192.168.80.20
④设置哪些用户能够访问共享文件夹
invalid users 是合法用户, valid users 是不合法用户. 这两个参数分别设置允许访问文件夹和不允许访问文件夹的用户列表. 一个用户同时出现在两个列表中的时候, 不允许注册优先. 列表中的用户名可以用逗号隔开.@表示组, 代表组中全部成员.
例如:
valid users = @managers invalid users = wang,
zhang
a. 创建组, 并将用户添加到组, 授权某个组能够访问共享文件夹
groupadd managers #创建组
usermod -G managers zhang #将 zhang 加入组
usermod -G managers wang #将 wang 加入组
b. 更改 samba 配置文件
vi /etc/samba/smb.conf
修改以下配置:
[data]
comment = dataFile
path = /data
browseable = yes
valid users = @managers #允许那个组访问
invalid users = wang #不合法用户 (拒绝优先)
; valid users = zhang,wang #合法用户
read only = no
; public = yes
create mode =0444
directory mode =0775
writable = yes
; hosts allow = 192.168.80.10 192.168.80.20
④设置用户访问共享文件夹权限
a. 设置文件夹默认的访问权限
read only = no
writeable = yes
b. 指定用户对共享文件夹的访问
write list = zhang
read list = wang
这两个参数分别指定只允许对一个服务进行只读访问或同时有 "写" 权限的主机列表, 这里, 如果一个主机同时在两个列表里, 则 "写" 优先.
c. 在 Windows 中删除访问共享文件夹凭证的命令
net use * /del
d. 修改配置文件来实现功能
vi /etc/samba/smb.conf
[data]
comment = dataFile
path = /data
browseable = yes
valid users = @managers
; invalid users = wang
read only = yes #默认情况下只读
write list = zhang #特定用户写入
read list = wang #特定用户只读
; public = yes
create mode =0444
directory mode =0775
writable = yes
⑤设置共享文件夹是否可见
browsable #可见
browseable #隐藏
这两个功能相同的参数控制该段是否在浏览列表中列出. 浏览列表列出的是可获得的共享列表. 一般 [home] 段禁止浏览, 以提高安全性.
必须输入共享名才能访问隐藏的共享.
可以修改配置文件
[data]
comment = dataFile
path = /data
browseable = yes
valid users = @managers
; invalid users = wang
read only = yes
write list = zhang
read list = wang
; public = yes
create mode =0444
directory mode =0775
writable = yes
browsable = no
; hosts allow = 192.168.80.10 192.168.80.20
验证后发现输入共享名才能访问.
八, 将 Windows 用户映射到 samba 用户
1, 编辑名称映射文件
vi /etc/samba/smbusers
[smbusers]
# Unix_name = SMB_name1 SMB_name2 ...
root = administrator admin
nobody = guest pcguest smbguest
#当 Windows 用户输入等号后边的用户名等价于前边的 Linux 用户
2, 编辑配置文件, 添加一行, 指定映射文件位置和名称
vi /etc/samba/smb.conf
[smb.conf]
security = user
passdb backend = smbpasswd
# 添加一行, 用户映射文件
username map = /etc/samba/smbusers
3, 将 root 用户添加到 samba 用户
smbpasswd -a root
4, 验证: 在 WindowsXP 上使用 administrator 访问, 可以看到使用 root 用户连接到了 samba.
九, 在 Linux 上访问 Samba 服务器
1, 使用 smbclient(192.168.80.110) 在 zhang 用户来查看 Samba 服务器有那些共享
smbclient -L 192.168.80.100 -U zhang
2, 使用 smbclient(192.168.80.110) 命令访问共享文件夹
smbclient //192.168.80.100/data -U zhang
3, 输入? 可查看 smbclient 所有可用命令
Domain=[MYGROUP] OS=[Unix] Server=[Samba 3.6.23-45.el6_9]
smb: \> ?
? allinfo altname archive blocksize
cancel case_sensitive cd chmod chown
close del dir du echo
exit get getfacl geteas hardlink
help history iosize lcd link
lock lowercase ls l mask
md mget mkdir more mput
newer open posix posix_encrypt posix_open
posix_mkdir posix_rmdir posix_unlink print prompt
put pwd q queue quit
readlink rd recurse reget rename
reput rm rmdir showacls setea
setmode stat symlink tar tarmode
timeout translate unlock volume vuid
wdel logon listconnect showconnect ..
!
smb: \>
smb: \> get wang.txt #下载文件
smb: \> q #退出
4, 查看下载的文件
ls
anaconda-ks.cfg install.log install.log.syslog wang.txt
5, 这么下载是很不方便的, 所以我们可以将 samba 服务器共享文件夹挂在到本地
mkdir /mnt/data
mount -t cifs -o username=zhang //192.168.80.100/data /mnt/data/
Password:
# 输入密码
6, 使用 smbclient(192.168.80.110) 在 Linux 访问 WindowsXP 共享文件夹
①在 Windows 设置共享策略和共享文件夹并关闭防火墙 (如没有账号可在 CMD 中用 net user 用户名 密码 /add 来创建用户)
mkdir /mnt/winxp
mount -t cifs -o username=zhangyujia //192.168.80.120/winxp /mnt/winxp
Password:
# 输入密码
②创建文件测试
touch /mnt/winxp/test.txt
来源: http://www.bubuko.com/infodetail-2475586.html