【Linux笔记】samba源码安装及基本使用说明

前段时间项目中碰到从windows机器上传多媒体文件至linux服务器的需求(人工审核并触发同步),调研了几种上传机制或实现方案:

1) http方式上传至WebServer

用PHP或Python脚本上传给WebServer,但由于多媒体文件动辄几百兆,PHP由于最长执行时间的限制首先被排除,另外由于用脚本上传需要增加失败重试等控制逻辑,Python虽然可以实现这些功能,但考虑到开发成本及服务的稳定性,并不是最优方案

2) flash方式上传

例如百度云web端就使用了flash方式上传,通过chrome调试工具可以看到,百度云web端的上传按钮调用的是swfupload,关于swfupload的介绍,可以参考这里这里),但由于之前对该方案完全没有了解,开发成本太高,所以只能放弃
 -_-

3) ftp方式上传

在Linux服务器搭建ftp服务器,在Windows客户机安装ftp客户端工具,鼠标拖拽即可实现文件上传。但由于厂里网络拓扑的特殊性及服务器运维规范,这种方式虽然技术是可以实现业务需求,但实现起来比较麻烦

4) 其它开源的文件同步工具

开源工具中首先想到Samba,在考虑业务需求和机器业务规范后,发现samba可以方便地实现需求。

本文下面的部分是在Samba源码安装及基本配置方法的笔记。

1. Samba是什么

Samba是一套开源软件,可以在安装了不同操作系统的机器间共享文件或打印机。尤其是需要在Window客户机与Linux服务器间共享文件时,samba显得尤为方便。更系统性的介绍可以参考官网wiki
pedia

2. 源码安装步骤

以v4.1.9为例,源码编译/安装步骤(安装需要root权限)如下:

1) 从samba官网下载最新版本源码,解压,进入源码目录

2) 确保系统默认的python版本为2.7+且编译python时配置了--enable-shared,否则后续编译samba时会报错

3) 执行命令: ./configure && make && make install,samba会被默认安装在/usr/local/samba/路径下

4) 根据实际业务需求,配置/usr/local/samba/etc/smb.conf,如设置共享目录及用户等

5) 依次启动samba相关的2个守护进程:

shell> /usr/local/samba/sbin/smbd -s /usr/local/samba/etc/smb.conf -D
shell> /usr/local/samba/sbin/nmbd -s /usr/local/samba/etc/smb.conf -D

备注1:上述启动命令中的/xxx_path/smb.conf是安装完samba后配置文件的实际路径

备注2:可通过echo $?查看进程启动状态,或通过ps aux | grep db查看进程是否已存在,还可通过netstat -tnlp查看smbd是否处于端口侦听状态(tcp端口139和445,至于为何侦听两个端口,可参考这里的Firewall Configuration部分) ;nmdb占用的是udp 137端口

6. 终端执行/usr/local/samba/bin/smbclient -U% -L localhost,测试samba守护服务是否正常,如未报错,表明samba服务已成功启动

官方的Install Guide可以参考这里

3. Samba基本配置

samba的配置文件典型路径为/etc/samba/smb.conf或/usr/local/samba/etc/smb.conf,文件语法与windows的.ini类似:文件包含以"[]"为期数标识的多个sections,每个section下配置项遵守key = value的格式。

samba.conf中,每个section代表samba服务器的一个meta-service或共享配置。其中,[global]较为特殊,它包含的配置项会影响整个samba服务器的配置;[homes]或[printers]被称为meta-service,前者默认将每个用户自己的home目录设置为该用户可写的共享目录,后者则提供了打印队列支持并配置了来自各samba客户端的打印任务的存放路径。

我们可以根据实际需要,配置多个section,比如:

[Shared]
   comment = Global Share - All Users
   path = /samba/shared
   read only = No
   guest ok = Yes
   public = Yes
   browseable = Yes
   create mask = 0666
   directory mask = 0777

上述配置的作用是:所有用户(包括guest和public用户)均可浏览或读写/samba/shared目录,在该共享目录下创建新目录的默认权限是777,创建新文件的默认权限是666

下面的配置可以关闭默认的"打印机和传真"共享目录

   load printers = no
   printcap name = /dev/null
   ## hide printers and faxes share
   disable spoolss = yes

其它隐藏文件或文件夹的配置方法,可以参考官网文档的说明

4. Samba用户管理

Samba的用户管理与linux系统的用户管理有一定依赖,即Samba的用户必须也是Linux系统添加的用户,但密码可以独立。

添加新用户的典型步骤是:

1) 以linux root帐号执行adduser命令添加linux系统用户和登录linux系统的密码(该用户名也是登录samba的用户名)

2) 用smbapasswd工具为上步添加的新用户设置登录samba的密码

3) 在smb.conf正确的section中,设置共享目录的有效用户,典型配置如下

[video-upload]
   comment = Shared Director for 3rd-party videos
   path = /home/slvher/cooperate-uploads
   valid users = slvher
   public = no
   writable = yes
   printable = no
   hide dot files = yes
   create mask = 0766

