问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

求助,如何ftp和samba共用同一个目录

发布网友 发布时间:2022-04-26 17:28

我来回答

2个回答

热心网友 时间:2022-04-07 19:10

FTP的目录是可以自己选择的,可以选择C盘 D盘 E盘,也可以随便选择一个文件夹或者新建一个文件夹当做FTP文件夹。这个可以在搭建FTP服务器的时候选择路径。
而使用SMB协议的话,需要右键选择你需要的那个文件夹,点击属性设置为共享。你可以选择用户为everyone,这样方便点。
按以上步骤即可实现FTP文件夹和SMB共享文件夹都是一个文件夹。

热心网友 时间:2022-04-07 20:28

一、FTP协议
1、FTP原理知识
是一种C/S架构,基于套接字通信,用来在两台机器之间相互传输文件。FTP协议用到2种tcp连接:一是命令连接,用于客户端和服务端之间传递命令,监听在tcp/21端口;另一个是数据传输连接,用来传输数据,监听的端口是随机的。
2、FTP的被动模式、主动模式
主动模式的原理如下图:

主动模式存在的问题是,在客户端一般都会有防火墙的设置,当服务端与客户端数据进行数据通信时,客户端的防火墙会将服务端的端口挡在外面。此时,通信就会受阻。因此,被动模式就产生了。
被动模式的原理图如下:

被动模式也会存在防火墙的问题,客户端与服务端传输数据时,在服务端也会有防火墙,但在服务端的防火墙有连接追踪的功能,解决了防火墙的问题。因此,一般使用被动模式比较多。
3、FTP的用户认证
FTP支持系统用户,匿名用户,和虚拟用户三种用户认证。
匿名用户:登陆用户名是anonymous,没有密码
系统用户:是FTP服务器端的本地用户和对应的密码,默认访问的是用户家目录
虚拟用户:仅用于访问服务器中特定的资源,常见的虚拟用户认证的方式有使用文件认证或使用数据库进行认证。最终也会将这些虚拟用户同一映射为一个系统用户,访问的默认目录就是这个系统用户的家目录。
4、常见的状态信息码
1**:提示信息
2**:成功执行的状态码
3**:需要进一步提供补充类的信息码,例如在输入用户账号信息后出现此状态,提示继续输入密码
4**:客户端类的错误
5**:服务端错误
5、常见的实现FTP协议的工具
服务端:
Linux端:wu-ftpd,pureftp,vsftpd(Centos 6上默认提供的)
windows端:ServU,FileZilla-Server
客户端工具:
Linux操作系统:ftp,lftp,lftpget,wget,cul,gftp等
windows操作系统:FileZilla
6、vsftpd
在CentOS上默认提供的是vsftpd(Very Secure FTP),以安全著称。
用户认证配置文件:/etc/pam.d/vsftpd
服务脚本:/etc/rc.d/init.d/vsftpd
配置文件目录:/etc/vsftpd
主配置文件:vsftpd.conf
匿名用户(映射为ftp用户)共享资源位置:/var/ftp
系统用户通过ftp访问的资源的位置:用户自己的家目录
虚拟用户通过ftp访问的资源的位置:给虚拟用户指定的映射成为的系统用户的家目录
7、常见的的vsftpd的参数设置
匿名用户的配置:
anonymous_enable=YES #允许匿名用户登录
anon_upload_enable=YES #允许匿名用户上传文件
anon_mkdir_write_enable=YES #允许匿名用户创建目录
anon_ohter_write_enable=YES #允许其他的写权限(删除目录,文件)

系统用户的配置:
local_enable=YES #允许本地用户的登录
write_enable=YES # 本地用户可写
local_umask=022 # 本地用户的umask

禁锢所有的ftp本地用户于其家目录中:
chroot_local_user=YES #允许本地用户只能访问自己的家目录,不允许访问其他目录,适用于所有的用户

禁锢文件中指定的ftp本地用户于其家目录中:
chroot_list_enable=YES
chroot_list_file=/etc/vsftpd/chroot_list

目录消息:
dirmessage_enable=YES # 开启目录提示信息
在对应的目录下创建一个.message的文件,里面的内容当我们在访问时此目录时,会看到提示的信息。

