从在 VirtualBox 刚装好的 RedHat 开始,首先安装 samba,检查 samba 是否已经安装
[root@com5 Desktop]# rpm -qa | grep samba
samba-winbind-3.6.9-151.el6.x86_64
samba-winbind-clients-3.6.9-151.el6.x86_64
samba4-libs-4.0.0-55.el6.rc4.x86_64
samba-client-3.6.9-151.el6.x86_64
samba-common-3.6.9-151.el6.x86_64
配置 yum 源为 ISO 文件
在virtualBox 菜单中选择 Devices --> CD/DVD Devices --> choose a virtual CD/DVD disk file... 找到 ISO 文件找到 ISO 文件所在路径,进入 /media 目录 tab 提示出目录以避免路径字符转义问题,将路径/RHEL_6.4\ x86_64\ Disc\ 1/ 复制到repo文件
修改 /etc/yum.repos.d/rhel-source.repo 文件,添加一个ISO 文件所在路径,将其他yum源禁用
[iso]
name=use ISO install
baseurl=file:///media/RHEL_6.4\ x86_64\ Disc\ 1/
enabled=1
gpgcheck=0
安装 samba,设置smb服务开机自启动
[root@com5 Desktop]# yum install samba
[root@com5 Desktop]# rpm -qa | grep samba
samba-3.6.9-151.el6.x86_64
samba-winbind-3.6.9-151.el6.x86_64
samba-winbind-clients-3.6.9-151.el6.x86_64
samba4-libs-4.0.0-55.el6.rc4.x86_64
samba-client-3.6.9-151.el6.x86_64
samba-common-3.6.9-151.el6.x86_64
[root@com5 yum.repos.d]# chkconfig | grep smb
smb 0:off 1:off 2:off 3:off 4:off 5:off 6:off
[root@com5 yum.repos.d]# chkconfig smb on
[root@com5 yum.repos.d]# chkconfig | grep smb
smb 0:off 1:off 2:on 3:on 4:on 5:on 6:off
创建共享目录和文件
[root@com5 /]cd /
[root@com5 /]mkdir smbshare
[root@com5 /]# echo sambaData > /smbshare/file1.data
[root@com5 /]# ll smbshare/
total 4
-rw-r--r--. 1 root root 10 Dec 28 05:22 file1.data
[root@com5 /]# ll -d smbshare/
drwxr-xr-x. 2 root root 4096 Dec 28 05:22 smbshare
添加访问用户
[root@com5 /]# useradd smbuser1
[root@com5 /]# smbpasswd -a smbuser1
New SMB password:
Retype new SMB password:
Added user smbuser1.
[root@com5 /]#
编辑 /etc/samba/smb.conf 文件,在最后添加下面两行,分别为共享名和共享目录
[shareA]
path = /smbshare
重启 smb 服务
[root@com5 samba]# service smb restart
在 Windows 中访问 SMB 共享目录: 在浏览器中访问 SMB 服务IP, \\192.168.1.111,输入添加的用户 smbuser1 和密码
可以看到在 /etc/samba/smb.conf 中配置的 shareA 目录,但无权限访问。
在主机中测试,同样无法访问
[apache@indigo ~]$ uname -a
Linux indigo 3.10.10-200.fc19.x86_64 #1 SMP Thu Aug 29 19:05:45 UTC 2013 x86_64 x86_64 x86_64 GNU/Linux
[apache@indigo ~]$ smbclient -L //192.168.1.111 -U smbuser1%smbuser1
Domain=[MYGROUP] OS=[Unix] Server=[Samba 3.6.9-151.el6]
Sharename Type Comment
--------- ---- -------
shareA Disk
IPC$ IPC IPC Service (Samba Server Version 3.6.9-151.el6)
smbuser1 Disk Home Directories
Domain=[MYGROUP] OS=[Unix] Server=[Samba 3.6.9-151.el6]
Server Comment
--------- -------
Workgroup Master
--------- -------
[root@indigo apache]# mount -t cifs //192.168.1.111 /tmp/smbshare/ -o username=smbuser1,password=smbuser1
[root@indigo smbmount]# cd /tmp/smbmount/
[root@indigo smbmount]# ll
ls: reading directory .: Permission denied
total 0
这个访问问题是由于 SeLinux 阻挡了,解决办法有三个: 关闭SeLinux,临时修改SeLinux boolean值或修改共享目录的属性
方法一、关闭 Selinux:
[root@com5 Desktop]# setenforce 0
方法二、修改 Selinux boolean 值,只要查看可能需要修改哪些值,最多将他们全部修改即可,例如下面如设置了 samba_export_all_rw 一个值,客户端便可以访问了
[root@com5 Desktop]# getsebool -a | grep samba
samba_create_home_dirs --> off
samba_domain_controller --> off
samba_enable_home_dirs --> off
samba_export_all_ro --> off
samba_export_all_rw --> off
samba_portmapper --> off
samba_run_unconfined --> off
samba_share_fusefs --> off
samba_share_nfs --> off
sanlock_use_samba --> off
use_samba_home_dirs --> off
virt_use_samba --> off
[root@com5 Desktop]# setsebool samba_export_all_rw=1
[root@com5 Desktop]# getsebool -a | grep samba
samba_create_home_dirs --> off
samba_domain_controller --> off
samba_enable_home_dirs --> off
samba_export_all_ro --> off
samba_export_all_rw --> on
samba_portmapper --> off
samba_run_unconfined --> off
samba_share_fusefs --> off
samba_share_nfs --> off
sanlock_use_samba --> off
use_samba_home_dirs --> off
virt_use_samba --> off
[root@com5 Desktop]#
方法三、修改共享目录的标签
在文件 /etc/samba/smb.conf 中已经告诉我们该怎么做了,拿过来运行一下就可以了
[root@com5 samba]# chcon -R -t samba_share_t /smbshare/
[root@com5 samba]# ls -ldZ /smbshare/
drwxr-xr-x. root root unconfined_u:object_r:samba_share_t:s0 /smbshare/
[root@com5 samba]#
以上即为 SMB 的最简配置