快速搭建Linux开发测试WEB服务器系列4-Samba共享服务
前面我们已经能让工作站已经能很好的运行了. 接下来我们给这个工作站配置和局域网内的其他 Windows 计算机进行共享的服务. 这样能让工作效率更高效化. Linux 下和 Windows 主机进行共享通常会使用 Samba 服务来实现. 如果是只是 linux 和 linxu 主机进行共享的话, 建议使用 NFS 服务更好. 但是办公电脑 Windwos 系统居多. 我们选择 Samba 服务来实现共享.
首先需要安装 Samba 软件包. 这个在 Ubuntu 下面安装非常方便.
1 | sudo apt-get install samba |
安装完成后系统默认就启动了 samba 服务了. 可以通过查看进程看到:
1 2 3 | sudo netstat -tlnp |grep smb tcp 0 0 0.0.0.0:139 0.0.0.0:* LISTEN 6761/smbd tcp 0 0 0.0.0.0:445 0.0.0.0:* LISTEN 6761/smbd |
从上面的结果看出. 需要注意的是 Samba 服务默认使用 139 和 445 端口, 记得别在防火墙里把这两个端口关闭了 (通常情况下是开启的). 不然外面就无法使用本机到共享资源了.
另外: Samba 有两个服务器. 一个是smb,另一个是nmb. smb 是Samba 的主要启动服务器,让其它机器能知道此机器共享了什么. nmb 是把Linux机器所共享的工作组及在此工作组下的netbios name解析出来, 如果不打开nmb服务器的话,那只能通过IP访问共享.
再来看看手动控制 samba 服务. 可以看看系统里是否运行着 smb 和 nmb.
1 2 | pgrep smbd pgrep nmbd |
在 Ubuntu 到发行版本里, 这两个服务被安装在 /usr/sbin/ 目录下, 另外 /etc/init.d/ 目录下可以用 samba 控制samba服务到启动, 关闭, 重启等.比如:
1 | sudo /etc/init.d/samba start|stop|restart |
或者手动直接执行命令启动
1 2 | sudo /usr/sbin/smbd sudo /usr/sbin/nmbd |
手动干掉他们也很容易:
1 2 | sudo pkill smbd sudo pkill nmbd |
下面来说一下 Samba 服务器的具体配置.
Samba 服务装好后, 在 /etc/samba/目录下会有一个主配置文件 smb.conf 和其他的一些文件. smb.conf 就是smb.conf 的核心配置文件了. 共享服务的设置主要在这个文件里设定. 操作前先备份以下. 然后建立个新的 smb.conf 文件. 先做些准备工作. 我们先在 /home 目录下建立一个文件夹为 mmShare 然后在建立2个文件夹, 一个只允许认证用户只读操作 readOnly, 一个允许认证用户可读可写writable. 最后把 mmShare 文件夹的权限打开.
1 2 3 4 | sudo mkdir /home/mmShare sudo mkdir /home/mmShare/readOnly sudo mkdir /home/mmShare/writable sudo chmod -R 777 /home/mmShare |
再建立一个专门放日志文件的目录, 方便以后管理查询
1 2 | sudo mkdir /home/mmLog sudo mkdir /home/mmLog/samba |
现在设置samba服务
1 2 | sudo mv /etc/samba/smb.conf /etc/samba/smb.conf.backup sudo vim /etc/samba/smb.conf |
在文件里写入下面的内容:
[global]
workgroup = WORKGROUP
server string = Ubuntu Samba Server
netbios name = mHardy
log file = /home/mmLog/samba/log.%m
security = user
encrypt passwords = yes
smb passwd file = /etc/samba/smbpasswd[readShare]
comment = ReadOnly Share
path = /home/mmShare/readOnly
read only = yes
guest ok = yes[writeShare]
comment = Writable Share
path = /home/mmShare/writable
writable = yes
create mask = 0664
directory mask = 0775
smb.conf 文件的配置信息简单的说明以下.
[global] #主机设置
workgroup = 工作组名
server string = 主机说明
netbios name = 主机名称
security = share(不进行安全登录) | user(安全登录,密码文件跟smbpasswd有关) | domain(让Samba作为PDC)
encrypt passwords = yes(输入密码) | no(不需输入密码)
smb passwd file = /etc/samba/smbpasswd 密码文件
log file = /var/log/samba/log.%m 日志文件,可更改
max log size = 0 日志文件大小,0为无限制,单位为KB
load printers = yes
printing = lprng 打印机相关
[Share Directory] #共享文件夹名
comment = 目录的说明
path = 共享名对应的真实目录
read only = 是否只读
public = 是否让所有的用户都可以登入
writable = 是否可写,如果read only=no,而writable=yes,则以writable为准
create mask = 创建新文件权限
directory mask = 创建新目录权限
现在只要添加个共享访问用户, Windows 主机即可通过网络邻居访问到本工作站的共享文件夹了.
我们给系统添加一个帐号 为 smb , 为方便记忆, 我们设置密码也为: smb
1 2 | sudo useradd smb sudo passwd smb |
现在把用户 smb 加入 samba 服务帐号用户, 未方便记忆, 同样设置密码也为: smb, 重启 samba 服务, 设置生效.
1 2 | sudo smbpasswd -a smb sudo /etc/init.d/samba restart |
OK, 现在从 Window 网上邻居可以正常访问 mHardy 的共享了. 测试可以看出. readOnly 文件夹是不能创建文件夹和文件的. 而 writable 文件夹是可以创建文件夹和文件的. 如果要提高工作站安全的话. 可以设置禁止smb用户从本地登录系统.
到这里, 和 Windows 主机间的共享服务配置完毕. 下面再简单的介绍了解一下从 Linux 主机访问 Windows 共享的方法.
Linux 下访问 Windows 或者其他 Linux 主机的共享可以在终端下用 smbclient 工具实现. 使用smbclient 工具, 需要先安装这个软件包. 安装也非常的方便.
1 | sudo apt-get install smbclient |
使用很简单命令语法为:
smbclient -L //IP地址或者主机名
smbclient -L //IP地址或者主机名/共享文件夹名
smbclient -L //IP地址或者主机名/共享文件夹名 -U 用户名
也可以把共享目录映射为一个本地目录. 使用 mount 命令即可. 也可以使用smbmount 命令. 这里需要先安装一下 smbfs 包
1 | sudo apt-get install smbfs |
映射的两种模式:
1. mount 方法
mount -t smbfs -o codepage=cp936,username=用户名,password=密码, -l //ip地址/共享文件夹名 挂载点
mount -t smbfs -o codepage=cp936,username=用户名,password=密码, -l //计算机名/共享文件夹名 挂载点
mount -t smbfs -o codepage=cp936 //ip地址或计算机名/共享文件夹名 挂载点
卸载命令:
umount 挂载点
2. smbmount 方法, 其实是 mount 的一个变种.
smbmount -o username=用户名,password=密码, -l //ip地址或计算机名/共享文件夹名 挂载点
smbmount //ip地址或计算机名/共享文件夹名 挂载点
卸载命令:
smbumount 挂载点
具体的命令参数可以参考 linux samba 相关资料. 这里就不在啰嗦了.
下篇我们开始安装 Web 服务器的数据库 MySQL .