首页IT科技linux samba服务器的配置(Linux中Samba服务器的编译安装以及配置的宏的写法)

linux samba服务器的配置(Linux中Samba服务器的编译安装以及配置的宏的写法)

时间2025-05-28 20:39:02分类IT科技浏览3429
导读:编译安装查询系统是否安装samba...

编译安装

查询系统是否安装samba

# rpm -aq | grep samba

yast2-samba-client-2.13.36-0.8

samba-client-3.0.24-2.23

yast2-samba-server-2.13.22-0.8

samba-3.0.24-2.23

卸载原有的samba

代码如下:
# rpm -e samba-3.0.24-2.23

获取samba源代码

http://samba.org/samba/ftp/

获取samba源文件包(samba-3.0.24.tar.gz 做实验            ,路径/home/)

解包源文件包
代码如下:
# tar -jxf samba-3.0.24.tar.gz

编译安装

代码如下:
# cd /home/samba-3.0.24/source/

新版本的source目录有两个:source3目录里是samba-3.x的源文件                  ,source4目录里是samba-4.x的源文件

代码如下:

# ./autogen.sh

# ./configure

samba默认安装在/usr/local/samba目录

可以通过指定prefix=your location的方式来指定安装目录:
代码如下:
# ./configure --prefix=/install/samba

期间      ,configure提示找不到cups头文件      ,于是又先安装了cups            。

代码如下:

# make

# make install

配置动态链接库路径

代码如下:
# vi /etc/ld.so.conf

加入一行

代码如下:

/usr/myname/install/samba/lib

<p># ldconfig

执行ldconfig命令让配置生效

到安装目录

代码如下:
# cd /usr/local/samba/

准备配置文件

代码如下:

# mkdir -v etc/

# cp -v /home/samba-3.0.24/examples/smb.conf.default ./etc/smb.conf

修改配置文件                  ,添加一个共享test

代码如下:

# vi ./etc/smb.conf

workgroup = MSHOME 改为你linux所在的工作组

security = share 开放共享

在smb.conf最后加上

代码如下:

[test]

comment = test

path = /home/

public = no

writable = yes

user = kk

检测配置文件

代码如下:

# cp -v ./etc/smb.conf ./lib/

# ./bin/testparm

添加账户kk

代码如下:
# ./bin/smbpasswd -a kk

输入密码

启动samba

代码如下:

# /sbin/service network restart

# ./sbin/smbd -D

# ./sbin/nmbd -D

检测是否启动

代码如下:

# ps aux | grep smb

# ps aux | grep nmb

win7/win8 下访问Samba服务 密码出错 问题

windows系统中            ,单击[开始]——[运行] 输入 “secpol.msc            ”打开管理工具      ,展开“本地策略                  ”;

然后                  ,单击“安全选项      ”                  。 双击“网络安全:LAN Manager 身份验证级别      ”;

最后            ,单击列表中:发送LM和NTLMv2,如果已协商                  ,则使用NTLMv2协议      。

基本的宏的编写

Samba 字符处理系统

1. samba使用多字节字符串——unix字符串(unix strings)

unix字符串没有固定的字节长度                  ,但是遵循以下原则:

a. 除非是在终端,否则不能含有NULL;

b. 兼容7位的C字符串(C strings)            ,对于C中的常量字符和字符串                  ,其每一位都要和unix字符(串)中的位完全等同;

c. 大小写转换是      ,转换后的字符(串)不能占更多的位;

d. 能够准确接收客户端传入的全部字符      。

UTF-8和大多数多字节的亚洲语言都能够很好的兼容unix                  。UCS2是例外(含NULL)            。

在smb.conf中定义unix charset      。

在与客户端发送或接收数据的时候            ,为了兼容客户端的字符编码                  ,需要使用pull_(接收) 和push_(发送)开头的函数在buffer中格式化数据                  。

lp_开头的函数      ,返回值全部是unix strings            。

2. 相关宏定义(byteorder.h)

CVAL(buf,pos)将buf中pos处的字节以无符号字符返回

PVAL(buf,pos)将buf中pos处的字节以无符号整型返回

SCVAL(buf,pos,val)将buf中pos处的字节设置为val

SVAL(buf,pos)将buf中pos处的字节以无符号小端整型(16bit      ,ushort)返回

IVAL(buf,pos)将buf中pos处的字节以无符号小端整型(32bit)返回

SVALS(buf,pos)将buf中pos处的字节以有符号小端整型(16bit)返回

IVALS(buf,pos)将buf中pos处的字节以有符号小端整型(32bit)返回

SSVAL(buf,pos,val)将buf中pos处的无符号小端整型(16bit)值设置为val

SIVAL(buf,pos,val)将buf中pos处的无符号小端整型(32bit)值设置为val

SSVALS(buf,pos,val)将buf中pos处的有符号小端整型(16bit)值设置为val

SIVALS(buf,pos,val)将buf中pos处的有符号小端整型(32bit)值设置为val

RSVAL(buf,pos)将buf中pos处的字节以无符号大端整型(16bit)返回

RIVAL(buf,pos)将buf中pos处的字节以无符号大端整型(32bit)返回

RSSVAL(buf,pos,val)将buf中pos处的无符号大端整型(16bit                  ,ushort)值设置为val

