samba

  • samba配置文件smb.conf详解

    ·

    前言 Samba的主配置文件叫smb.conf,默认在/etc/samba/目录下。 smb.conf含有多个段,每个段由段名开始,直到下个段名。每个段名放在方括号中间。每段的参数的格式是:名称=指。配置文件中一行一个段名和参数,段名和参数名不分大小写。 除了[global]段外,所有的段都可以看作是一个共享资源。段名是该共享资源的名字,段里的参数是该共享资源的属性。 Samba安装好后,使用testparm命令可以测试smb.conf配置是否正确。使用testparm –v命令可以详细的列出smb.conf支持的配置参数。 全局参数 ==================Global Settings =================== [global] config file = /usr/local/samba/lib/smb.conf.%m 说明:config file可以让你使用另一个配置文件来覆盖缺省的配置文件。如果文件 不存在,则该项无效。这个参数很有用,可以使得samba配置更灵活,可以让一台samba服务器模拟多台不同配置的服务器。比如,你想让PC1(主机名)这台电脑在访问Samba Server时使用它自己的配置文件,那么先在/etc/samba/host/下为PC1配置一个名为smb.conf.pc1的文件,然后在smb.conf中加入:config file = /etc/samba/host/smb.conf.%m。这样当PC1请求连接Samba Server时,smb.conf.%m就被替换成smb.conf.pc1。这样,对于PC1来说,它所使用的Samba服务就是由smb.conf.pc1定义的,而其他机器访问Samba Server则还是应用smb.conf。 workgroup = WORKGROUP 说明:设定 Samba Server 所要加入的工作组或者域。 server string = Samba Server Version %v 说明:设定 Samba Server 的注释,可以是任何字符串,也可以不填。宏%v表示显示Samba的版本号。 netbios name = smbserver 说明:设置Samba Server的NetBIOS名称。如果不填,则默认会使用该服务器的DNS名称的第一部分。netbios name和workgroup名字不要设置成一样了。 interfaces = lo eth0 192.168.12.2/24 192.168.13.2/24…

    Read More

  • samba中实现共享中所有创建的文件都属于指定用户的功能

    ·

    方法很简单,但很实用。 在需要指定的共享中加入。 force user = 要指定的用户 例如,要求老师得能在“孙锡源”这个学生的共享文件夹中创建文件,但老师创建的文件所有者是老师本人,孙锡源没权限修改及删除文件。那么就可以加一行“force user = sxy”,让老师创建的文件的所有者也是孙锡源本人,这样孙锡源就可以操作文件了。

    Read More

  • 记录一个Linux下使用usermod修改用户家目录后产生的奇怪问题

    ·

    问题描述: 学校机房的samba服务器中本来所有用户都是存放在/home目录下的,但是我在为用户统一修改权限时发现这样极不方便。因为老师和学生的权限肯定是不同的,但他们又都在同一个目录下,修改起来很麻烦。 我的解决办法是:在/home目录下新建一个teacher目录用来存放教师的用户家目录,再新建一个student用来存放学生的用户家目录,这样下次修改权限时就可以直接用通配符来分别为教师和学生修改了。 既然有了想法,就开始实施吧。 我选择使用usermod命令一个一个的辛苦的为每个用户修改家目录,而不是简单粗暴地修改/etc/passwd文件。 以下以“sxy”这个用户来做演示,注:此时我的工作目录在/home下,且/home/teacher与/home/student目录已创建。 usermod -md student/sxy sxy 修改后,查看/home下已经没有sxy这目录了,此目录已被迁移至/home/student下。 然而, 重点来了!!!! 虽然成功的迁移了目录,但是我用windows登陆samba服务器的时候点sxy这个共享目录竟然提示我“找不到路径”???注:此处的sxy共享是使用[homes]配置的。 排错过程: 我的第一步:怀疑,是不是因为samba的用户数据库中记录的还是旧的文件路径,要将用户重新加入数据库才能解决问题? 结果:用户重新加入samba数据库后问题依旧。 第二步:怀疑,是不是samba的[homes]字段必须使用默认的家目录路径,也是就是存放在/home下,不能自定义家目录? 结果:新建了一个系统用户“test”,创建用户时指定其家目录为/home/student/test并将其加入samba用户数据库中后,发现其家目录的共享可正常访问。 第三步:陷入沉思~~~随后怀疑,是不是因为usermod命令修改用户家目录改的不够彻底(比如说,某些系统配置文件中的用户家目录的路径还是以前的)。 结果:删除一个samba家目录共享无法访问的用户“lzl”,并在重新建立时使用相同的用户名,且指定家目录为/home/student/lzl同时加入到samba用户数据库中后samba的家目录共享又可以正常访问了。 第四步:感觉上,第三步中貌似找到了问题的原因。就在我准备一个个删除并重建用户时突然一个想法冒出来,我是不是可以切换到一个之前修改过家目录的“问题用户”上,来看看其家目录到底变没变。 结果:使用su – sxy命令尝试切换到“sxy”这个用户上时抛出错误: 第五步:我注意到,第四步的报错中的路径是相对路径而不是绝对路径,马上查看/etc/passwd文件,发现,所有的“问题用户”的家目录都是相对路径而正常用户都是绝对路径。 问题用户: 正常用户: 至此,问题的原因彻底搞清楚了,那就是因为我在使用usermod修改家目录时使用的是相对路径。 解决办法:使用usermod命令重新修改为绝对路径,或直接改/etc/passwd文件。

    Read More

  • samba配置文件中的常用变量

    ·

    先简单解释下什么是samba配置文件中的变量。 上图中,所有以“%”开头的字母都是变量(已用红色箭头指出)。各个变量代表的值已在下方标注。 %S = 当前服务名(如果有的话)   %P = 当前服务的根目录(如果有的话)   %u = 当前服务的用户名(如果有的话)   %g = 当前用户说在的主工作组   %U = 当前对话的用户名   %G = 当前对话的用户的主工作组   %H = 当前服务的用户的Home目录   %v = Samba服务的版本号。   %h = 运行Samba服务机器的主机名   %m = 客户机的NETBIOS名称   %L = 服务器的NETBIOS名称   %M = 客户机的主机名   %N = NIS服务器名   %p = NIS服务的Home目录   %R = 说采用的协议等级(值可以是CORE, COREPLUS, LANMAN1, LANMAN2,NT1)   %d = 当前服务进程的ID   %a = 客户机的结构(只能识别几项:Samba,WfWg,WinNT,Win95)   %I = 客户机的IP   %T = 当前日期和时间 以上内容摘录自:http://blog.csdn.net/xkq_lyx/article/details/12905863  

    Read More

  • CentOS 6下超实用的samba配置教程

    ·

    介绍: samba是在linux/unix上实现SMB协议的免费软件,通俗来说就是让linux/unix支持与windows间互相共享文件。 安装软件包: yum install -y samba samba配置文件介绍 samba配置文件的存放路径为 /etc/samba/ 该目录下有以下三个文件: lmhosts文件中记录着局域网中NetBIOS与IP地址的对应关系 smb.conf是samba的主配置文件,其内容由全局配置部分和共享配置部分组成。 smbusers文件记录着windowns中用户与linux中用户的对应关系,例如windows中的administrator管理员账户对应linux下的root用户。 samba的配置: 在开始配置前,首先明确下需求: 1、user11和user12用户可以通过samba共享来访问自己的家目录,且此共享仅本人可见。 2、创建三个共享,分别为share1、share2、share3,其共享的本地文件夹分别为/tmp/a1、/tmp/a2、/tmp/a3。 3、group1组的用户user1对share1共享有全部权限,group2组的用户user2对share2有全部权限,group3组的用户user3对share1和share2共享都有全部权限;对于share1和share2共享其他人有只读权限;share3为公共存储,所有人都有存取权。 4、所用用户新建的文件都是本人拥有全部权限,其他人只有只读权限。 知道了需求,那么现在就来根据需求来做具体配置吧: vim /etc/samba/smb.conf //使用vim文本编辑器打开配置文件 转到第248行,可以看到如下内容,看开头一行,[homes],home是家的意思,加s呢,变成复数了,可以理解成所有用户的家,哈哈,感觉我像是在讲英语。总之,通过配置此部分就可以满足需求1了。 comment选项是用来添加一个文本描述的。 browseable选项定义他人是否可以看到此共享,yes为可以,no为不可以(仅自己可见)。 writable选项用来定义共享是否可写。 valid users选项定义该共享规则对哪些用户启用。 看显而易见,我们只要设置valid users选项,让此共享配置仅对user11和user12用户生效即可满足需求1。 再来看需求2,新建三个共享,这个怎么破?其实很简单啦,配置文件里已经写好了现成的,我们只需要复制成三份就好。 转到配置文件的末尾,可以看到以[public]关键字开头的配置部分,这就是配置共享的模板。 复制前需要注意,这部分配置文件默认被注释掉了,如果你不想在复制完去一点点的删除三份注释符号的话那最好在复制之前把这一份注释符号删掉,如下图: 三个共享有了,但他们的配置文件是一摸一样的,那共享名和共享的文件夹一定也是一样的,要如何为每一个共享做定制呢? 先看这部分配置文件的简单介绍: 开头的[public]是共享名,可任意起,与实际的共享文件夹可以不同名。 comment是没用的文本介绍。 path是指定要共享的本地文件夹的路径。 public是用来指定是否共享的,有yes和no两个选项,至于这两个选项分别是啥意思我就不啰嗦了。 writable用于配置此共享是否支持写入。 printable指定是否支持打印,没有特殊需求的话这里都保持注释状态。 write list此选项用于决定哪些用户或组对此共享拥有写入权限,此处一般保持注释就好,因为linux的权限管理可比samba的好用多了。 以下是按照需求2修改过的配置文件,修改部分已经用红笔标出来了,对照上方配置选项的解释就可以轻松理解下图的配置内容了。 权限配置部分: 下面来看需求3,很明显这里是需要做权限控制了。但我不得不唠叨一下,samba自带的权限管理配置起来那是相当的蛋疼,而且功能弱爆了。所以这里我们使用linux系统权限管理加ACL来做权限控制。 关于ACL的介绍可以参考: linux下acl权限详解 在配置权限前,我们先把所需要的用户与组都创建完,并把他们加入到samba用户数据库中,再把要共享的文件夹都创建出来。 新建用户: useradd user11 useradd…

    Read More