`
字符串
  • 浏览: 37801 次
文章分类
社区版块
存档分类
最新评论

Linux下源码安装samba

 
阅读更多

http://27068627.blog.hexun.com/100804521_d.htm

 

先学习一些基础。
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,边写教程。
从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 < 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 ...... }}

分享到:
评论

相关推荐

    linux下通过源代码安装samba服务器

    linux下通过源代码安装samba服务器

    samba的源代码安装

    本文将深入讲解如何在Linux环境中从源代码安装Samba,包括获取源代码、编译安装、配置以及测试等步骤。 #### 二、获取Samba源代码 获取Samba的源代码有两种常见方法: 1. **通过SVN获取**:执行`svn co svn://svn...

    Linux下网上邻居samba的移植

    ### Linux下网上邻居Samba的移植 #### 一、引言 Samba是一个在Linux系统上实现SMB(Server Message Block)协议的软件包,它可以让Linux系统与运行Windows系统的计算机进行文件共享和打印服务。Samba服务器可以作为...

    Linux下的文件共享服务器Samba安装文件及其配置说明 samba-4.14.5.tar

    在Linux环境中,Samba是一个非常重要的工具,它允许Linux系统与Windows系统之间进行文件和打印服务的共享。本文将详细讲解如何在CentOS系统上安装Samba 4.14.5并进行配置。 首先,我们需要了解Samba的核心概念。...

    在aix上安装samba

    执行以下命令来编译源代码并安装Samba: ``` make sudo make install ``` 6. **配置Samba配置文件** Samba的主要配置文件是`smb.conf`。你需要编辑这个文件,定义共享目录、用户访问权限等。例如,添加一个...

    Linux与Windows 共享文件Samba

    Samba是一个开放源码的软件项目,它实现了Server Message Block (SMB)协议,使得Linux服务器可以作为Windows网络中的文件服务器。Samba不仅可以提供文件共享服务,还能提供打印服务,兼容Windows网络身份验证,使...

    samba-3.6.1源码包和安装教程

    总之,Samba 3.6.1源码包的安装和配置是一个涉及多个步骤的过程,需要对Linux系统和SMB协议有一定的了解。通过以上步骤,你可以成功地在Linux系统上搭建起一个能与Windows网络协同工作的Samba服务器。

    ARM板中的samba服务器的移植

    4. **Samba源码**: 获取最新版本的Samba源代码,通常从其官方网站下载。 **三、Samba移植步骤** 1. **安装交叉编译工具链**: 在宿主机上安装针对ARM架构的交叉编译工具,如arm-linux-gnueabihf-gcc。 2. **配置环境...

    Linux Samba

    安装和配置Samba涉及到对Linux系统的理解以及对网络和安全策略的熟悉。熟练掌握Samba的配置能够帮助你构建一个高效、安全的跨平台网络环境。为了更好地使用Samba,建议阅读官方文档和社区资源,了解最新的功能和最佳...

    samba的编译安装20160615_1154.7z

    samba4.1.6源代码部署及配置 (2014-04-04 09:41:00)转载 2016/6/14 15:23 由于ubuntu14.04.4麒麟版本使用: sudo apt-get install samba安装的samba是:V4.3.9 共享文件时ubuntu上的samba V4.3.9会出错(崩溃)。 ...

    samba版本4.4.9和4.10.16的rpm以及4.4.9编译版本

    描述中提到的"4.4.9编译版本"指的是Samba源代码编译后的可执行文件,这通常是针对特定Linux发行版进行编译的。与RPM(Red Hat Package Manager)格式的软件包相比,编译版本可以更好地适应系统的特定配置,但安装和...

    linux samba源代码,可自行交叉编译

    Linux Samba源代码是用于在Linux系统中实现SMB(Server Message Block)协议的重要软件,它使得Linux系统能够与Windows网络无缝集成,提供文件共享、打印服务等功能。SMB是一种广泛应用于局域网中的文件共享协议,...

    Linux下的Samba服务.pdf

    《Linux下的Samba服务》是一篇详细介绍Linux操作系统中Samba服务的文章,主要针对Samba的功能、原理以及在Linux系统中的应用进行深入解析。Samba是一个开源软件包,它允许Linux系统与Windows操作系统之间实现文件...

    samba-latest.tar.gz_Linux 文件共享_samba

    在标题“samba-latest.tar.gz_Linux 文件共享_samba”中,"samba-latest.tar.gz"是Samba最新版本的压缩包文件,通常包含了Samba服务器的所有源代码。"Linux 文件共享"则表明了Samba的主要功能是在Linux系统中实现...

    一步一学Linux与Windows 共享文件Samba

    Samba是一个开放源代码的软件,它实现了Microsoft的SMB(Server Message Block)协议,使得Linux系统能够与Windows系统无缝共享文件和打印服务。Samba不仅支持Windows与Linux之间的文件共享,同时也支持Linux系统间...

    samba1-3.4.4.tar.gz

    在提供的文件名“samba-3.4.4”中,我们可以推测这是Samba源代码包,包含了编译和安装Samba所需的所有文件,包括头文件、库文件、可执行文件、文档、示例配置等。为了在系统上安装和使用Samba,我们需要解压这个文件...

    samba-4.0.6.tar.gz

    "samba-4.0.6.tar.gz"是一个包含Samba 4.0.6版本源代码的压缩包,适用于那些希望在自己的Linux系统上安装和配置Samba服务的用户。 首先,我们需要了解Samba的基本概念。Samba是基于SMB(Server Message Block)协议...

    Linux下Samba做文件服务器的问题解答

    当在Windows 2000客户端上使用中文文件名,然后在Linux命令行下显示为乱码时,问题在于命令行环境不支持Unicode编码。解决方案是在Samba配置文件`[global]`小节中添加`unix charset = GB2312`。不过,更推荐使用GBK...

    Samba软件包安装配置(精).ppt

    然后,下载Samba的源码文件,解压缩后,编译并安装Samba。 二、配置Samba服务器 配置Samba服务器需要编辑smb.conf文件,该文件位于/etc/samba/目录下。可以使用vi编辑器来编辑该文件,添加以下内容: [myshare] ...

    Redhat Enterprise Linux 5 实战samba

    如果未安装服务器端,可以从安装盘的第二张光盘的Server目录下找到并使用`rpm -ivh`命令进行安装。安装完成后,启动Samba服务,这通常可以通过`ntsysv`图形工具或者使用`systemctl start smb`命令来实现。 在配置...

Global site tag (gtag.js) - Google Analytics