搞这个东西累死个人,虽然我是EO,但是EO也是人啊!O上帝,原谅我用老一个“搞”字,阿门! 这些东西当你看不懂跟我没关系,当我看不懂就跟我有非同寻常的关系


需要的软件:

system-config-samba-1.2.39-1.el5    (提供了Red Hat公司专门为Samba服务器管理编写的图形界面的管理程序,该程序是Red Hat系统管理工具中的一部分)

samba-common-3.0.28-0.el5.8   (他提供主配置文件smb.conf的语法测试程序testparm等)

samba-3.0.28-0.el5.8          (Samba的主程序)

samba-client-3.0.28-0.el5.8   (提供客户端的工具)

配置文件是:

/etc/samba/ smb.conf

[global] 

全局配置

(74行) workgroup = WORKGROUP    

这是设置工作组,跟XP一样就OK

       server string = Samba Server Version %v   

工作组的说明而已, 注释

     ;username map=/etc/samba/smbusers    

指名系统帐号跟虚拟帐号的对应关系文件夹位置(默认没有这个文件的)

日志选项

(88行) # logs split per machine

         log file = /var/log/samba/%m.log   

日志存放地方

       # max 50KB per log file, then rotate

         max log size = 50                  

设置日志文件最大尺寸,单位KB

[ 使用Samba服务器的每个客户机的日志分别保存在与客户主机同名的“%m.log”文件中,“%m”变量表示客户端主机的名称 ]

nmbd.log和 smbd.log,它们分别记录nmbd和smbd进程的运行日志。

nmbd.log是用来管理群组还NETBOIS解析的 smbd.log是用来管理samba服务器共享目录,文件与打印等信息

当客户端通过网络访问samba服务器后,会自动添加客户端机器的相关日志

安全选项

(101行)  security = user

       ;passdb backend = tdbsam

         smb passwd file =/etc/samba/smbpasswd 

Samba用户和密码文件(这行要自己加)

[ security值有4个含义

share

user

server,

就是说需要转交给其他服务器来验证

domain]

共享目录 Share Definitions

(248行开始)

[homes]

        comment = Home Directories

        browseable = no

        writable = yes

      ; valid users = %S

      ; valid users = MYDOMAIN\%S

[printers]

        comment = All Printers

        path = /var/spool/samba

        browseable = no   

设置为no表示所有Samba用户的宿主目录不能被看到,只有登录用户才能看到自己的宿主目录共享;这样加强了Samba服务器的安全性

        guest ok = no

        writable = no

        printable = yes

上面这些都注释掉,在下面添加

[eo]                                   

这个是共享文件夹名字(可以随便取)

        comment = sharefile directory  

共享文件夹的说明,注释而已

        path = /hdtv                   

实际上共享的是这个目录,使用绝对路径

        public=yes/no                  

设置是否匿名访问

        read only=yes/on               

是否只读(不能读取不代表不能写入,要看写入权限开没有)

        writeable = yes/on             

是否写入(只要设置能写入,读取权限可以不设置)

        valid users =                   指定能够进入此资源的特定用户

#valid users=用户名/

@组名    (如果加@符号就代表组名,只有加入这个组的成员才能访问资源,加入组命令在下面有讲解 )  

不限制帐户的访问(匿名访问)  共享目录:/hdtv

1:设置工作组        workgroup = WORKGROUP

2:设置安全          security = share

3:设置共享目录     [eo]

                      comment = sharefile directory

                      path = /hdtv

                      public=yes

                      writeable =yes (写入打开的时候代表能写能读,所以读取权限可以不设置)


需要输入用户名和密码的访问    共享目录:/hdtv

1:设置工作组        workgroup = WORKGROUP

2:设置安全          security = user

3:设置共享目录     [eo]

                      comment = sharefile directory

                      path = /hdtv

                      writeable =yes

                   valid users = @dvd

,112  (表示属于DVD组的人可以访问这个目录,112用户也能访问)

现在设置登录系统时的用户名和密码文件

sanba用户名和密码存放在

/etc/samba/smbpasswd 中,默认是没有这个文件的,因为samba启用了tdbsam验证,要注释掉 passdb backend = tdbsam 一行,加上 smb passwd file = /etc/samba/smbpasswd ,然后保存退出

samba帐号并不能直接建立,需要先建立Linux同名的系统帐号。比如我们要建立一个名为123的samba帐号,那Linux系统中必须提前存在一个同名的123

系统帐号

samba中添加帐号命令为: smbpasswd 命令格式:   smbpasswd -a 用户名-a:在smbpasswd文件里新增一个用户-d:让在smbpasswd文件里的某个帐号暂时无法登录samba,多了-d参数时,在smbpasswd里面的某个字段会多出一个D的参数,代表该帐号目前无法使用-e:与-d相反,恢复某个帐号的使用 [如果我们在添加samba帐号时输入完两次密码出错: Failed to modify password entry for user 123 , 是因为Linux系统里没有123这个用户]把用户加入一个用户组命令为:usermod命令格式:usermod  -g  组名  用户名 (意思是把这个组授予这个用户,让这个用户加入这个组)查看一个用户的有效用户组命令为:groups service smb reload 重新加载一次,这个命令可以不重启SMB服务


用户账号映射

功能

用户帐号映射这个功能需要建立一个帐号映射关系表,里面记录了samba帐号和虚拟帐号的对应关系,客户端访问samba服务器时就使用虚拟帐号来登录就OK老,

在global下添加一行字段

username map=/etc/samba/smbusers

开启用户帐号映射功能,帐号对应文件是在 /etc/samba/smbusers 里

