代码改变世界

快速配置 Samba 将 Linux 目录映射为 Windows 驱动器

2011-11-18 17:51  Mr.大侠  阅读(823)  评论(0编辑  收藏  举报
http://blog.s135.com/samba_linux_windows/]

  一、局域网内的 Linux 服务器上操作步骤:

  1、安装samba(CentOS Linux):
yum install samba system-config-samba samba-client samba-common


  2、创建www账号
/usr/sbin/groupadd www
/usr/sbin/useradd -g www www

mkdir -p /data0/knose/
chmod 777 /data0/knose/

mkdir -p /data0/htdocs/
chown -R www:www /data0/htdocs/
chmod 777 /data0/htdocs/

cat /etc/passwd | mksmbpasswd.sh> /etc/samba/smbpasswd


  3、创建samba配置文件
mv -f /etc/samba/smb.conf /etc/samba/smb.conf.bak
vi /etc/samba/smb.conf

  输入以下内容:
引用
[global]
server string = Samba Server
security = user
encrypt passwords = yes 
smb passwd file = /etc/samba/smbpasswd

[knose]
workgroup = root
netbios name = root
path = /data0/knose
browseable = yes
writeable = yes

[web]
workgroup = www
netbios name = www
path = /data0/htdocs
browseable = yes
writeable = yes


  4、为samba用户www、root设立一个密码:
smbpasswd -a www
smbpasswd -a root


  5、启动samba:
/sbin/service smb start




  二、局域网内的 Windows 服务器上操作步骤:

  1、Windows 上访问 samba,在“我的电脑”中输入:
\\xxx.xxx.xxx.xxx\


  2、Windows 断开 samba 共享连接,在【开始】→【运行】→【cmd】回车中输入:
net use * /del


  3、将 samba 共享的 Linux 目录,映射成 Windows 的一个驱动器盘符:

  

  

  




  三、跨平台C/C++代码编译、调试:

  用 Windows 下的编辑器编写、修改跨平台的C/C++代码,保存后,无需复制到其他地方,即可同时用 Windows 下的 Visual Studio,Linux 下的 g++、gcc、gdb,编译、调试程序了。

  

  

  注意:在samba共享的驱动器上执行“.bat”批处理脚本,会导致 Windows 蓝屏,这一点需要注意。
 
安装过程中出现的问题:
1. 启动samba后,/var/log/messages日志里报错(或者执行smbd -Fi -d 2)
bind failed on port 139 socket_addr = 0.0.0.0.
Error = Address already in use
smbd_open_once_socket: open_socket_in: Address already in use
# netstat -anpl|grep mbd
tcp 0 0 :::445 :::* LISTEN 2754/smbd
tcp 0 0 :::139 :::* LISTEN 2754/smbd
 p 0 0 192.168.1.83:137 0.0.0.0:* 2757/nmbd 
 p 0 0 0.0.0.0:137 0.0.0.0:* 2757/nmbd 
 p 0 0 192.168.1.83:138 0.0.0.0:* 2757/nmbd 
 p 0 0 0.0.0.0:138 0.0.0.0:* 2757/nmbd
445和139这两端口是在ipv6地址上监听的,并没有在ipv4地址上监听。
解决方法1:
# echo 1 > /proc/sys/net/ipv6/bindv6only
# echo "net.ipv6.bindv6only = 1" >> /etc/sysctl.conf
将/proc/sys/net/ipv6/bindv6only设置为0时,smbd将只监听ipv6上的端口。将/proc/sys/net/ipv6/bindv6only设置为1时,smbd将同时监听ipv6和ipv4上的端口。
解决方法2:
编辑smb.conf文件,设置bind interfaces only = yes(默认是no)。
2. smb,nmb服务都启动,但是从windows还是无法连接过去。
解决方法:
学习的时候注意关闭安全模块以及防火墙.
1).setsebool -P samba-enable_home_dirs on
2). vi /etc/selinux/configSElinux=disabled
3). iptables -F
 
==================================================================================================
最近搞了个centos的服务器,但是如果不能进行文件的共享传递,着实麻烦,所以着手安装samba服务,
网上多数是采用rpm安装的,其实联网的话,可以使用yum来安装的,我们就用最简单的方法安装:
1. 使用yum安装
# yum install samba
2. 查看samba安装在了哪里
[root@dev01 ~]# whereis samba
samba: /etc/samba /usr/share/samba /usr/share/man/man7/samba.7.gz
3. 配置/etc/samba/smb.conf

# vi /etc/samba/smb.conf

workgroup=WORKGROUP

hosts allow = 127. 192.168.

[share]
comment=Share
path=/var/samba/share
writable=yes
public=yes

4. 配置的共享目录设置权限

# mkdir /var/samba/share 如刚才配置的共享目录不存在则创建
# chown -R nobody. /var/samba/share 设置共享目录归属为 nobody
# chmod 777 /var/samba/share 将共享目录属性设置为 777 
添加samba用户(可以不用加新的用户,如果只是自己用的话)

# smbpasswd -a root
# service smb restart