更新完配置文件smb.conf后,重启smbd和nmbd进程,此时,我们就可以在windows客户机通过登录samba服务器来共享文件了

5. Windows客户机访问Samba服务

在前述步骤均正确执行的前提下,可以通过在windows机器运行命令行输入\\samba-svr-ip\slvher并在弹出的对话框中输入用户名/密码来登录samba服务器。

登录成功后,会打开一个共享文件夹,用鼠标拖拽文件即可触发samba自动同步

【参考资料】

1. Samba官网

2. Installing Samba on a Unix System

3. online-doc: using_samba: ch09. Users and Security

时间: 2025-01-04 08:45:49

【Linux笔记】samba源码安装及基本使用说明的相关文章

在 Linux 系统上源码安装 GTK+ 2.0

在 Linux 系统上源码安装 GTK+ 2.0==================================================Keywords: GTK+, Install, Linux, SourceAuthor:       whyglinux (whyglinux AT hotmail DOT com)Date:          2007-01-07==================================================目录0. 前言1.

subversion linux 服务器端搭建 源码安装

下载源码包 1.1 subversion 源码包 http://subversion.apache.org/download/ 1.2下载sqlite-amalgamation 此处用的版本 subversion-1.8.9.tar.gz sqlite-amalgamation-201408010140.zip 2.请参照 http://my.oschina.net/u/234018/blog/297849 安装apr apr-util apache 3. 解压 安装  tar -zxvf su

linux系统下源码安装PHP5.6

linux系统下源码安装PHP5.6 从php5.4开始,需要自己下载安装libXpm-dev了,但是由于包的依赖性原因,我就选择了yum方式来进行安装,通过网络yum源直接下载并进行安装了 下载php以及相关的库文件(百度网盘:http::/pan.baidu.com/s/1bnL31c7) gd库以及php功能特性扩展库文件 libgd-2.1.1.tar.gz        gd库文件(使php支持以下功能)     jpegsrc.v7.tar.gz         jpeg库文件(使p

Linux平台下源码安装mysql多实例数据库

Linux平台下源码安装mysql多实例数据库[[email protected] ~]# netstat -tlunp | grep 330tcp6 0 0 :::3306 :::* LISTEN 6191/mysqld [[email protected] ~]# ss -tlunp | grep 330tcp LISTEN 0 80 :::3306 :::* users:(("mysqld",pid=6191,fd=10)) [[email protected] ~]# syst

Linux 下MySQL源码安装完整版

在Linux中安装MySQL,通常为RPM与源码方式安装.对于生产环境而言,由于需要自定义诸如安装路径.数据文件位置.字符集以及支持的存储引擎等多以源码方式来进行安装.之前有写过一篇关于源码安装的文章,Linux下基于源码方式安装MySQL 5.6,但不是很完整,因此该文可以作为其补充.以下为具体安装步骤,供大家参考. 1.安装前的有关描述必备的包和工具  gcc/g++ :MySQL 5.6开始,需要使用g++进行编译.  cmake  :MySQL 5.5开始,使用cmake进行工程管理,c

Linux下从源码安装python,将python安装到任意路径下(非site-packages)

以centos7为例: 源码安装python,一般先安装一些devel的包: yum -y install xz wget gcc make gdbm-devel openssl-devel sqlite-devel zlib-devel bzip2-devel 然后下载源码 解压源码: tar -Jxf Python.x.tar.xz cd Pyhton.x ./configure 这里有一些选项,--bindir: 安装完成后which python所在的路径 --prefix是指安装pyt

LAMP配置笔记之源码安装apache

下载Apache源码: http://httpd.apache.org/(当前最新版本为2.4.12) tar -xf http-xx.tar cd http-xx ./configure --enable-so          //另外还可以使用 --prefix=path 指定安装位置,默认安装位置为: /usr/local/apache2/ ,完整的配置选项参考官方文档:http://httpd.apache.org/docs/2.4/programs/configure.html ma

Linux环境下源码安装PostgreSQL

1.下载PostgreSQL源码包,并保存到Linux操作系统的一个目录下 2.解压PostgreSQL源码包 :tar zxvf postgresql-9.2.4.tar.gz 或 tar jxvf postgresql-9.2.4.tar.bz2 3,切换到刚刚解压的目录下:cd postgresql-9.2.4 4. ./configure 如果遇到错误,则需要如下安装依赖工具包(按需安装) yum install gcc yum install readline yum install

Linux MySQL5.5源码安装

环境:CentOS7,MySQL5.5 1.MySQL5.5源码下载 Oracle的网站打开较慢,http://mirrors.sohu.com/mysql/这里提供了MySQL的镜像.一般的,Linux的程序安装有两种方式:A利用RPM,YUM等工具 B手动安装.其中手动安装又有两种方式,一种是直接下载已经编译好的二进制文件,另一种是下载源码手动编译.我们这里尝试下载源码手动编译的方式. 如何区分下载文件列表的文件是已编译好的二进制文件,还是源码文件: A.文件大小.由于从源码编译为二进制文件