日志:
xferlog_enable=YES # 打开传输日志
xferlog_std_format=YES # 是否使用标准格式
xferlog_file=/var/log/xferlog #日志文件路径

改变上传文件的属主:
chown_uploads=YES
chown_username=whoever #上传文件后立即改变文件的属主名

vsftpd使用pam完成用户认证,其用到的pam配置文件:
pam_service_name=vsftpd #用户认证文件,在/etc/pam.d/目录下

是否启用控制用户登录的列表文件
userlist_enable=YES
userlist_deny=YES|NO # 为yes的意思是,userlist_file是黑名单文件;是no的意思是userlist_file是白名单文件
userlist_file=/etc/vsftpd/user_list,默认文件为/etc/vsftpd/user_list

连接*:
max_clients: 最大并发连接数;
max_per_ip: 每个IP可同时发起的并发请求数;

传输速率:
anon_max_rate: 匿名用户的最大传输速率, 单位是“字节/秒”;
local_max_rate: 本地用户的最大传输速率, 单位是“字节/秒”;
8、虚拟用户(基于mysql实现)
一、安装所需要程序
1、安装mysql和pam_mysql

# yum -y install vsftpd mysql-server mysql-devel pam_mysql

注意:pam_mysql由epel源提供。

二、创建虚拟用户账号
1.准备数据库及相关表

首先请确保mysql服务已经正常启动。而后,按需要建立存储虚拟用户的数据库即可,
这里将其创建为vsftpd数据库。

mysql> create database vsftpd;

mysql> grant select on vsftpd.* to vsftpd@'%' identified by 'vsftpd';
mysql> flush privileges;

mysql> use vsftpd;
mysql> create table users (
-> id int AUTO_INCREMENT NOT NULL,
-> name char(20) binary NOT NULL,
-> password char(48) binary NOT NULL,
-> primary key(id)
-> );

2、添加测试的虚拟用户

根据需要添加所需要的用户,需要说明的是,这里将其密码为了安全起见应该使用PASSWORD
函数加密后存储。

mysql> insert into users(name,password) values('tom',password('tom'));
mysql> insert into users(name,password) values('jerry',password('tom'));

三、配置vsftpd
1.建立pam认证所需文件

#vi /etc/pam.d/vsftpd.mysql
添加如下两行
auth required /lib/security/pam_mysql.so user=vsftpd passwd=www.mage.com host=localhost
db=vsftpd table=users usercolumn=name passwdcolumn=password crypt=2
account required /lib/security/pam_mysql.so user=vsftpd passwd=www.mage.com host=localh
ost db=vsftpd table=users usercolumn=name passwdcolumn=password crypt=2

注意:由于mysql的安装方式不同,pam_mysql.so基于unix sock连接mysql服务器时可能会出问题,
此时,建议授权一个可远程连接的mysql并访问vsftpd数据库的用户。

2.修改vsftpd的配置文件,使其适应mysql认证

建立虚拟用户映射的系统用户及对应的目录
# useradd -s /sbin/nologin -d /var/ftproot vuser
# chmod go+rx /var/ftproot

请确保/etc/vsftpd.conf中已经启用了以下选项
anonymous_enable=YES
local_enable=YES
write_enable=YES
anon_upload_enable=NO
anon_mkdir_write_enable=NO
chroot_local_user=YES

而后添加以下选项
guest_enable=YES
guest_username=vuser

并确保pam_service_name选项的值如下所示
pam_service_name=vsftpd.mysql

四、启动vsftpd服务
# service vsftpd start
# chkconfig vsftpd on

五、配置虚拟用户具有不同的访问权限
vsftpd可以在配置文件目录中为每个用户提供单独的配置文件以定义其ftp服务访问权限,
每个虚拟用户的配置文件名同虚拟用户的用户名。配置文件目录可以是任意未使用目录,
只需要在vsftpd.conf指定其路径及名称即可。

1、配置vsftpd为虚拟用户使用配置文件目录

# vim vsftpd.conf
添加如下选项
user_config_dir=/etc/vsftpd/vusers_config

