Linux利用samba实现和iPhone文件共享
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Linux利用samba实现和iPhone文件共享相关的知识,希望对你有一定的参考价值。
参考技术A使用Linux系统某些文件管理器是能支持挂在iPhone的,但是有些不支持,自从iPhone有了 文件 应用,访问电脑的共享目录变得十分简单。手机无需连接数据线到电脑,共享Windows、macOS其实也一样,主要就是电脑创建共享目录,手机直接访问电脑的共享即可。当然mac可以使用AirDrop要比共享更方便😅。
安装配置samba不同发行版,不尽相同。arch参考: https://wiki.archlinux.org/index.php/samba
使用配置,或者文件管理器自带的共享功能创建共享目录。
首先手机和电脑需要在同一个网络中。打开手机 文件 APP,点击右上角的三个小点,选择 连接服务器 ,在服务器里面输入 smb://你的电脑ip 点击下一步即可,如果共享设置了密码,则需要输入密码。连接上共享后可看到共享目录的文件,选择文件可以复制到手机中。
如果没有无线局域网,使用iPhone共享热点也是可以实现文件共享的,不会消耗手机流量。
SMB案例:利用SAMBA实现/www目录共享
配置samba实现/www目录共享
1. 概述
Samba原先属于微软公司的专有协议,Samba是在Linux和UNIX系统上实现SMB协议的一个免费软件,由服务器及客户端程序构成。SMB(Server Messages Block,信息服务块)是一种在局域网上共享文件和打印机的一种通信协议,它为局域网内的不同计算机之间提供文件及打印机等资源的共享服务。SMB协议是客户机/服务器型协议,客户机通过该协议可以访问服务器上的共享文件系统、打印机及其他资源。通过设置“NetBIOS over TCP/IP”使得Samba不但能与局域网络主机分享资源,还能与全世界的电脑分享资源。
- SMB:Server Message Block 服务器消息块,IBM发布,最早是DOS网络文件共享协议,是私有协议
- CIFS:common internet file system,微软基于SMB发布
- SAMBA:1991年 Andrew Tridgell 实现 Windows和UNIX相通
- 官方网站:http://www.samba.org/
- SAMBA的功能:
- 共享文件和打印,实现在线编辑
- 实现登录SAMBA用户的身份认证
- 可以进行NetBIOS名称解析
- 外围设备共享
2. 架构及主机
### 一台SAMBA服务器及多台SAMBA客户端
1. SAMBA服务器 :
主机名:FptServerIP38
CentOS 8.4
IP: 192.168.250.38/24
2. SAMBA服务器 :
主机名:FptServerIP37
CentOS 7.9
IP: 192.168.250.37/24
# 本次客户端就搞一套演示
3. 服务器端配置
基本过程:准备好服务器端环境;建立用户和组并建好SMB账户;建好共享的WWW目录,并授权;配置好SMB实现共享
# 修改主机名及时间同步
[root@CentOS84 ]#hostnamectl set-hostname SMB-ServerIP38
[root@SMB-ServerIP38 ]#systemctl enable --now chronyd.service
# 安装samba服务包
[root@SMB-ServerIP38 ]#dnf -y install samba
# 创建sambas组,并在组内创建两个用户sambas 和 angela ,并定义好两个用户的密码
[root@SMB-ServerIP38 ]#groupadd -r sambas
[root@SMB-ServerIP38 ]#useradd -s /sbin/nologin -G sambas sabrina
[root@SMB-ServerIP38 ]#smbpasswd -a sabrina
New SMB password:
Retype new SMB password:
Added user sabrina.
[root@SMB-ServerIP38 ]#id sabrina
uid=1001(sabrina) gid=1001(sabrina) groups=1001(sabrina),974(sambas)
[root@SMB-ServerIP38 ]#useradd -s /sbin/nologin -G sambas angela
[root@SMB-ServerIP38 ]#id angela
uid=1002(angela) gid=1002(angela) groups=1002(angela)
[root@SMB-ServerIP38 ]#smbpasswd -a angela
New SMB password:
Retype new SMB password:
Added user angela.
[root@SMB-ServerIP38 ]#id angela
uid=1002(angela) gid=1002(angela) groups=1002(angela),974(sambas)
[root@SMB-ServerIP38 ]#pdbedit -L
sabrina:1001:
angela:1002:
[root@SMB-ServerIP38 ]#mkdir /data/www -p
[root@SMB-ServerIP38 ]#tree /data/
/data/
└── www
## 对共享目录进行授权,可以根据情况对组授权也可以对每个用户单独授权
# 对组授权
[root@SMB-ServerIP38 ]#setfacl -m g:sambas:rwx /data/www
# 对用户授权
[root@SMB-ServerIP38 ]#setfacl -m u:angela:rwx /data/www
[root@SMB-ServerIP38 ]#setfacl -m u:sabrina:rwx /data/www
# 验证授权情况
[root@SMB-ServerIP38 ]#getfacl /data/www
getfacl: Removing leading / from absolute path names
# file: data/www
# owner: root
# group: root
user::rwx
user:sabrina:rwx
user:angela:rwx
group::r-x
group:sambas:rwx
mask::rwx
other::r-x
# 创建一个测试时可视文件
[root@SMB-ServerIP38 ]#touch /data/www/Data-www-DIR.TXT
[root@SMB-ServerIP38 ]#tree /data/
/data/
└── www
└── Data-www-DIR.TXT
1 directory, 1 file
# 查看并修改smb的配置文件
[root@SMB-ServerIP38 ]#ll /etc/samba/smb.conf
-rw-r--r--. 1 root root 706 Dec 13 22:19 /etc/samba/smb.conf
[root@SMB-ServerIP38 ]#cat /etc/samba/smb.conf
.................. #省略部分默认配置信息,只需要加上下面的配置
[Data-WWW]
path = /data/www/
write list = @sambas
# 第一行是共享的目录名称,将会显示在客户端;第二行是实际服务器端的共享目录路径;第三局是对组授权可写,前面必须加上@号,也可以对组和用户混合授权,比如:write list = @sambas,summer
[root@SMB-ServerIP38 ]#
# 启动SMB服务,并设定开机自动启动
[root@SMB-ServerIP38 ]#systemctl enable --now smb nmb
4. 客户端的验证过程
基本过程:在服务器端配置好后,在客户端可以通过两种方式验证和使用共享的空间,一种就是类似FTP方式,每次使用都登录,再下载和上传文件;另外一种就是实现永久挂载的方式,下面分别对两种方式做演示。
4.1 通过samba-client查看并验证
[root@centos79 <sub>]# hostnamectl set-hostname SMB-ClientIP37
[root@smb-clientip37 </sub>]# ntpdate ntp1.aliyun.com
[root@smb-clientip37 <sub>]# yum -y install samba-client
[root@smb-clientip37 </sub>]# smbclient -L 192.168.250.38 -U sabrina%123456
Sharename Type Comment
--------- ---- -------
print$ Disk Printer Drivers
Data-WWW Disk
IPC$ IPC IPC Service (Samba 4.14.5)
sabrina Disk Home Directories
[root@smb-clientip37 <sub>]# smbclient //192.168.250.38/Data-WWW -U sabrina%123456
Try "help" to get a list of possible commands.
smb: \\>
smb: \\> pwd
Current directory is \\\\192.168.250.38\\Data-WWW\\
smb: \\> ls
. D 0 Sat Mar 19 16:45:36 2022
.. D 0 Sat Mar 19 16:41:57 2022
Data-www-DIR.TXT N 0 Sat Mar 19 16:45:36 2022
52403200 blocks of size 1024. 52004768 blocks available
smb: \\> !ls
anaconda-ks.cfg
smb: \\> put anaconda-ks.cfg
putting file anaconda-ks.cfg as \\anaconda-ks.cfg (117.7 kb/s) (average 117.7 kb/s)
smb: \\> ls
. D 0 Sat Mar 19 16:50:43 2022
.. D 0 Sat Mar 19 16:41:57 2022
Data-www-DIR.TXT N 0 Sat Mar 19 16:45:36 2022
anaconda-ks.cfg A 1326 Sat Mar 19 16:50:43 2022
52403200 blocks of size 1024. 52004744 blocks available
smb: \\> exit
[root@smb-clientip37 </sub>]# smbclient -L 192.168.250.38 -U angela%654321
Sharename Type Comment
--------- ---- -------
print$ Disk Printer Drivers
Data-WWW Disk
IPC$ IPC IPC Service (Samba 4.14.5)
angela Disk Home Directories
[root@smb-clientip37 <sub>]# smbclient //192.168.250.38/Data-WWW -U angela%654321
smb: \\> lcd /etc
smb: \\> !ls
smb: \\> put hosts
putting file hosts as \\hosts (30.9 kb/s) (average 30.9 kb/s)
smb: \\> ls
. D 0 Sat Mar 19 16:58:58 2022
.. D 0 Sat Mar 19 16:41:57 2022
Data-www-DIR.TXT N 0 Sat Mar 19 16:45:36 2022
anaconda-ks.cfg A 1326 Sat Mar 19 16:50:43 2022
hosts A 158 Sat Mar 19 16:58:58 2022
52403200 blocks of size 1024. 52004740 blocks available
smb: \\>
smb: \\> exit
[root@smb-clientip37 </sub>]#
# 服务器端查看文件
[root@SMB-ServerIP38 ]#ll /data/www
total 12
-rwxr--r-- 1 sabrina sabrina 1326 Mar 19 16:50 anaconda-ks.cfg
-rw-r--r-- 1 root root 0 Mar 19 16:45 Data-www-DIR.TXT
-rwxr--r-- 1 angela angela 158 Mar 19 16:58 hosts
[root@SMB-ServerIP38 ]#
4.2 通过cifs-utils实现临时和永久挂载
# 安装cifs-utils软件包
[root@smb-clientip37 <sub>]# yum -y install cifs-utils
# 建好挂载点,并查看未挂载前的系统内的磁盘目录结构
[root@smb-clientip37 </sub>]# mkdir /mnt/sabrina
[root@smb-clientip37 <sub>]# df
Filesystem 1K-blocks Used Available Use% Mounted on
devtmpfs 8120652 0 8120652 0% /dev
tmpfs 8132652 0 8132652 0% /dev/shm
tmpfs 8132652 9124 8123528 1% /run
tmpfs 8132652 0 8132652 0% /sys/fs/cgroup
/dev/mapper/centos-root 52403200 1772292 50630908 4% /
/dev/sda2 1038336 145384 892952 15% /boot
/dev/sda1 204580 11440 193140 6% /boot/efi
/dev/mapper/centos-home 147695144 32992 147662152 1% /home
tmpfs 1626532 0 1626532 0% /run/user/0
# 建好用户账号,并设好密码
oot@smb-clientip37 </sub>]# useradd sabrina
[root@smb-clientip37 <sub>]# id sabrina
uid=1000(sabrina) gid=1000(sabrina) groups=1000(sabrina)
[root@smb-clientip37 </sub>]# passwd sabrina
Changing password for user sabrina.
New password:
Retype new password:
passwd: all authentication tokens updated successfully.
## 临时挂载
[root@smb-clientip37 <sub>]# mount -o username=sabrina //192.168.250.38/Data-WWW /mnt/sabrina
Password for sabrina@//192.168.250.38/Data-WWW: ******
[root@smb-clientip37 </sub>]# df
.............. #下面已经看到挂载成功
//192.168.250.38/Data-WWW 52403200 398440 52004760 1% /mnt/sabrina
# 创建一个测试文件SabrinaFlie.txt ,并查看验证
[root@smb-clientip37 <sub>]# echo "Hello Sabrina" > /mnt/sabrina/SabrinaFlie.txt
[root@smb-clientip37 </sub>]# ls /mnt/sabrina/
anaconda-ks.cfg Data-www-DIR.TXT hosts SabrinaFlie.txt
## 永久挂载
# 先取消挂载,并验证
[root@smb-clientip37 <sub>]# umount /mnt/sabrina
[root@smb-clientip37 </sub>]# df
Filesystem 1K-blocks Used Available Use% Mounted on
devtmpfs 8120652 0 8120652 0% /dev
tmpfs 8132652 0 8132652 0% /dev/shm
tmpfs 8132652 9124 8123528 linux下实现文件共享:搭建iSCSI服务器(与samba,nfs不同,直接共享设备)