RSIVAL(buf,pos,val)将buf中pos处的无符号大端整型(32bit)值设置为val

Samba DEBUG SYSTEM

DEBUG书写规则
代码如下:

>debugfile<:=={>debugmsg<}

>debugmsg<:==>debughdr<’/n’>debugtext<

>debughdr<:==’[’TIME’,’LEVEL’]’FILE’:’[FUNCTION]’(’LINE’)’

>debugtext<:=={>debugline<}

>debugline<:==TEXT’/n’

其中            ,

TIME 时间戳      ,

LEVEL DEBUG级别                  ,

FILE DEBUG信息产生的源文件            ,

FUNCTION DEBUG信息产生的函数,

LINE DEBUG信息产生的行数                  ,不支持 __FUNCTION__ 宏的显示不出来                  ,

TEXT 不包含/n的DEBUG信息

EG:
代码如下:

[2011/03/17 08:33:46, 3] smbd/process.c:switch_message(914)

switch message SMBclose (pid 12153) conn 0x7f60e9a2d330

[2011/03/17 08:33:46, 3] smbd/reply.c:reply_close(3298)

close directory fnum=6574

DEBUG()宏

DEBUG(para1, para2);

其中,

para1 DEBUG级别            ,凡是小于等于全局变量DEBUGLEVEL的                  ,该DEBUG信息将输出到日志      ,

para2 DEBUG信息            ,即书写规则中的TEXT。在TEXT中                  ,每遇到/n      ,将产生一条新的日志(书写规则中的debugfile);没遇到/n时      ,追加TEXT                  。

EG:
代码如下:

DEBUG(0, ("The test returned "));

if(test())

{

DEBUG(0, ("True"));

}

else

{

DEBUG(0, ("False"));

}

DEBUG(0, ("./n"));

假设test() == true                  ,则会输出:

代码如下:

[2010/07/30 16:00:51, 0] file.c:function (256)

The test returned True.

DEBUGADD()宏

DEBUGADD(para1, para2);

其中            ,

para1 DEBUG级别      ,凡是小于等于全局变量DEBUGLEVEL的                  ,该DEBUG信息将输出到日志            ,

para2 DEBUG信息,即书写规则中的TEXT                  。在TEXT中                  ,每遇到/n                  ,将产生TEXT新行;没遇到/n时,追加。它与DEBUG()的区别就是            ,它从不产生书写规则中的debughdr            。

EG:

代码如下:

DEBUG(0, ("This is the first line./n"));

DEBUGADD(0, ("This is the second line./n This is the third line./n"));

输出:

代码如下:

[2010/07/30 16:00:51,0] file.c:function(512)

This is the first line.

This is the second line.

This is the third line.

DEBUGLVL()宏

BOOL DEBUGLVL(para1);

其中                  ,

para1 DEBUG级别      ,凡是小于等于全局变量DEBUGLEVEL的            ,该宏返回true                  ,

该函数主要为了解决书写规则中TEXT太长造成的不便                  。

EG:
代码如下:
DEBUG(3, ("send_local_master_announcement: type %x forname %s on subnet %s forwork group, type, global_myname, subrec->subnet_name, work->work_group));

可以替换为:

代码如下:

DEBUG(3, ("send_local_master_announcement: "));

DEBUGADD(3, ("type %x forname %s", type, global_myname));

DEBUGADD(3, ("on subnet %s", subrec->subnet_name));

DEBUGADD(3, ("for work group %s/n", work->work_group));

更可以替换为:

代码如下:

if(DEBUGLVL(3))

{

dbgtext("send_local_master_announcement: ");

dbgtext("type %x forname %s", type, global_myname);

dbgtext("on subnet %s", subrec->subnet_name);

dbgtext("for workgroup %s/n", work->work_group);

}

dbgtext()函数

用于调用相关函数输出DEBUG信息到日志文件      ,即输出书写规则中的TEXT      。

函数调用vslprintf()函数对TEXT格式化后      ,调用format debug text()函数将TEXT输出            。

一般在DEBUGLVL()宏中使用                  。

dbghdr()函数

用于输出DEBUG信息中的头信息                  ,即输出书写规则中的debughdr      。

不对输出内容进行格式化处理      。

一般在DEBUG()宏 & DEBUGADD()宏中使用                  。

format debug text()函数

用于输出DEBUG信息到日志文件            ,即输出书写规则中的TEXT            。

函数将要输出的TEXT保存到buffer中      ,直到找到一个/n                  ,增加缩进            ,调用Debug1()函数,输出TEXT到日志                  ,并清空buffer      。
声明:本站所有文章                  ,如无特殊说明或标注,均为本站原创发布                  。任何个人或组织            ,在未征得本站同意时                  ,禁止复制            、盗用                  、采集      、发布本站内容到任何网站      、书籍等各类媒体平台            。如若本站内容侵犯了原著者的合法权益      ,可联系我们进行处理。

创心域SEO版权声明:以上内容作者已申请原创保护,未经允许不得转载,侵权必究!授权事宜、对本内容有异议或投诉,敬请联系网站管理员,我们将尽快回复您,谢谢合作!

展开全文READ MORE
seo怎么排名靠前(如何通过SEO排名赚钱?揭秘SEO优化的赚钱秘籍!) ps背景橡皮擦的作用(ps中使用背景橡皮擦实现边缘过度柔和)