当前位置:   article > 正文

samba源码分析及配置详解_linux smb 代码分析

linux smb 代码分析

p { margin-bottom: 0.21cm; }td p { margin-bottom: 0cm; }

在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 ...... }}


声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/很楠不爱3/article/detail/184121?site
推荐阅读
相关标签
  

闽ICP备14008679号