免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 2724 | 回复: 0
打印 上一主题 下一主题

Linux下samba源码安装(非RPM包) [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2009-04-27 20:08 |只看该作者 |倒序浏览

            先学习一些基础。
            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,边写教程。
            从
[color="#000000"]www.samba.org
下载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
            好了现在看看我们的目标。
            一、有一个共享目录,只可以读,不可以做任何改变。
            二、有一个共享目录,任何人都可以做任何改变,包括添加目录文件,删除目录文件。
            三、每个用户可以看到自己的主目录,其它用户不可以看到,当然不可以作改动。
            四、有一个共享目录,组A中的人可以做任何改动,组B中的人只可以读,组C中的人看不到。
            五、每个用户登录后都可以使用打印机。(没有成功)。
            目标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 ;linux ; chmod -R 777 /home/write/ ;sh ; 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 ...... }}
            
            
            
            
            
            
            
            
            
            
            
            
            
            
            
            
            
            
            
            
            
        
   
               
               
               

本文来自ChinaUnix博客,如果查看原文请点:http://blog.chinaunix.net/u3/94683/showart_1912395.html
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP