Linux下samba源码安装(非RPM包)

实战linux与xp的访问(原创) 小弟本身经过实践终于配置成功了samba,写下配置过程,但愿高手多提意见,本文有个遗憾个人rpm安装samba打印机共享成功,用源码安装打印机没有成功,很是惋惜。(原创)本文只发表于[url]www.xxlinux.com[/url],做者tian1118(大学法律专业的linux爱好者)。特别感谢黑夜不在,燕南天等。 欢迎转载,并保证本文的完整性,并注明出处。 先学习一些基础。 samba的核心是两个守护进程smbd和nmbd程序,在服务器启动到中止期间持续运行。Smbd和nmbd使用的全 部配置信息全都保存在smb.conf文件中。Smb.conf向smbd和nmbd两个守护进程说明输出什么以便共享, 共享输出给谁及如何进行输出。Smbd进程的做用是处理到来的SMB软件包,为使用该软件包的资源与 Linux进行协商,nmbd进程使其它主机(或工做站)能浏览Linux服务器。 若是安装时用rpm安装,那么启动samba不用service smb start,用service nmbd start,service smbd start也能够的。 在smb.conf文件中,注释行以“#”开头,同时每项中英文字母不区分大小写,在一行最后字符尾加 “\”,可将一行分红多行。用“;”开头的行,是可改变的配置,将“;”去掉时,该配置将取做用。 [global](全局参数的设置,它对samba的功能具备很大的影响,主要用来设置整个系统规则。 workgroup= 这是你在windows中的域。 server string= 这是在windows中看到你的samba的解释。 netbios name =最好是你的机器名,若是把改句注消,默认的是你LINUX机器名,不过,最好仍是本身填上 dos charset=cp936 unix charset=cp936 加上这二句就能够正确显示中文了。 hosts allow 容许登陆的linux-samba的主机名单,用IP地址给出,多个IP地址用空格分开,不在名单中的主机将不能获得samba提供的服务,这也是网络安全的一个方面。 printcap name 指定printcap文件地址,一般为/etc/printcap,包含了linux打印机的配置信息。 load printers 容许使用共享打印机时,默认值为yes。 printing 若是使用的打印机是非标准的,那么应该指出打印机系统类型。 log file = /usr/local/samba/var/log.%m max log size = 0   上面这两行则是Samba日志的相关定义。其记录文件的位置是放在/var/log/samba/%m.log,安装目录不同,日志可不同,后面的一条是定义日志记录文件的大小,单位是KB,若是是0的话就不限大小。 guest acount 来宾账户,表示用哪个Linux用户做为所要的客户链接,定义Samba缺省的用户帐号,这个帐号必须在/etc/passwd中。 security 指定安全模式。大多数用户使用user级的安全模式,samba用本地linux口令文件验证。 security = security_level 定义Samba的安全级别,按从低到高分为四级:share,user,server,domain。它们对应的验证方式以下:     share:没有安全性的级别,任何用户均可以不要用户名和口令访问服务器上的资源。     user:samba的默认配置,要求用户在访问共享资源以前资源必须先提供用户名和密码进行验证。     server:和user安全级别相似,但用户名和密码是递交到另一个服务器去验证,好比递交给一台NT服务器。若是递交失败,就退到user安全级。     domain:这个安全级别要求网络上存在一台Windows的主域控制器,samba把用户名和密码递交给它去验证。     后面三种安全级都要求用户在本linux机器上也要系统账户。不然是不能访问的 smb passwd file=/etc/samba/smbpasswd (设置smb密码文件的位置) username map =/etc/smbusers encrypt passwords =no 采用的时明文密码验证,若是是加密的,就改成yes 记得某月的某一天,我下定决定安装任何软件包只用源码,不用rpm。虽然很麻烦,可是对于了解linux内部有些帮助。 首先咱们建立一个文档,边安装配置samba,边写教程。 从[url]www.samba.org[/url]下载samba最新源码包,我下载的是samba-3.0.7.tar.gz,把它放在个人目录的中/root/lova/samba下。 tar -zxvf samba-3.0.7.tar.gz 解压获得samba-3.0-7 cd samba-3.0.7 cat README 先看说明,惋惜E文太差,不太懂,直接安装吧。 find . -name configure ./source/configure 原来藏在这 cd source/ mkdir /usr/local/samba 建立安装目录 ./configure --prefix=/usr/local/samba/ 安装到/usr/loca/samba make && make install cd /usr/local/samba/ 到安装目录看看 ls bin include lib man private sbin swat var 安装成功,怎么没有etc目录和smb.conf文件呀,那我本身建立一个 [root--/usr/local/samba]mkdir etc [root--/usr/local/samba]cp ~/love/samba/samba-3.0.7/examples/smb.conf.default ./etc/smb.conf 好了如今看看咱们的目标。 1、有一个共享目录,只能够读,不能够作任何改变。 2、有一个共享目录,任何人均可以作任何改变,包括添加目录文件,删除目录文件。 3、每一个用户能够看到本身的主目录,其它用户不能够看到,固然不能够做改动。 4、有一个共享目录,组A中的人能够作任何改动,组B中的人只能够读,组C中的人看不到。 5、每一个用户登陆后均可以使用打印机。(没有成功)。 目标1方法1 [root--~]cd /usr/local/samba/etc/ [root--/usr/local/samba/etc]cp smb.conf beifen 备份一下省得改错了。 修改smb.conf, workgroup = MSHOME 改成你linux所在的工做组 security = share 开放共享 在smb.conf最后加上 [read1] comment = read1 path = /home/read1 public = yes guest ok = yes writable = yes 建立共享目录 whoami root umask 0022 mkdir /home/read1 cd !$ cat >; linux hi linux ll /home/read1/ 总用量 4 -rw-r--r-- 1 root root 9 10月 24 11:20 linux 644嘛 adduser nxgz ; passwd !$ ; 建立系统用户 [root--~]/usr/local/samba/bin/smbpasswd -a nxgz 再把这个用户添加为samba用户 Can't load /usr/local/samba//lib/smb.conf - run testparm to debug it 怎么出错了,好像没有在lib下没有smb.conf,那我就加上吧 [root--~]cp /usr/local/samba/etc/smb.conf /usr/local/samba/lib/ [root--~]/usr/local/samba/bin/smbpasswd -a nxgz 添加samba用户成功 New SMB password: Retype new SMB password: startsmbfilepwent_internal: file /usr/local/samba//private/smbpasswd did not exist. File successfully created. Added user nxgz. [root--~]service iptables stop 清除全部链: [ 肯定 ] 删除用户定义的链: [ 肯定 ] 将内建链重设为默认的“ACCEPT”策略: [ 肯定 ] [root--~]service network restart 正在关闭接口 eth0: [ 肯定 ] 关闭环回接口: [ 肯定 ] 设置网络参数: [ 肯定 ] 弹出环回接口: [ 肯定 ] 弹出界面 eth0: [ 肯定 ] [root--~]/usr/local/samba/sbin/smbd -D 启动samba的二个进程 [root--~]/usr/local/samba/sbin/nmbd -D 到win-xp下,打开的的电脑,找到地址,输入\\linux主机名,能够找到共享的目录read,成功。 方法2 在smb.conf最后加上以下 [read2] comment = read2 path = /home/read2 public = yes read only = yes mkdir /home/read2 ; cd !$ ; cat >; linux ; chmod -R 777 /home/read2 ; 建立共享目录及修改权限 而后 service iptables stop service network restart /usr/local/samba/sbin/smbd -D /usr/local/samba/sbin/nmbd -D 在win-xp下是看不到咱们共享的read2。 多是smb.conf有问题,咱们用testparm工具检查一下。 [root--~]testparm bash: testparm: command not found 没有输入完整路径。 [root--~]/usr/local/samba/bin/testparm Load smb config files from /usr/local/samba//lib/smb.conf Processing section "[homes]" Processing section "[printers]" Processing section "[read]" Loaded services file OK. Server role: ROLE_STANDALONE Press enter to see a dump of your service definitions 就是没有read2,咱们仔细看看第一行,Load smb config files from /usr/local/samba//lib/smb.conf,好像testpart工具是根据lib/smb.conf获得的,lib下的smb.conf和etc下的smb.conf彻底不同嘛,由于咱们增长了read2,咱们能够复制覆盖了它 cp -f /usr/local/samba/etc/smb.conf /usr/local/samba/lib/ 而后 service iptables stop service network restart /usr/local/samba/sbin/smbd -D /usr/local/samba/sbin/nmbd -D 回到win-xp下能够找到,哈哈,好了,虽然它的权限为777,可是由read only控制,不能够删除,添加。 目标1成功 因为每次修改完/usr/loca/samba/etc/smb.conf,咱们都要 cp -f /usr/local/samba/etc/smb.conf /usr/local/samba/lib/ 而后 service iptables stop service network restart /usr/local/samba/sbin/smbd -D /usr/local/samba/sbin/nmbd -D 咱们能够写个shell emacs samba.sh cp -f /usr/local/samba/etc/smb.conf /usr/local/samba/lib/ service iptables stop service network restart /usr/local/samba/sbin/smbd -D /usr/local/samba/sbin/nmbd -D 修改完,启动时能够 1, sh samba.sh 2, sh < samba.sh 3, chmod 777 samba.sh mv samba.sh ~/bin samba.sh 这三种方法均可以。 目标2, 以上保持不变,在smb.conf最后加上 [write] comment = write path = /home/write public = yes guest ok = yes writable = yes mkdir /home/write ; cd /home/write ; cat >;linux ; chmod -R 777 /home/write/ ;sh < samba.sh建立共享目录文件,开放权限,重启服务 到win-xp下read目录下能够读,在write中能够删除,添加,改变原文件,目标2彻底正确。咱们再试一下中文问题,在win-xp下打开linux的write目录,找编辑linux,增长中文,并在write目录下创建中文目录,咱们再回到linux下看结果是否能够正常显示中文。结果编辑linux的中文能够正常显示,中文目录是乱码,想一想如何解决。 在smb.confr的[global]中添加 dos charset=cp936 unix charset=cp936 我是加到 security = share的下面了 在win-xp打开write添加中文目录,回到linux下,一看能够正确识别中文 目标3, 多创建几个samba用户。 adduser sambau001 ; passwd !$ ; /usr/local/samba/bin/smbpasswd -a sambau001 用以上方法增长sambau002,sambau003用户 分别su到这些用户,增长文件linux,而后修改smb.conf,把security = 改成user,此次请从新启动一下win,由于添加用户了,这时输入用户和口令就能够进去了,并能够看到本身的目录 个人home以下 [homes] comment = home browseable = no writable = yes valid users = %S create mode = 0664 directory mode = 0775 用一个用户进入,win-xp下创建一个文件,一个目录,在目录中另外创建一个文件,在linux用该用户进入本身的目标,能够看到刚才创建的文件目录,文件权限符合664,目录权限符合775。 目标3成功。 目标4, 创建3个组 groupadd sambag001 ; groupadd sambag002 ; groupadd sambag003 usermod -g sambag001 sambau001 ; usermod -g sambag002 sambau002 ; usermod -g sambag003 sambau003 把刚才3个用户分别添加到3个组中。 mkdir share ;cd share/ ;cat >; linux ; chmod -R 777 /home/share/ 开放权限,在smb.conf中控制它 要求sambag001组中的用户r,sambag002组中的用户rw,sambag003组中的用户no 在smb.conf中添加如下 [share] comment = share path = /home/share public = no valid users = @sambag001,@sambag002 invalid users = @sambag003 write list = @sambag002 再加到win-xp下试,成功 没列出的也不能够进入。 其中用valid userd列出的只有r权限,若是在write list前加个;号,那么sambag001中的用户和sambag002中的用户只能够看。 其中[]里面的是指定的共享名,通常就是网络邻居里面能够看见的文件夹的名字。 comment指的是对改共享的备注。 path指定共享的路径 allow hosts和deny hosts和前面的全局设置的方法同样这里再也不说起。 writeable指定了这个目录缺省是否可写。 user设置全部可能使用该共享资源的用户,也能够用@group表明group这个组的全部成员,不一样的项目之间用空格或者逗号隔开。 valid users指定可以看到该共享资源的用户和组。 invalid users指定不可以看到该共享资源的用户和组。 read list 指定只能读取该共享资源的用户和组。 write list指定能读取和写该共享资源的用户和组。 admin list指定能管理该共享资源(包括读写和权限赋予等)的用户和组。 public指明该共享资源是否能给游客账号访问,这个开关有时候也叫guest ok,因此有的配置文件中出现guest ok = yes其实和public = yes是同样的。 create mode指明新创建的文件的属性,通常是0755。 directory mode指明新创建的目录的属性,通常是0755。 force user强制把创建文件的属主是谁。若是我有一个目录,让guest能够写,那么guest就能够删除,若是我用force user= grind强制创建文件的属主是grind,同时限制create mask = 0755,这样guest就不能删除了。 browseable 指定其它用户可否浏览该用户主目录,固然不容许,因此置为no。 writable 使用户访问该目录时具备读取和写入主目录中的文件时,取值为yes,只有读取权限时应置为no。 xp访问linux成功,再试一下linux访问xp 用 #smbclinet "\\\\nxgz\共享目录名" 能够像telnet或ftp同样登陆windows主机nxgz,要求你输入密码时,输入密码。 而后出现 smb:\>; 因为是源码安装如下工具命令不成功。{{ smbmount //test/share /pub linux挂接windows目录 mount -t smbfs -o username=WINDOWS主机登陆名,password=对应密码 //PC-NAME/SHARE-DIR /mnt/tmp smbmount //testsamba/pub pub linux与linux共享 添加相应目录和用户 1,一个一个添加用户 以root用户身份登陆,添加Linux用户,并设定密码: adduser smbuser passwd smbuser 把用户smbuser加入到Samba 服务器用户中并设定密码: smbpasswd -a smbuser 2,加入系统中的全部用户 #vi /etc/passwd (把一些你不用或者你不知道的用户全删了) # cat /etc/passwd │ mksmbpasswd.sh >; /etc/samba/smbpasswd (把linux本机用户加到smb用户里去) #smbpasswd test (设置test用户的smb访问口令) #/etc/rc.d/init.d/smb restart (重启samba) 3,加入一部分 #smbadduser linuxname:2000name #增长用户 用smbpasswd为每一个用户指定password,格式以下:(必须是Root) smbpasswd userid:passwd userid2:passwd2 ...... }}
相关文章
相关标签/搜索