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  (设置相应的权限)