首页 > 代码库 > 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)