2、创建所需要目录,并为虚拟用户提供配置文件

# mkdir /etc/vsftpd/vusers_config/
# cd /etc/vsftpd/vusers_config/
# touch tom jerry

3、配置虚拟用户的访问权限

虚拟用户对vsftpd服务的访问权限是通过匿名用户的相关指令进行的。比如,如果需要让tom用
户具有上传文件的权限,可以修改/etc/vsftpd/vusers_config/tom文件,在里面添加如下选项即可。
anon_upload_enable={YES|NO}
anon_mkdir_write_enable={YES|NO}
anon_other_write_enable={YES|NO}

二、NFS协议
1、NFS的几个概念
RPC(Remote Procere Call Protocol远程过程调用协议):
简单的说是函数调用(远程主机上的函数) 一部分功能由本地程序完成 另一部分功能由远程主机上的函数完成。客户端挂载了nfs服务器的文件系统时,进行一些操作,但是这些操作服务端如何知道呢??这可是在内核级别上实现协议。RPC就解决了这个问题,它会将客户端的操作的函数调用发送到服务器端,由服务器端执行这些函数调用。
idmapd:
想想这种情形,nfs客户端在挂载文件系统以后,在本地以某用户的身份创建了一个文件,在服务器端这个文件的属主和属组是哪个用户呢?早期是通过NIS(Network Information Services网络信息服务)来解决这个问题的,但是在传输账号和密码时,使用的是明文传输,现在使用LDAP+clbbler来实现的。但是,NFS使用的是idmapd这个服务,有rpc提供,将所有的用户后映射为nfsnobody,但是在访问的时候,还是以本地UID对应的本地用户来使用的。
mounted:
NFS是通过什么来控制那些客户端可以访问,那些不可以访问的呢?NFS只支持通过IP来控制客户端,而这个功能是由守护进程mounted来实现的,它监听的端口是半随机的。所谓的半随机指的是,这个随机端口是由rpc服务来决定的,而rpc是通过随机的方式。作用等等同于小区大门保安的作用。
2、NFS请求过程
在CentOS6.5中,NFS服务端监听在tcp和udp的2049端口,服务名是nfs、pc监听于tcp和udp的111号端口,服务名是portmapper。
请求过程:当客户端试这去挂载使用nfs共享的文件系统是,客户端首先回去与postmapper(tcp/111)端口去注册使用,此时postmapper会随机分配一个端口给mounted,然后mounted这个守护进程会来验证客户端的合法性,验证通过后,会把请求交给nfs服务,客户端此时可以挂载使用了,用户在创建文件时,会使用到idmapd的守护进程来映射属主。其实idmapd也是有rpc服务提供的,只不过在这里,nfs服务使用到用户映射的功能时,会自动的去调用此守护进程。
3、服务的配置
在服务端,只需要安装nfs-utils就可以直接使用,nfs服务直接是内核的模块。
# smod | grep nfs
nfsd 309196 13
lockd 73662 1 nfsd
nfs_acl 2647 1 nfsd
auth_rpcgss 44949 1 nfsd
sunrpc 262768 17 nfsd,lockd,nfs_acl,auth_rpcgss
exportfs 4236 1 nfsd

