samba

一. 理论知识:

1. samba替代nfs的原因。

2. windows主机之间使用SMB/CIFS协议进行文件和打印的共享。(微软的服务)       端口号:445和139 (tcp)

3. samba的核心是两个守护进程smbd和nmbd。

   smbd和nmbd使用的全部配置信息都保存在smb.conf文件中。

   smb.conf向smbd和nmbd两个守护进程说明输出什么以便共享,共享输出给谁及如何进行输出。

4. smbd进程的作用是提供文件和打印共享。       nmbd进程是提供网络中域或工作组内的主机进行主机名称的解析。

二.安装包:1.samba   2.samba-common   3.samba-client   4.system-config-samba

1. 安装着四个包。 # rpm -ivh samba*

2. 源码包的安装(samba-3.0.22.tar.gz)       # tar zxvf samba-3.0.22.tar.gz (解压源码包)    # cd samba-3.0.22              (进入解压目录)    #./configure  --prefix=/usr/local/samba  --sysconfdir=/etc/samba   && make && make install   (执行编译三步骤)     【--prefix 是指定samba安装目录。 --sysconfdir是samba配置文件安装目录】 

三. /etc/samba/smb.conf主配置文件的主要参数       (samba配置文件中注释行以“#” 和 ";"开头,不区分大小写。还有以"/" 和 "*" 开头的也是注释行)【去掉注释行,该配置生效】

1. # grep -v "#"  /etc/samba/smb.conf  | grep -v ";"  (除去以"#" 和";"号开头的行。 -v 是筛选的意识)

    [global]              workgroup=MYGROUP

             server string = Samba server

             printcap name = /etc/printcap

             load printers = yes

             cups options = raw

             ;  hosts allow = 192.168.1.          10.100.100.       (注意格式) 

             log file = /var/log/samba/%m.log

             max log size = 50

             security = user

     [homes]                comment = home directories

             browseable = no

             writable = yes  

     [printers]

             comment = all printers

             path = /var/spool/samba

             browseable = no

             guest ok = no   等同于  public = no

             writable = no                printable = yes

  [global] 是全局的设置,它对samba的功能具有很大的影响,主要用来设置整个系统规则;     workgroup  是工作的名称     server string 是对samba服务器的注释

  netbios name = 192.168.1.1  自己的主机名,可以是ip或主机名。默认是Linux的主机名,最好写上。

 【dos charset = GB2312  ,  unix charset = GB2312. 加上这两句就可以正确显示中文了。 】     host allow 允许登录的主机名单,用ip地址给出,多个ip地址用空格分开。

  printcap name 指定 printcap 文件地址,通常为/etc/printcap,包含了Linux打印机的配置信息。

  load printers 允许使用共享打印机是,设为yes

  log file = /usr/local/samba/var/log.%m   日志文件位置

  max log size = 0 日志文件大小,单位是KB ,是0 就不受限制。

  guest account 来宾账号,表示哪一个Linux用户作为所要的客户连接,定义samba缺省的用户账号,这个账号必须在/etc/password文件中。

  security 指定安全级别,大多数时都是使用user级别,即:samba使用本地Linux口令文件验证。

  【一共有四个级别:share  user  server  domain     1.share:没有安全级别,任何用户都可以不要用户名和口令访问服务器上的资源。     2.user:这是默认的设置,要求用户在访问共享资源之前必须提供用户名和口令,进行验证。     3.server:和user安全级别类似,但用户名和口令是递交到另外一个服务器上去验证。如果提交失败,就退到user安全级别。     4.domain:这个安全级别要求网络上存在一台windows的主域控制器,samba把用户名和口令提交到它那里去验证】

   注意: /etc/samba/lmhosts     文件是提供ip和netbios名称间的解析

          /etc/samba/smbpasswd   文件是samba密码文件

          /etc/smbusers          文件是samba用户文件

          encrypt passwords = no  采用的是明文密码验证,如果是加密的就改为yes

          后面三种安全级别要求用户在本Linux机器上也要有系统账号,否则不能访问。

            四. samba用户的建立

1. 用户必须是系统用户,可用 useradd 命令添加系统用户。

2. 添加samba用户用  sambapasswd   -a     用户名     然后提示你输入密码。(是添加某个用户)

      -d     用户名       (是禁用某个用户)

      -e     用户名       (是启用某个用户)          -x     用户名       (是删除某个用户)

 

五. 使用swat管理samba服务器

1. 安装swat软件包  # rpm -ivh samba-swat-3.0.10.1.rpm

2. # chkconfig swat on    # service xinetd restart

3. http://samba服务器ip:901 (客户机通过http方式就可以访问samba服务器了。)

 

六. # testparm  命令是samba配置文件测试工具,可以对smb.conf配置文件的语法进行检测,并显示配置的清单。(在服务器上用)

七. # smbstatus 命令是显示服务器的连接信息 (在服务器上用)

八. # smbclient   -L   samba服务器的ip    (显示samba服务器上的共享目录)【当要求输入密码是,直接回车即可】

    # smbclient //samba服务器的ip/aa  -U qq (以用户qq去访问samba服务器上的共享目录aa)【当要求输入密码时,输入用户qq的密码】

 

九. 目录的挂载

   smbmount 用于挂载Linux共享目录。格式如下:

   # smbmount  //服务器ip/public   /mnt  (将服务器上的public目录挂载到本地的/mnt目录下)

   或用下面的挂载命令:

   # mount  -t  smbfs  -o  username=aa   //服务器ip/public /mnt  (-t 是指定文件类型,-o 是指定用户)

十. 常见共享目录配置的含义:comment   (对共享目录进行注释,说明)

                            path   (共享目录在服务器中对应的实际路径)

       browseable  (该目录是否可以被看见)                writable  (是否可写,与read only 的作用相反)

       read only  (只读)

       create mask = 0755  (创建文件时权限是755)

       only guest = yes   (仅以匿名用户登录)

       valid users = liu  (只有以liu登录时,才可以执行相应的权限,其他用户不行。与其相反的是 invaild  users=)

第二部分:实验

一. 建立资源,是登录到该服务器的用户均有使用该空间的权限(包括读和写)

1.    编辑samba配置文件:# vim /etc/samba/smb.conf  在最后添加如下内容:

   2.   [resource]                comment = local resource   (对resource 的描述)

      path = /var/samba/resource (resource的本地路径)

             read only = no 或用  writable = yes  (可读写)

      public = yes   (允许所有访问)   3. # mkdir -p /var/samba/resource   (建立共享文件夹)

4. # chmod 707 /var/sammb/resource  (由于要所有人都可读可写,所以要设置相应的权限)                将共享文件放入resource目录,有两种方法:

             A. 用cp命令拷贝        # cp   源文件    /var/samba/resource

             B. 用ln  -s指针 命令   # ln  -s  源文件  /var/samba/resource

二. 建立资源,只能让用户liu全权访问

1. 编辑samba配置文件   # vim /etc/samba/smb.conf   在后面添加如下内容:

2.  [liu]

 comment = liu

 path = /var/samba/liu

 vaild  users = liu  (只允许liu)【相反的命令  invaild users =  】

 public = no   (当用了public = no  时,就应有 vaild users =  用户名)

 writable = yes (可写)

3. #mkdir -p  /var/samba/liu   (建立共享文将夹)     

4. 由于只能让liu使用,所以要设置相应的权限 :

   # chown liu:liu  /var/samba/liu

   # chmod  700 /var/samba/liu

  【此时该文件夹属于liu用户,并且只能由liu用户访问】

三. 建立资源,只能让 root  zhang  wang 访问。

1. # vim /etc/samba/smb.conf  (编辑配置文件)

2. [zhang wang]

  comment = zhang wang

  path = /var/samba/zw

  vaild users = zhang wang root      public = no 

  writable = yes

  create mask = 0707  (创建文件的权限) 

3. # mkdir -p /var/samba/zw  (建立共享目录)   4. # chmod 707 /var/samba/zw  (设置权限)      

四. 建立资源,然指定的组group1中的用户访问。

1. # vim /etc/samba/smb.conf  (编辑配置文件)

2. [group1]

    comment = group1

    path = /var/samba/group1

    public = yes       writable = yes        write  list = group1  (设置访问用户列表) 【还有  read  list  】

3. # mkdir -p /var/samba/group1  (建立共享文件夹)   

4. # chown  - R  group1:group1   /var/samba/group1  (更该文件所属的主和组)

   # chmod 770 /var/samba/group1  (设置相应的权限)      

转载于:https://blog.51cto.com/rdlinux/293794