添加 dvd=eo 

意思就是登录时输入eo+dvd用户的密码


客户端访问限制samba有许多防火墙机制,就是 hosts allow 和 hosts deny 两个参数,一般只要

hosts allow

即可,没有被写入这个项目的来源就会被拒绝。

[eo]     comment = sharefile directory     path = /hdtv     writeable = yes     valid users = @dvd    

hosts allow = 192.  202.156.8.52

(表示192网段和202.156.8.52主机可以访问,其他都拒绝,中间用空格隔开)

    

hosts allow = 192.168.0. EXCEPT 192.168.0.100 192.168.0.78(表示,192.168.0网段的可以访问,但是0.100和0.78两台主机除外)

hosts allow和hosts deny设置在不同的位置上,它们的作用范围是不一样滴。如果设置在[global]里面,表示对samba服务器全局生效,如果设置在目录下面,则表只对这个目录生效

Samba的隐藏设置

[eo]     comment = sharefile directory     path = /hdtv     writeable = yes     valid users = @dvd    

browseable = no   (表示隐藏EO目录)

在访问的时候就是 \\ip\目录名


一些参数说明

[EO]

comment = share direct

path = /home/eo

allow hosts = host(subnet)

deny hosts = host(subnet)

writable = yes|no

valid users = user(@group)

invalid users = user(@group)

read list = user(@group)

write list = user(@group)

admin list = user(@group)

public = yes|no

hide dot files = yes|no

create mode = 0755

directory mode = 0755

sync always = yes|no

short preserve case = yes|no

preserve case = yes|no

case sensitive = yes|no

mangle case = yes|no

default case = upper|lower

force user = 王老师

wide links = yes|no

max connections = 100

delete readonly = yes|no

valid users        

指定能够进入此资源的特定用户和组

invalid users       指定不能够使用该共享资源的用户和组

read list           指定只能读取该共享资源的用户和组。

write list          指定能读取和写该共享资源的用户和组。

admin list          指定能管理该共享资源(包括读写和权限赋予等)的用户和组。

public              指明该共享资源是否能给游客帐号访问,这个开关有时候也叫guest ok,所以有的配置文件中出现guest ok = yes其实和public = yes是一样的。

hide dot files      指明是不是像unix那样隐藏以“.”号开头的文件。

create mode         指明新建立的文件的属性,一般是0755。

directory mode      指明新建立的目录的属性,一般是0755。

sync always         指明对该共享资源进行写操作后是否进行同步操作。

short preserve case 指明不管文件名大小写。

preserve case       指明保持大小写。

case sensitive      指明是否对大小写敏感,一般选no,不然可能引起错误。

mangle case         指明混合大小写。

default case        指明缺省的文件名是全部大写还是小写。

force user          强制把建立文件的属主是谁。如果我有一个目录,让来宾用户可以写,那么来宾用户就可以删除,如果我用 force user=王老师 强制建立文件的属主是 王老师 ,同时限制create mask=0755,这样来宾用户就不能删除了

wide links          指明是否允许共享外符号连接,比如共享资源里面有个连接指向非共享资源里面的文件或者目录,如果设置wide links = no将使该连接不可用。

max connections = n 设定同时连接数是n。

delete readonly     指明能否删除共享资源里面已经被定义为只读的文件

对目录权限说明:这个很重要

要让用户能进入目录,必须要打开执行权限( X ),

如果打开了写权限( W ),那么用户同时就有了删除权限,

为了防止其他用户的乱删行为,必须给共享文件夹加上防删除权限,就是(t)

命令格式是 chmod 1755 /文件夹名,就是在755前面多加一个数字1,如下:

drwxrwxrwt

create mode = 0755 当设置了这个参数后,用户建立的文件权限始终是744,具体问题暂时没搞懂,但是文件夹权限没有问题

添加用户帐户需要考虑问题:

系统要有对应的帐号(虚拟除外),SAMBA帐号密码可以不和系统帐号的密码一致,,先添加SANBA帐号,还要在配置文件中把共享目录下面有效用户那里写进去,还要考虑这个新添加的帐号在那个用户组和目录权限问题

配置完后需要使用:

testparm 命令来检查语法错误,最好养成习惯,每次配置完都检查一次,在从起服务,reload和restart一个是从新加载服务,一个是从启服务,加载的话可能有莫名其妙问题,本人遇到过,我只使用从启命令

samba服务启动查看:

使用命令查看:

netstat -anp|less 是否启用了137.138.139这些端口,这些是默认启用的端口,在设置中可以指定开启那个端口


Linux访问Windows共享文件的方法:

1:直接浏览,

打开浏览器,直接输入:smb://目标IP/ 就会出来共享的目录。

2:映射网络驱动器,

(RH5系统X上)左上角的位置-连接到服务器-服务器类型选择(Windows 共享)-服务器填上Windows的IP地址-连接后,在次进入左上角的位置里面就出现了映射出来的服务器IP地址,跟XP的

映射网络驱动器类似,下次访问直接点这里就打开了共享目录,同时在桌面上进入计算机也可以查看共享目录。

3:命令行挂载,

XP的共享盘符为NTFS ,在设置XP的共享目录名时,最好设置简单一些,最好不带中文,比如XP共享文件夹名为 123 ,把他挂载到本机的/eo文件夹来

直接在命令行输入:

mount //XP的IP/123 /eo 提示输入密码时,直接回车就OK老,网上说的命令中要加入语言编码,文件格式参数,本人因为RP好的缘故,什么都不需要就直接OK老

转载于:https://blog.51cto.com/68629315/150500