Samba配置

Samba 是在 Linux 和 UNIX 系统上实现 SMB 协议的一个免费软件,由服务器及客户端程序构成。在上一篇文章中,已经完成了Samba的环境安装,因此直接配置Samba

可以输入以下命令查看是否安装samba

samba -V

出现Samba的版本号则证明Samba安装成功

创建一个用于共享的Samba目录

此步骤可选,也可以把整个工作目录设置为共享文件夹

mkdir /home/sunrise/share

如果配置的共享目录不存在则创建,并给共享的这个目录设置权限

sudo chmod 777 /home/sunrise/share

修改Samba的配置文件smb.conf

在修改任何配置文件前,一定要先备份(血的教训)

在这里,我们使用vim编辑器配置Samba

sudo vi /etc/samba/smb.conf

vim的基本操作

命令模式
使用VIM编辑器时,默认处于命令模式。在该模式下可以移动光标位置,可以通过快捷键对文件内容进行复制、粘贴、删除等操作。

编辑模式或输入模式
在命令模式下输入小写字母a或小写字母i即可进入编辑模式,在该模式下可以对文件的内容进行编辑

末行模式
在命令模式下输入冒号:即可进入末行模式,可以在末行输入命令来对文件进行查找、替换、保存、退出等操作,在末行模式中输入wq!可以强制保存退出

可视化模式
可以做一些列选操作(通过方向键选择某些列的内容,类似于Windows鼠标刷黑)

简单介绍一下Samba共享设置

comment ​ 描述,也就是说明。可写可不写
path 指定共享的路径位置
guest ok 是否允许所有人访问目录,yes为是,no为否,等同于public
read only 是否所有人只读,yes表示所有人只读,no表示所有人可写
writeable 是否所有人可写,yes表示所有人可写,no表示所有人可读,read only和writeable这两个参数是冲突的,所以在一个共享目录当中只能出现其中的一个
write list 拥有写权限的用户列表。假设guest ok=yes,path = /var/spool/samba,同时writeable =yes,这表示所有的人都能访问目录,所有人可写(即上传)。如果加了这个wrtite list,那么只有这唯一的一个用户可写,其他人只能只读,不能写
browseable 是否浏览可见,在网络邻居是否能看到,yes是,no否。这与目录能不能访问没有关系,只代表这个目录能不能在网络邻居里看到。一般情况下,都是yes
valid users 指定可以访问共享的用户。如果没有guest ok,那么是指定某个用户访问。要指定多个用户,用英文状态的逗号隔开,如果是组,则是”@组名“,多个组用逗号隔开。当然你愿意,可以混用,比如:” 用户名,@组名 “这样的

常用且肯定没问题的最简单配置如下:

# 编辑Samba的配置文件
sudo vim /etc/samba/smb.conf

# 文件末尾添加这个共享文件夹的定义:
[Share]
comment = NAS External drive
path = /home/sunrise/share
public = Yes
browseable = Yes
writeable = Yes
valid users= sunrise

其中:

  • valid users:只允许指定的用户和用户组访问

设置Samba用户名和密码

这一步也至关重要,直接影响各设备的访问。

smbpasswd 命令的用法 
    smbpasswd -a 增加用户(要增加的用户必须以是系统用户)   
    smbpasswd -d 冻结用户,就是这个用户不能在登录了   
    smbpasswd -e 恢复用户,解冻用户,让冻结的用户可以在使用   
    smbpasswd -n 把用户的密码设置成空.   
                 要在global中写入 null passwords -true   
    smbpasswd -x  删除用户  
    # 查看samba用户列表(需要root权限)
    pdbedit -L

    # 对samba用户进行管理(用户已经在系统中创建)(需要root权限)
    smbpasswd -h  #查看支持的命令列表

    # 异常时可查看日志情况
    cat /var/log/samba/log.%m

这里推荐用旭日x3派的默认用户名sunrise

# 输入Samba用户的访问密码
sudo smbpasswd -a sunrise
New SMB password: 
Retype new SMB password: 
Added user .sunrise

重启Samba


service smbd restart

到这里, 一个网络文件系统就已经部署完成了; 如果不需要云盘相关的一些功能, 直接使用也没有问题

在Windows中访问Samba服务

使用ifconfig查看IP

然后在电脑端输入旭日x3派的ip地址,即可完成对NAS服务器的连接

配置nextCloud

Nextcloud 是一款开源免费的私有云存储网盘项目,除了保存数据,通过安装插件,实现更多功能。在前面我们已经通过snap完成了nextCloud的安装

通过访问本机ip(http://ip/) 即可进入 nextCloud 的安装页面。根据个人需求输入用户名创建用户即可。

如果需要修改端口可以运行以下命令

snap set nextcloud ports.http=8080

创建管理员账号和密码之后登陆,和一般的网盘就没什么区别了,可以上传下载对应的文件

至此就完成了基于Samba+nextCloud的简易家用NAS服务器搭建,接下来实现将人脸识别图像拍照上传网盘

通过snap方法配置的nextcloud的文件默认存储在/var/snap/nextcloud/common/data中,所以只需要在程序中添加下面这段程序,就可以实现把人脸识别的视频数据拍照上传网盘的功能

    //如果图片小于等于100张
    if (count <= 100)
    {
            string filename = format("/var/snap/nextcloud/common/data/%d.jpg", count);
            //通过imwrite函数将图片保存到背景数据
            iwrite(filename, myFace);
            imshow(filename, myFace);
            waitKey(100);
            destroyWindow(filename);
            count++;
    }

顺便测试了一下NAS的IO速度,下载和上传速度大概在3MB/s左右,速度虽然说不上很快但用于人脸识别数据的上传也是绰绰有余了