配置samba服务器前提:
samba服务器和你客户机在同一个网段,同一个工作组
samba服务器的配置文件是/etc/samba/smb.conf
一、创建一个系统用户用来访问samba服务器
# useradd admin
二、配置共享模式的samba服务器
1、修改用户组
修改smb.conf文件中的workgroup为
引用
workgroup = WORKGROUPNAME
这里的工作组名字和你本机(可能是window)里的工作组一致
2、设置访问模式
修改smb.conf文件,把其中的
引用
security = user
修改成
引用
security = share
3、设置共享文件
在smb.conf文件里面添加这样的内容
引用
[public]
comment = Public Stuff
path = /tmp
public = yes
writable = yes
guest ok = yes
4、测试
输入以下命令测试smb.conf的正确性
# testparm
三、安全设置
1、iptables
在/ete/sysconfig/iptables里开放samba的端口
引用
-A RH-Firewall-1-INPUT -m state --state NEW -m tcp -p tcp --dport 139 -j ACCEPT
-A RH-Firewall-1-INPUT -m state --state NEW -m tcp -p tcp --dport 445 -j ACCEPT
四、本地调试
1、smbclient调试
# smbclient -L //127.0.0.1/public
有反应后即表示测试成功
2、挂载
# mount -t cifs //127.0.0.1/public /mnt
挂载完后去mnt底下看是否有public的文件,如果有部分文件不能显示出来,说明这是权限问题。
在linux中,最终文件是否可读取,根本是可访问性。需要把public文件设为
# chmod 2770 public
2770中的2代表了setuid/gid,当文件被执行时,根据who参数指定的用户类型设置文件的setuid或者setgid权限
五、增加密码
1、修改访问模式
在smb.conf当中,修改security = share为
引用
security = user
2、配置目录
引用
[public]
comment = Public Stuff
path = /tmp
public = yes
writable = yes
write list = +admin
其中,admin既代表方才添加的组admin
3、设置密码
查看所有可访问samba的账户
# pdbedit -L
设置admin的samba密码
# pdbedit -a -u admin
samba密码和linux密码不一样,但是samba用户必须是linux用户
4、修改密码
# smbpasswd admin
六、读取home目录
# mount -t cifs //127.0.0.1/public /mnt -o username=admin
挂载之后发现,除了public目录以外,还有一个admin目录
这个目录对应着linux系统内的/home/admin
但是,却看不到admin中的任何文件
原因只可能是selinux
# setsebool -P samba_enable_home_dirs=1
备注:
要是还看不到文件,请查看被共享文件夹的权限,应该设为2770;
其次,看系统日志,8成是selinux把它禁了
比如你明明把/tmp文件夹和/share文件夹同样的设置然后列出,但是/share不停地弹出对话框,要求输guest的密码,结果死活都进不去,那是因为:
引用
drwxrwxrwx root root system_u:object_r:default_t share
drwxr-xr-x root root system_u:object_r:var_t srv
drwxr-xr-x root root system_u:object_r:sysfs_t sys
drwxrwxrwt root root system_u:object_r:tmp_t tmp
所以把share的type改成tmp_t就可以访问了
# chocon -R -t tmp_t share
另外,如果弹出的是警告框,那说明目录权限不对
文件权限设为664
文件夹权限设为775
群组文件夹设为2770