http://blog.csdn.net/pipisorry/article/details/51812022
本文主要说明 linux和windows文件共享, windows和ubuntu互相访问 , Linux和安卓设备文件互传和共享。(ubuntu16.04, 14.04和win7测试通过)
linux和windows文件共享
window对linux文件内容进行操作,利用linux samba服务,将linux的文件设成共享文件,window就可以以访问共享文件的方式来访问linux文件了。
Samba服务器的工作原理是:客户端向Samba服务器发起请求,请求访问共享目录,Samba服务器接收请求,查询smb.conf文件,查看共享目录是否存在,以及来访者的访问权限,如果来访者具有相应的权限,则允许客户端访问,最后将访问过程中系统的信息以及采集的用户访问行为信息存放在日志文件中。
Samba(SMB是其缩写) 是一个网络服务器,用于Linux和Windows共享文件之用;Samba 即可以用于Windows和Linux之间的共享文件,也一样用于Linux和Linux之间的共享文件;不过对于Linux和Linux之间共享文件有更好的网络文件系统NFS,NFS也是需要架设服务器的;
在Windows 网络中的每台机器即可以是文件共享的服务器,也可以同是客户机;Samba 也一样能行,比如一台Linux的机器,如果架了Samba Server 后,它能充当共享服务器,同时也能做为客户机来访问其它网络中的Windows共享文件系统,或其它Linux的Sabmba 服务器;
我们在Windows网络中,看到共享文件功能知道,我们直接就可以把共享文件夹当做本地硬盘来使用。在Linux的中,就是通过Samba的向网络中的机器提供共享文件系统,也可以把网络中其它机器的共享挂载在本地机上使用;这在一定意义上说和FTP是不一样的。
samba命令
Samba服务器的启动、关闭和重启
安装完成后,可以cd到/etc/init.d/目录下,查找smbd命令,然后执行如下命令:
启动Samba服务器:#sudo /etc/init.d/smbd start
关闭Samba服务器:#sudo /etc/init.d/smbd stop
重新启动Samba服务器:#sudo /etc/init.d/smbd restart
启动Samba服务器后,可以使用ps命令查看进程:#ps -aux。此时,可以看到Samba服务会同时启动两个服务,其中smbd主要用来管理共享出来的目录,nmbd主要用来解析NetBIOS名。在Windows系统中, 主机可以被加入一个组中,这样每个主机都必须有一个名字,这个名字是用于在网上被标志的名,并非机器的主机名,将其称为NetBIOS名。其中nmbd进 程是随着smbd进程启动而启动。
按照下面的配置成功后,每次重启电脑后只要
linux和windows要在同一局域网内(如连接上同一个wifi或者linux开启网络共享)
右键共享某个目录,且对当前目录有相应权限
sudo /etc/init.d/smbd start就可以了。
linux端的配置
samba安装的配置
安装samba
pika:~$sudo apt-get install samba
sudo apt-get install cifs-utils
后面这个在两台ubuntu互访时必须安装
增加samba用户pika
{如果下面设置security=share不用密码登录就可以访问的话这个可以不设置}
pika:~$sudo smbpasswd -a pika
New SMB password:
Retype new SMB password:
Added user pika.
Note: 增加的用户必须是系统中存在的用户,lz这里添加的是当前用户。用户不存在时候要添加:sudo useradd。如sudo useradd pikasmb,要注意,上面只是增加了pikasmb这个用户,却没有给用户赋予本机登录密码。所以这个用户将只能从远程访问,不能从本机登录。而且samba的登录密码可以和本机登录密码不一样。
配置Samba服务(修改Samba配置文件)
Samba服务器主要配置文件为/etc/samba/smb.conf,(并且可以将NetBIOS名与主机的对应关系写在/etc/samba /lmhosts文件中,此步骤可忽略)。
要共享linux上的目录,在Linux共享一个目录,将建立好的目录的设置信息写入/etc/smb.conf文件即可(见下面的windows访问ubuntu)。
在Windows系统中不用输入密码访问Linux共享目录,修改samba配置文件smb.conf:
sudo cp /etc/samba/smb.conf /etc/samba/smb.conf.bak //修改配置文件之前最好做个备份
sudo vim /etc/samba/smb.conf
将文件中的内容做如下相应修改:
1 #security=user 删掉注释,修改为:security=share
lz没找到这个,所以直接在#======================= Share Definitions =======================的最后加的(配置文件末尾,不能是这行下面!)
security=share
设置的含义:
share:用户不需要账户及密码即可登录samba服务器
user:由提供服务的samba服务器负责检查账户及密码(默认)
server:检查账户及密码的工作由另一台windows或samba服务器负责
domain:指定windows域控制服务器来验证用户的账户及密码)
2 linux系统下的目录可以直接通过右键配置共享(推荐,较易操作,且好取消共享)
直接右键会出错,但是会提示Ask the administrator to add the line "usershare owner only = false" to the [global] section of the smb.conf to allow this.
这个是右键设置/media/pika/files/mine/python_workspace/NLP/SentimentClassification共享时出错的提示,加上后就可以直接通过右键设置共享了。
[global]
usershare owner only = false
3 也可以在/etc/samba/smb.conf文件结尾添加如下行
{不推荐,因为不好取消共享。如果进行了第2步设置,这个不用了,直接右键要共享的目录就可以!}
Note: 一个share对应一个目录,如果要共享两个目录就设置两个share(异名)
# 共享文件名称或标记 这个可随意写 只是一个标记(在windows上显示的共享目录名)
[share]
comment=this is Linux share directory
#要共享的目录1
path=/home/pika/share
#允许匿名用户登录,这个开关有时候也叫guest ok,所以有的配置文件中出现guest ok = yes其实和public = yes是一样的
public=yes
#可写权限
writable=yes
#显示文件,就是在网络邻居中能看到共享名
browseable=yes
valid users=pika
available=yes
#要共享的目录2
[nlpshare]
comment=this is Linux share directory
path=/media/pika/files/mine/python_workspace/NLP/SentimentClassification
public=yes
writable=yes
browseable=yes
valid users=pika
available=yes
#要密码访问的共享目录3...
其中[ftp]项目是要求用户名密码访问的,用户名要求为gcwh,当然你也可以指定一个组(eg.@gcwh)!
密码保存在/etc/samba/smbpasswd中,用户名用useradd创建,密码用smbpasswd创建,创间之后cat /etc/samba/smbpasswd 看看是否有了!
Notes: 先确保不要密码是可以访问之后再修改成有密码访问,可以避免纠缠在一些网络原因导致的不能访问的问题上!密码访问本身简单,关键是要正确创建用户和samba密码的对应项(在/etc/samba/smbpasswd中,当然也可以指定其它文件)
保存退出
Note: 如果没有缩进,则=两边不要空格。注释必须单行重写,不能加在定义后面!!!否则对应设置的无效。
常见的samba配置及说明
[share] # 该共享的共享名
comment = smb share test # 该共享的备注
path = /home/share # 共享路径
allow hosts = host(subnet) # 设置该Samba服务器允许的工作组或者域
deny hosts = host(subnet) # 设置该Samba服务器拒绝的工作组或者域
available = yes|no # 设置该共享目录是否可用
browseable = yes|no # 设置该共享目录是否可显示
writable = yes|no # 指定了这个目录缺省是否可写,也可以用readonly = no来设置可写
public = yes|no # 指明该共享资源是否能给游客帐号访问,guest ok = yes其实和public = yes是一样的
user = user, @group # user设置所有可能使用该共享资源的用户,也可以用@group代表group这个组的所有成员,不同的项目之间用空格或者逗号隔开
valid users = user, @group # 指定能够使用该共享资源的用户和组
invalid users = user, @group # 指定不能够使用该共享资源的用户和组
read list = user, @group # 指定只能读取该共享资源的用户和组
write list = user, @group # 指定能读取和写该共享资源的用户和组
admin list = user, @group # 指定能管理该共享资源(包括读写和权限赋予等)的用户和组
hide dot files = yes|no # 指明是否像UNIX那样隐藏以“.”号开头的文件
create mode = 0755 # 指明新建立的文件的属性,一般是0755
directory mode = 0755 # 指明新建立的目录的属性,一般是0755
sync always = yes|no # 指明对该共享资源进行写操作后是否进行同步操作
short preserve case = yes|no # 指明是否区分文件名大小写
preserve case = yes|no # 指明是否保持大小写
case sensitive = yes|no # 指明是否对大小写敏感,一般选no,不然可能引起错误
mangle case = yes|no # 指明混合大小写
default case = upper|lower # 指明缺省的文件名是全部大写还是小写
force user = testuser # 强制把建立文件的属主是谁。如果我有一个目录,让guest可以写,那么guest就可以删除,如果我用force user= testuser强制建立文件的属主是testuser,同时限制create mask = 0755,这样guest就不能删除了
wide links = yes|no # 指明是否允许共享外符号连接,比如共享资源里面有个连接指向非共享资源里面的文件或者目录,如果设置wide links = no将使该连接不可用
max connections = 100 # 设定最大同时连接数
delete readonly = yes|no # 指明能否删除共享资源里面已经被定义为只读的文件
[Samba服务器配置(2)--认识smb.conf配置文件]
[配置文件模板]
启动Samba服务
pika:~$sudo /etc/init.d/smbd start
重启: sudo /etc/init.d/smbd restart 修改配置后一般都要重启
检查Samba是否安装配置正确
启动Samba客户端程序
smbclient -L //localhost/share -U pika
“-L”即为list的含义,“-U”是user的意思,如果Samba服务器是无密码访问的话,可以省略“-U Samba用户名”。
pika:~$smbclient -L //localhost/share
WARNING: The "syslog" option is deprecated
Enter pika's password: #这里可以使用sudo smbpasswd -a pika设置的密码
Domain=[WORKGROUP] OS=[Windows 6.1] Server=[Samba 4.3.9-Ubuntu]
Sharename Type Comment
--------- ---- -------
print$ Disk Printer Drivers
share Disk this is Linux share directory
IPC$ IPC IPC Service (pika server (Samba, Ubuntu))
Domain=[WORKGROUP] OS=[Windows 6.1] Server=[Samba 4.3.9-Ubuntu]
Server Comment
--------- -------
PIKA pika server (Samba, Ubuntu)
Workgroup Master
--------- -------
WORKGROUP PIKA
Note: 出错处理:
1 session setup failed: NT_STATUS_LOGON_FAILURE
该错误表示用户有误, 可能是用户不存在, 也有可能是密码错误, 或者用户只是在samba和系统的用户中的一个地方存在, 总之是用户和密码有问题,一般是密码错误,密码不是电脑密码,而是自己设置的samba密码。
2 tree connect failed: NT_STATUS_BAD_NETWORK_NAME
这个错误则表示共享目录有误, 可能是目录不存在, 或者权限不对
[客户端访问]
linux下进行文件共享
共享目录时,必须对当前目录有共享权限:
鼠标右键点目录,permissions中设置
或者$sudo chmod 777 /home/pika/share
pika:~/share$ll
total 44
drwxrwxrwx 2 pika pika 4096 7月 2 19:37 ./
pika:/media/pika/files/mine/python_workspace/NLP/SentimentClassification$ll
total 37
drwxrwxrwx 1 root root 4096 7月 1 22:18 ./
鼠标右键点目录,选择sharing options, 勾选share this folder和guest access(这样别人访问时候就不需要密码了),需要的话也可以够选下面的allow write 。
linux中share的目录会加上share标志
另外可能需要关闭linux的防火墙:sudo service iptables stop或者$ sudo ufw disable, 刷新重连。这样才能被别人访问到。
windows端的配置
如果想要linux访问到windows的共享文件,需要
1 在“控制面板\所有控制面板项\网络和共享中心\高级共享设置”开启“关闭密码保护共享”和“启用文件和打印机共享”。关闭密码保护共享的操作会启用Guest账号,如果Guest账号设置了密码,即使选择了关闭密码保护共享保存修改后,再次打开发现依然会是启用密码保护,这时候需要到用户管理中清空Guest账号的密码。
2 需要开启guest帐户
control panel > user accounts and family safety > useraccounts > manage accounts手动开启guest帐户
如果不启用guest帐户,将会出现linux访问windows时出现对话框,要求输入用户名和密码,并且用户名处是Guest,呈灰色不可选状态,只能输入密码。
3 可能需要关闭windows和杀毒软件的防火墙
(windows:打开“网络和共享中心”,windows防火墙,关闭相关项;杀软:(如bitdefender)firewall 中点击off关闭)
设置共享文件夹
要共享的文件夹 - 右键 - 属性 - 共享:共享 - 高级共享 - 共享此文件夹
ubuntu、windows之间的互相访问
linux系统间的文件共享
一种是直接使用samba,另一种也可以使用NFS。
ubuntu之间的互访
都要安装
pika:~$sudo apt-get install samba
sudo apt-get install cifs-utils
否则两台电脑就算都能互相ping通,也不能进行文件共享,也不知道为嘛。
还都要关闭防火墙,否则只能访问到没开防火墙的一方
sudo ufw disable
[使用NFS在linux之间共享目录与文件 ]
ubuntu访问windows
可能需要安装sudo apt-get install cifs-utils,好像也没用
network > windows networks > WORKGROUP > 点击共享文件的windows电脑
就可以看到共享的文件了。
如果提示要求输入用户名和密码
用户名:windows上的用户名
密码:windows对应用户名的登录密码
windows访问ubuntu
windows访问ubuntu很简单, 先在ubuntu上设置共享目录即可。但是linux和windows要在同一局域网内(如连接上同一个wifi),当然也可以使用笔记本中的windows或者linux开启wifi来创建一个局域网wifi,参考[笔记本开启无线网络共享],此时linux所在笔记本和windows所在笔记本都在同一个局域网内,可以进行文件共享。
网络中查找并读写文件
这时在windows的网络邻居中的网络中查找就能找到共享目录pika/share和pika/sentiment。
如果进入共享目录需要密码,就填写之前在linux中设置的samba帐户和密码,或者linux用户名及其对应密码。
windows无法访问linux的共享目录的解决
windows提示无法访问\\pika\share时可以试试
先看能不能ping通,不能可能是不在同一局域网。
重启samba服务sudo /etc/init.d/smbd restart
或者重新搜索共享的电脑(前两个一般有效)
或者刷新一下 或者重新连网
或者单击[开始-运行] 输入 “secpol.msc”-“本地策略”-“安全选项”-网络安全:LAN Manager 身份验证级别”-单击列表中:发送LM和NTLMv2,如果已协商,则使用NTLMv2协议。
终极解决:关闭linux的防火墙:sudo service iptables stop
或者$ sudo ufw disable, 刷新重连。
windows可以正常访问linux的情况
不过不知道为啥,之前的一个截图带着一个锁标志(捕获.PNG),不能被修改,而捕获1可以。
Note: lz这两个图就是通过windows截图再写入linux再贴到这里来的。
使用\\192.168.1.100\share访问linux共享文件夹(lz不推荐)
首先要知道samba服务器的ip地址:terminal中输入ifconfig,查找wlan对应的ip地址,如192.168.1.100(linux的本地连接的IP地址,也就是samba服务器的IP地址)
wlan0 Link encap:Ethernet HWaddr b8:76:3f:2f:3d:7f
inet addr:192.168.1.100
在Windows 下访问共享目录
点击运行(或者win+R快捷键),输入\\192.168.1.100\share,这样就能以匿名用户访问共享目录share了。
当然也可以直接到windows下输入ip使用,在文件夹处输入 "\\" + "Ubuntu机器的ip或主机名" + "\\" + "share";
windows访问共享文件时windows防火墙可能需要关闭(lz并没有管)。
鸟哥的linux私房菜:第十六章、文件服务器之二: SAMBA 服务器
windows linux 之间文件共享 samba配置
[Ubuntu设置局域网Windows共享文件Samba]
[不同级别的权限控制参考:NAS应用-Ubuntu 16.04 Samba文件共享]
Linux和安卓设备文件互传和共享
打开手机蓝牙对所有设备可见
ubuntu中添加phone蓝牙配对 all settings > bluetooth > 添加符号, 电脑会在第三步中自动搜索手机设备,产生一个配对数字串,输入到手机中就配对成功了。
(lz的笔记本不自带蓝牙,买的蓝牙适配器,自带的当然更好)
配对成功后如下
ubunbu向手机发送文件
可以通过上图中的send files向手机发送文件。
手机向ubuntu发送文件
Ubuntu中,关于蓝牙传送文件,默认是不接收的,所以要去设置为接收。不设置会出错:在安卓中,选择文件的分享,通过蓝牙发送,发送到Ubuntu桌面端的蓝牙的,却发送失败。
dash中搜personal file,即Personal File Sharing 中文是:个人文件共享
然后进去将receive files...打勾,accept files选择only for set up devices(只接收配对的手机发来的文件)
当然也可以将Accept files改为Always即可正常接收任意别的(手机的)蓝牙发送过来的文件了。
电脑接收到的文件应该在用户文件夹的downloads文件夹下。
from: http://blog.csdn.net/pipisorry/article/details/51812022
ref: windows文件共享参考[两台windows笔记本创建家庭组实现文件共享]