服务端共享的目录是通过 /etc/exports这个文件共享出去的。这个文件的书写格式如下:
共享目录 客户端(选项1,选项2) 客户端(选项1,选项2) … 示例:
/mydata 172.16.0.0/16(ro,async,no_root_squash) www.example.com(ro)
########################客户端的表示方式##########################
主机IP地址:例如 192.168.1.10
网络地址:例如 172.16.0.0/24
域名表示:例如 www.example.com(指定主机),*.example.com(对应域名下的所有主机)
*:表示所有的主机
##############################常见的选项###############################
有几个常用的选项可以对 NFS 实现进行定制。这些选项包括:
secure: 这个选项是缺省选项,它使用了 1024 以下的 TCP/IP 端口实现 NFS 的连接。
指定 insecure 可以禁用这个选项。
rw: 这个选项允许 NFS 客户机进行读/写访问。缺省选项是只读的。
async: 异步存储(所有的客户端操作先在内存中缓存,等待cpu空闲的时候写入磁盘)。
这个选项可以改进性能,但是如果没有完全关闭 NFS 守护进程就重新启动了 NFS 服务器,
这也可能会造成数据丢失。与之相反的是syns,是同步写入磁盘。
no_wdelay: 这个选项关闭写延时。如果设置了 async,那么 NFS 就会忽略这个选项。
nohide: 如果将一个目录挂载到另外一个目录之上,那么原来的目录通常就被隐藏起来
或看起来像空的一样。要禁用这种行为,需启用 hide 选项。
no_subtree_check: 这个选项关闭子树检查,子树检查会执行一些不想忽略的安全性检查。
缺省选项是启用子树检查。
no_auth_nlm: 这个选项也可以作为 insecure_locks 指定,它告诉 NFS 守护进程不要对加
锁请求进行认证。如果关心安全性问题,就要避免使用这个选项。缺省选项是 auth_nlm 或
secure_locks。
mp (mountpoint=path): 通过显式地声明这个选项,NFS 要求挂载所导出的目录。
fsid=num: 这个选项通常都在 NFS 故障恢复的情况中使用。如果希望实现 NFS 的故障恢复,
请参考 NFS 文档。

#####################用户映射的选项############################
root_squash: 这个选项不允许 root 用户访问挂载上来的 NFS 卷。
no_root_squash: 这个选项允许 root 用户访问挂载上来的 NFS 卷。
all_squash: 这个选项对于公共访问的 NFS 卷来说非常有用,它会*所有的 UID 和 GID,
只使用匿名用户。缺省设置是 no_all_squash。
anonuid 和 anongid: 这两个选项将匿名 UID 和 GID 修改成特定用户和组帐号。

4、常用命令
showmount是用来查看nfs服务的情况
用法:showmount [ -adehv ] [ --all ] [ --directories ] [ --exports ] [ --help ] [ --version ] [ host ]
可以使用短选型,也可以使用长选项。
-a :这个参数是一般在NFS SERVER上使用,是用来显示已经mount上本机nfs目录的cline机器。
-e :显示指定的NFS SERVER上export出来的目录。
exportfs:一般用在当NFS服务启动后,使用此命令来控制共享目录的导出
用法:exportfs [-aruv]
-a :全部mount或者unmount /etc/exports中的内容
-r :重新mount /etc/exports中分享出来的目录
-u :umount目录
-v :在export的时候,将详细的信息输出到屏幕上。
具体例子:
# exportfs -au 卸载所有共享目录
# exportfs -rv 重新共享所有目录并输出详细信息
5、客户端的使用
先使用 showmont -e SER_NAME 来发现服务端的共享的目录
然后使用mount挂载使用,格式:
mount -t nfs SER_NAME:/data /parth/to/someponit [-o 选项]
mount -t nfs 192.168.1.99:/mydat /mnt -o rsize=4096
rsize 的值是从服务器读取的字节数。wsize 是写入到服务器的字节数。默认都是1024, 如果使用比较高的值,如8192,可以提高传输速度。
三、samba服务(基本介绍)
1、协议
smb: Service Message Block
CIFS: Common Internet File System通用网络文件系统,是windows主机之间共享的协议,samba实现了这个协议,所以可以实现wondows与linux之间的文件共享服务。
监听的端口有:
tcp/137 udp/137 tcp/139 udp/139
137:是实现NetBIOS协议,实现解析windows之间主机名的解析,实现在windows的网上邻居可以看到Linux的主机名。
139:是实现cifs协议
2、如何访问?
在Linux中:

交互式数据访问:
smbclient -L HOST -U USERNAME

获取到共享信息之后,

smbclint //SERVER/shared_name -U USERNAME

基于挂载的方式访问:

mount -t cifs //SERVER/shared_name /mount_point -o username=USERNAME,password=PASSWORD

