Samba常用配置及GUEST访问

来源:互联网 发布:python图片处理模块 编辑:程序博客网 时间:2024/05/24 07:13

一个比较正常的共享设置
     [MyShare]
  comment = grind’s file
  path = /home/grind
  allow hosts = host(subnet)
  deny hosts = host(subnet)
  writable = yes|no
  user = user(@group)
  valid users = user(@group)
  invalid users = user(@group)
  read list = user(@group)
  write list = user(@group)
  admin list = user(@group)
  public = yes|no
  hide dot files = yes|no
  create mode = 0755
  directory mode = 0755
  sync always = yes|no
  short preserve case = yes|no
  preserve case = yes|no
  case sensitive = yes|no
  mangle case = yes|no
  default case = upper|lower
  force user = grind
  wide links = yes|no
  max connections = 100
  delete readonly = yes|no

  其中[]里面的MyShare指定共享名,一般就是网络邻居里面可以看见的文件夹的名字。

  comment指的是对改共享的备注。
  path指定共享的路径,其中可以配合samba变量使用。比如你可以指定path=/data/%m,这样如果一台机器的NETBIOS名字是grind,它访问MyShare这个共享的时候就是进入/data/grind目录,而对于NETBIOS名是glass的机器,则进入/data/glass目录。
  allow hosts和deny hosts和前面的全局设置的方法一样这里不再提及。
  writeable指定了这个目录缺省是否可写,也可以用readonly = no来设置可写。
  user设置所有可能使用该共享资源的用户,也可以用@group代表group这个组的所有成员,不同的项目之间用空格或者逗号隔开。
  valid users指定能够使用该共享资源的用户和组。
  invalid users指定不能够使用该共享资源的用户和组。
  read list 指定只能读取该共享资源的用户和组。
  write list指定能读取和写该共享资源的用户和组。
  admin list指定能管理该共享资源(包括读写和权限赋予等)的用户和组。
  public指明该共享资源是否能给游客帐号访问,这个开关有时候也叫guest ok,所以有的配置文件中出现guest ok = yes其实和public = yes是一样的。
  hide dot files指明是不是像unix那样隐藏以“.”号开头的文件。
  create mode指明新建立的文件的属性,一般是0755。
  directory mode指明新建立的目录的属性,一般是0755。
  sync always指明对该共享资源进行写操作后是否进行同步操作。
  short preserve case指明不管文件名大小写。
  preserve case指明保持大小写。
  case sensitive指明是否对大小写敏感,一般选no,不然可能引起错误。
  mangle case指明混合大小写。
  default case指明缺省的文件名是全部大写还是小写。
  force user强制把建立文件的属主是谁。如果我有一个目录,让guest可以写,那么guest就可以删除,如果我用force user= grind强制建立文件的属主是grind,同时限制create mask = 0755,这样guest就不能删除了。
  wide links指明是否允许共享外符号连接,比如共享资源里面有个连接指向非共享资源里面的文件或者目录,如果设置wide links = no将使该连接不可用。
  max connections = n设定同时连接数是n。
  delete readonly指明能否删除共享资源里面已经被定义为只读的文件。

问题一:其他机器访问Fedora 9的共享目录时,始终都被要求输入用户名和密码,即使是[public]定义的共享目录也一样!而[public]配置无误,guest ok = yes, public = yes,而我以前长期使用的Mandriva系统没有这个问题。

  解决办法:解决这个问题需要修改smb.conf文件,在[global]节中加入map to guest = bad user,这个配置的意思是将所有samba系统主机所不能正确识别的用户都映射成guest用户,这样其他主机访问Fedora 9的public目录时就不再需要用户名和密码了。

  分析:在Fedora 9系统中,map to guest的默认配置不是bad user,因此一旦客户机中访问Fedora 9的用户不是map to guest所指定的用户时,则samba将之视为普通用户,而不是guest,从而要求用户输入用户名和密码。假设客户机访问的用户名是guest,密码为空,而samba的map to guest又正好设置为guest,则客户机将不用输入用户名和密码。为了能适应所有客户机中不同的guest帐号,map to guest = bad user是个明智的选择。

  问题二:Fedora 9访问其他任何机器时,能看到共享目录和其下的文件和子目录,但是不能进行写操作,只要一写就报告“为smb协议服务的进程意外退出”,无法在XP的共享目录中进行写操作,部分打开文件夹的操作也报此错误!这个问题令人百思不得其解,只到晚上我在家里使用Smb4k访问远端主机的共享目录时才现出此错误的真实面目:

  mount error 1 = Operation not permitted

  解决办法:开一个console,敲入以下命令:

  su -c 'chmod u+s /sbin/mount.cifs'
  su -c 'chmod u+s /sbin/umount.cifs'

  或者su -到root用户,再执行chmod。

  分析:由此错误提示可见,出现这个错误的原因在于samba客户端在挂载远端主机的共享目录时没有权限,而我平时在使用Linux系统时都是用普通用户登录而非root用户,普通用户默认没有mount的权限,因此挂载不上远端共享目录,无法写操作就很正常了。

原创粉丝点击