首页 > 代码库 > samba (smb)

samba (smb)

1、介绍;

SMB协议(samba程序),是一组用来在局域网中共享文件、打印机设备的协议。

在SMB协议出现之前,已存在FTP及NFS。


FTP可以实现网络文件的浏览,下载及上传,但却无法很方便的对网络文件进行查看、修改。

NFS(NetworkFile System)解决了FTP的问题,可以方便的查看及修改网络文件。但是只能在windows之间使用。

因此Tridgwell开发出了SMB协议(Server Message Block),支持windows与linux系统文件共享。当然也支持windows之间,linux之间的文件共享。

之所以叫samba这个名字是由于SMBServer这个名字注册被拒绝了。


2、应用情况举例:

我们在windows上安装了linux虚拟机ubuntu,并于ubuntu中下载了code。

此时很多时候我们并不希望在ubuntu中去浏览、修改code,

因为对我们来说在windows下使用source insight浏览修改大工程code会更舒服些。

在这个情况下,我们就可以使用samba将code共享给windows,这样查看修改代码可以在windows中进行,而编译可以在secureCRT中进行,这样ubuntu可以一直隐藏在后台(作为一台虚拟服务器存在)。


3、使用samba共享文件给windows举例:

samba配置文件路径 /etc/samba/smb.conf

samba服务路径/etc/init.d/smbd

3.1、确认我们的系统是否安装并启用了samba服务。

3.1.1、服务已开启

jetxu@ubuntu:/etc/init.d$ ps -e|grep smb

   844 ?        00:00:00 smbd

   916 ?        00:00:00 smbd

   989 ?        00:00:00 smbd

  1908 ?        00:00:00 smbd

  2653 ?        00:00:00 smbd

jetxu@ubuntu:/etc/init.d$ ps au -e|grep smb

root        844  0.0  0.7 316720 15780 ?        Ss   07:54   0:00 smbd -F

root        916  0.0  0.2 308760  5232 ?        S    07:54   0:00 smbd -F

root        989  0.0  0.3 316728  6688 ?        S    07:54   0:00 smbd -F

root       1908  0.0  0.7 324068 14668 ?        S    08:28   0:00 smbd -F

root       2653  0.0  0.7 324284 15432 ?        S    09:24   0:00 smbd -F

jetxu      2990  0.0  0.1  15948  2200 pts/0    S+   10:08   0:00 grep --color=auto smb

3.1.2、samba服务并没有开启

jetxu@ubuntu:/etc/init.d$ smbd start

3.1.3、samba并未安装

jetxu@ubuntu:/etc/init.d$ sudo apt-get install samba

Reading package lists... Done

Building dependency tree       

Reading state information... Done

samba is already the newest version.

The following packages were automatically installed and are no longer required:

  libntdb1 python-ntdb

Use ‘apt-get autoremove‘ to remove them.

0 upgraded, 0 newly installed, 0 to remove and 25 not upgraded.

 

3.2、配置smb.conf

3.2.1、我们大致看看smb.conf内容

jetxu@ubuntu:/etc/samba$ cat smb.conf|grep -v "#" |grep -v ";" |grep -v "^$"> 1.txt

jetxu@ubuntu:/etc/samba$ cat 1.txt

[global]

   workgroup = WORKGROUP

        server string = %h server (Samba, Ubuntu)

   dns proxy = no

   log file = /var/log/samba/log.%m

   max log size = 1000

   syslog = 0

   panic action = /usr/share/samba/panic-action %d

   server role = standalone server

   passdb backend = tdbsam

   obey pam restrictions = yes

   unix password sync = yes

   passwd program = /usr/bin/passwd %u

   passwd chat = *Enter\snew\s*\spassword:* %n\n *Retype\snew\s*\spassword:* %n\n *password\supdated\ssuccessfully* .

   pam password change = yes

   map to guest = bad user

   usershare allow guests = yes

[printers]  ##### 打印机的共享

   comment = All Printers

   browseable = no

   path = /var/spool/samba

   printable = yes

   guest ok = no

   read only = yes

   create mask = 0700

[print$]

   comment = Printer Drivers

   path = /var/lib/samba/printers

   browseable = yes

   read only = yes

   guest ok = no

#####   此处为我共享的文件 ####

[msm9607]  #### 在网络中的共享名

comment = say something about how to use this

read only = no

writeable=yes

locking = no

path = /home/jetxu/works   #### 共享路径

public = no #### 此处使用yes的话,那么所有人可以查看该共享路径(等同于 guest ok = yes)

技术分享


3.2.2、共享配置

[msm9607]  #### 在网络中的共享名

comment = say something about how to use this

read only = no

writeable=yes

locking = no

path = /home/jetxu/works   #### 共享路径

public = no #### 此处使用yes的话,那么所有人可以查看该共享路径(等同于 guest ok = yes)


3.2.3、账户配置

如果上面我们使用guest ok = yes选项,那么不需要配置账户。

如果我们使用public = no 那么如下,我们需要配置登入账户。

技术分享

比如我们配置账户jet

jetxu@ubuntu:~$ sudo useradd jet

[sudo] password for jetxu: 

jetxu@ubuntu:~$ sudo pdbedit -a jet

new password:

retype new password:

Unix username:        jet

NT username:          

Account Flags:        [U          ]

User SID:             S-1-5-21-3603447644-3270005263-50691286-1003

Primary Group SID:    S-1-5-21-3603447644-3270005263-50691286-513

Full Name:            

Home Directory:       \\ubuntu\jet

HomeDir Drive:        

Logon Script:         

Profile Path:         \\ubuntu\jet\profile

Domain:               UBUNTU

Account desc:         

Workstations:         

Munged dial:          

Logon time:           0

Logoff time:          Wed, 06 Feb 2036 23:06:39 CST

Kickoff time:         Wed, 06 Feb 2036 23:06:39 CST

Password last set:    Wed, 21 Sep 2016 11:06:22 CST

Password can change:  Wed, 21 Sep 2016 11:06:22 CST

Password must change: never

Last bad password   : 0

Bad password count  : 0

Logon hours         : FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF


3.2.4删除账户:

pdbedit -x jet

userdel jet


3.2.5windows无法访问我们虚拟机的地址

如果出现windows无法访问我们虚拟机的地址,那么确认两个事情

A、确定本机和目标机处于一个局域网内,两者有互通的基础

B、确认目标机的防火墙是否屏蔽访问

对我们:

iptables -F   

service iptables save


samba (smb)