3、如何配置samba服务器(Linux)
# yum -y install samba
服务脚本:
/etc/rc.d/init.d/nmb # 实现 NetBIOS协议
/etc/rc.d/init.d/smb # 实现cifs协议
主配置文件:
/etc/samba/smb.conf
samba用户:
账号:都是系统用户, /etc/passwd
密码:samba服务自有密码文件,
将系统用户添加为samba的命令:smbpasswd
smbpasswd:
-a Sys_User: 添加系统用户为samba用户
-d :禁用用户
-e: 启用用户
-x: 删除用户
配置文件:
/etc/samba/smb.conf 配置文件包括全局设定,特定共享的设定,私有家目录,打印机共享,自定义共享
全局配置:
workgroup = MYGROUP # 工作组
hosts allow = 127. 192.168.12. 192.168.13. # 访问控制,IP控制
interfaces = lo eth0 192.168.12.2/24 192.168.13.2/24 # 接口+ip控制

自定义共享:
[shared_name] #共享名称
path = /path/to/share_directory #共享路径
comment = Comment String # 注释信息
guest ok = {yes|no} | public = {yes|no} # 是否启用来宾账号
writable = {yes|no} | read only = {yes|no} # 共享目录是否可写
write list = +GROUP_NAME # 允许可写的用户列表,前面有+是代表允许可写的组

测试配置文件是否有语法错误,以及显示最终生效的配置:
testparm

至此,三种常见的文件服务介绍完成。
声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
二楼改水管三楼要改吗-二楼改水管导致三楼反水谁负责 ...就单立把厨房的下水道改道了,现在变三楼地漏反水了,求解决_百度知 ... ...晚上到上海,走走外滩,逛逛南京路,第二天到欢乐谷。请问外 我们准备到上海欢乐谷玩,顺便游玩下上海其他地方,3天左右的时间,求旅游... 贺姓属龙男孩最吉利的名字 贺姓男孩名字2024年9月怎么取 贺姓男孩名字2022年12月怎么取 老公姓贺我姓钟怎么取名字 拔开踏板车电热加浓导线的插接头,堵塞启动加浓油道,会有什么问题 老公与其它女人搞暧昧被发现后老婆将其女电话号码放抖音平台违法嘛? 如何建立FTP共享空间进行文件的共享? 怎样利用ftp协议与其他非局域网的电脑共享文件 你好OPPOr9联系人怎么能保存到手机卡了而不是本机 “oppo r9”如何备份? oppo R9如何备份数据? oppo r9s如何将通讯录存储在手机卡上 OPPO r9通讯录怎么备份 映客主播橘子怎么不播了? 为什么电动车在正常行驶的时候突然显示屏不显示电量了和不跑了? 映客和快手直播平台受人欢迎,但在礼物打赏方面有哪些区别? 电车突然断电屏幕显示不亮走不动是什么原因? 电动车充电后充电指示灯变绿色,但又显示没有电,是怎么回事? 电动车突然一点电没有了,钥匙开启车,没反应,液晶显示器也不亮,按遥控钥... 电瓶车显示屏已不下电量怎么回事? 干锅包心菜怎么做?详细 2018考研考数二的专业有什么 半圆的周长就是圆周长的一半对吗 求半圆的周长 半圆的周长 华为体脂秤,如何查询真伪 如何用ftp共享文件 梦见自己坐特别简陋的飞机去旅行,飞了一半遇大雨? 为什么ipad上安装app需要验证 苹果iphone ipad应用商店必须验证您的付款信息才能购物 为什么ipad下载免费软件 需要付款信息 为什么在下载软件的时候出现:“您必须先验证账号,才能进行此项购买 iPad下载和安装免费应用需要验证?什么意思?怎么搞? 现在iPad air为什么下载app需要获取还要验证付款,该怎么做 苹果手机下载软件出现付款方式点击支付宝,无法支付宝验证怎么办 iPad没法验证app怎么回事? 笔杆查重如何操作,能告知具体步骤吗?小白一枚 笔杆网的论文查重在哪里看重复率? 笔杆论文查重有几种上传文件的方法? miniqq怎么使用? java培训 哪个比较好? 笔杆网的论文查重怎么样? 论文查重很重要,但是笔杆网比知网查重高很多怎么办? 笔杆论文查重,怎样操作才能去除引用? 用笔杆网查重结果可靠吗? 笔杆网,笔杆网查重,笔杆网查重靠谱吗