您的位置:首页 > 运维架构 > Linux

Linux操作系统下共享文件夹设置方法介绍

2016-07-09 20:32 591 查看
文章转载自:http://apps.hi.baidu.com/share/detail/34012598

首先当然是要安装samba了,呵呵:

sudo apt-get install samba

sudo apt-get install smbfs

下面我们来共享群组可读写文件夹,假设你要共享的文件夹为: /home/ray/share

首先创建这个文件夹

mkdir /home/ray/share

chmod 777 /home/ray/share

备份并编辑smb.conf允许网络用户访问

sudo cp /etc/samba/smb.conf /etc/samba/smb.conf_backup

sudo gedit /etc/samba/smb.conf

搜寻这一行文字

; security = user

用下面这几行取代

security = user

username map = /etc/samba/smbusers

将下列几行新增到文件的最后面,假设允许访问的用户为:newsfan。而文件夹的共享名为 Share

[Share]

comment = Shared Folder with username and password

path = /home/ray/share

public = yes

writable = yes

valid users = newsfan

create mask = 0700

directory mask = 0700

force user = nobody

force group = nogroup

available = yes

browseable = yes

然后顺便把这里改一下,找到[global]把 workgroup = MSHOME 改成

workgroup = WORKGROUP

display charset = UTF-8

unix charset = UTF-8

dos charset = cp936

后面的三行是为了防止出现中文目录乱码的情况。其中根据你的local,UTF-8 有可能需要改成 cp936。自己看着办吧。

现在要添加newsfan这个网络访问帐户。如果系统中当前没有这个帐户,那么

sudo useradd newsfan

要注意,上面只是增加了newsfan这个用户,却没有给用户赋予本机登录密码。所以这个用户将只能从远程访问,不能从本机登录。而且samba的登录密码可以和本机登录密码不一样。

现在要新增网络使用者的帐号:

sudo smbpasswd -a newsfan

sudo gedit /etc/samba/smbusers

在新建立的文件内加入下面这一行并保存

newsfan = “network username”

如果将来需要更改newsfan的网络访问密码,也用这个命令更改

sudo smbpasswd -a newsfan

删除网络使用者的帐号的命令把上面的 -a 改成 -x

sudo testparm

sudo /etc/init.d/samba restart

如果还是不行查看Iptables(防火墙是否开启),如果开启可以先将服务停止。

最后退出重新登录或者重新启动一下机器。

利用Samba配置文件共享服务

配置文件 /etc/samba/

//设置samba密码文件

cat /etc/passwd|mksmbpasswd.sh > /etc/samba/smbpasswd

//为安全起见,设置文件和目录的权限

chown root.root /etc/samba/smbpasswd

chmod 500 /etc/samba

chmod 600 /etc/samba/smbpasswd

//为用户设置口令

smbpasswd root

//检查配置文件的正确性

testparm

//检查服务器所共享的资源

smbclient –L localhost

//列出资源使用情况

smbstatus [-b]

//配置文件

节:

l [Global] 定义全局参数和缺省值

l [Homes] 定义用户的Home目录共享

l [Printers] 定义打印机共享

l [Userdefined_ShareName] 用户自定义共享(可有多个)

变量:

l %S 当前服务名

l %P 当前服务的根路径

l %u 当前服务的用户名

l %g 给定%u的所在工作组名

l %H 给定%u的宿主目录

l %v Samba版本号

l %h 运行服务的主机名

l %m 客户机的NETBIOS名

l %L 服务器的NetBIOS名

l %L 当前的日期和时间

//使用符号链接组织本地共享资源

vi /etc/samba/smb.conf

[Resource]

comment = Local Resource

path = /var/samba/resource

public = yes


writeable = yes

// -p parent(no error if existing, make parent directories as needed)

mkdir –p /var/samba/resource

cd /var/samba/resource

//-s, –symbolic

ln –s /usr/share/doc doc

//为所有用户配置只读共享和读写共享

vi /etc/samba/smb.conf

[tmp]

comment = Temporary file space

path = /tem

read only = no

public = yes


[cdrom]

comment = CDROM

path = /mnt/cdrom

read only = yes


public = yes

//为指定用户或组配置共享

useradd samba

passwd samba

mkdir /var/samba/samba

//更改目录属主

chown samba.samba /var/samba/samba

vi smb.conf

[sambadir]

comment = Samba's service

path = /var/samba/samba

valid users = samba

public = no


writable = yes

//保存修改

//Linux环境下访问Samba共享

cat /etc/samba/lmhosts

smbclient –L IP –U 用户名

smbmount //win/tools /mnt/smb/win

linux smb.conf详解

17行workgroup

语法 workgtoup = <工作组群>;

预设 workgroup = MYGROUP

说明 设定 Samba Server 的工作组

例 workgroup = workgroup 和WIN2000S设为一个组,可在网上邻居可中看到共享

21行server string

语法 server string = <说明>;

预设 sarver string = Samba Server

说明 设定 Samba Server 的注释

其他 支持变量 t%-访问时间 I%-客户端IP m%-客户端主机名 M%-客户端域名 S%-客户端用户名

例 server string = this is a Samba Server 设定出现在Windows网上邻居的 Samba Server 注释为 this is a Samba Server

28行hosts allow

语法 hosts aoolw =

============================== Share Definitions =============================

[homes]

comment = Home Directories

browseable = no

writable = yes

valid users = %S

使用者本身的”家”目录,当使用者以samba使用者身份登入samba server 后,

samba server 底下会看到自己的家目录,目录名称是使用者自己的帐号

[分享的资源名称]

<指令1>; = (参数)

<指令2>; = (参数)

……………………..

要提供分享资源时,须先把欲分享的资源以 [ ] 符号括住,底下通常会带指令和参数来表示此资源的设定和存取权限等,详情如下

comment———注释说明

path————分享资源的完整路径名称,除了路径要正确外,目录的权限也要设对

browseable——是yes/否no在浏览资源中显示共享目录,若为否则必须指定共享路径才能存取

printable——-是yes/否no允许打印

hide dot ftles–是yes/否no隐藏隐藏文件

public———-是yes/否no公开共享,若为否则进行身份验证(只有当security = share 时此项才起作用)

guest ok——–是yes/否no公开共享,若为否则进行身份验证(只有当security = share 时此项才起作用)

read only——-是yes/否no以只读方式共享当与writable发生冲突时也writable为准

writable——–是yes/否no不以只读方式共享当与read only发生冲突时,无视read only

vaild users—–设定只有此名单内的用户才能访问共享资源(拒绝优先)(用户名/@组名)

invalid users—设定只有此名单内的用户不能访问共享资源(拒绝优先)(用户名/@组名)

read list——-设定此名单内的成员为只读(用户名/@组名)

write list——若设定为只读时,则只有此设定的名单内的成员才可作写入动作(用户名/@组名)

create mask—–建立文件时所给的权限

directory mask–建立目录时所给的权限

force group—–指定存取资源时须以此设定的群组使用者进入才能存取(用户名/@组名)

force user——指定存取资源时须以此设定的使用者进入才能存取(用户名/@组名)

allow hosts—–设定只有此网段/IP的用户才能访问共享资源

allwo hosts = 网段 except IP

deny hosts——设定只有此网段/IP的用户不能访问共享资源

allow hosts=本网段指定IP指定IP

deny hosts=指定IP本网段指定IP

Samba的主配置文件。但所包含的内容并不是很全,详见man smb.conf

所有以;或#开头的行为注释行,将被忽略掉。在这个例子中我们使用;表示可以由你来修改或设置的部分,而#则表示真正意义上的注释。

注意:不论你何时何地修改了这个文件,你都应运行一下命令“testparm“来测试你是否犯了一些基本语法的错误。

1、全局设置

[global]

workgroup = NT-Domain-Name or Workgroup-Name

workgroup = MYGROUP

下面的这句话是后加的,加入的意义为:使WIN用户可以看到主机的名字,但我将此行注释掉后,没看到什么影响。

netbios name = express

下面设置的是服务器的字符串,相当于NT中的计算机说明部分

server string = Samba Server

下面的选项对于安全性很重要。他允许你对是否可以进行本地网络连接的机器进行了限制。

hosts allow = 192.168.1.50 192.168.1.43 192.168.1.44 192.168.1.45 192.168.1.46 192.168.1.47 192.168.1.48 192.168.1.49

如果想要自动共享打印机而不是个别地进行单独设置,使用下面的选项:

printcap name = /etc/printcap

load printers = yes

除非你是非标准的,否则下面的选项对于你说清楚打印系统的类型并不是很必要。当前支持的打印系统主要有以下几类:

bsd, sysv, plp, lprng, aix, hpux, qnx, cups

printing = cups

如果想要一个guest账号的话就不用注释下面的行。你必须把这个加入到/etc/passwd中,否则用户“nobody“会被使用。

; guest account = pcguest

下面的选项告诉samba对不同的机器连接使用不同的日志文件。小心如果你允许访问的机器太多的话,文件可能极多哟!!!:)

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

设置log文件的大小(KB)(# Put a capping on the size of the log files (in Kb).)

max log size = 0

安全格式。大多数用户使用用户级安全。详见security_level.txt。

security = share

使用密码服务选项,仅用于security = server模式

参数列表可以包括:

password server = My_PDC_Name [My_BDC_Name] [My_Next_BDC_Name]

或自动查找域控制器

password server = *

; password server =

对于所有的上面和下面的组成部分的_n_characters密码所允许的匹配级别

; password level = 8

; username level = 8

你可能想使用密码编码。见在samba文档中的ENCRYPTION.txt, Win95.txt和WinNT.txt。

除非你已经仔细的读过了那些文档,否则不要激活下面的选项:

encrypt passwords = yes

smb passwd file = /etc/samba/smbpasswd

当samba被建成为支持SSL的模式时,下面需要从大量的假的错误中保持smbclient。(原文如下:

The following is needed to keep smbclient from spouting spurious errors

when Samba is built with support for SSL.

; ssl CA certFile = /usr/share/ssl/certs/ca-bundle.crt

下面的选项需要允许从windows对linux系统的密码进行修改。

注意:上面带有’encrypt passwords’ 和’smb passwd file’选项使用这些。

另: 如果仅是允许工作站改变加密的SMB密码那么你不需要这些。它们允许Unix密码与SMB密码保持同步。

unix password sync = Yes

passwd program = /usr/bin/passwd %u

passwd chat = New*password %n\n Retype*new*password %n\n passwd:*all*authentication*tokens*updated*successfully

你可以使用PAM的密码改变控制标记。如果激活的活,当一个SMB客户端请求代替了在密码程序列表时,PAM将用于密码改变。对于大多数的设置,不改变密码字符参数而激活这个也是可能的。

pam password change = yes

Unix用户可能映射不同的SMB用户名。

username map = /etc/samba/smbusers

在每一台机器的基础上,使用下面的行可以使你定制你的配置。%m以连接机器的netbios名代替。

; include = /etc/samba/smb.conf.%m

这个参数控制samba是否服从于PAM账号和对话管理指示。默认情况下是使用PAM仅清除文本证明且忽略任何的账号或对话管理。注意:当加密密码=yes时,samba总是忽略PAM的证明。

obey pam restrictions = yes

很多人都会发现这个选项优化了性能。详见speed.txt和帮助手册页。

socket options = TCP_NODELAY SO_RCVBUF=8192 SO_SNDBUF=8192

配置samba使用多重接口。

如果你有多个网络接口的话,必须把他们在下面列出来。详见man。

; interfaces = 192.168.12.2/24 192.168.13.2/24

配置请求播出同步到远程浏览器,或从一个主机同步浏览器列表或从/到整个子网(如下)。

; remote browse sync = 192.168.3.25 192.168.5.255

使主机将自己广播到本地的子网。

; remote announce = 192.168.1.255 192.168.2.44

浏览器控件选项:

如果你不想让你的samba在你的网络中变成一个主浏览器,那么设置local master为no,否则将采用正常的规则。

; local master = no

os level决定在主浏览器的中被提取的优先级。默认值是很合理的。

; os level = 33

域master指定samba是域主浏览器。这允许samba在子网之间比较浏览列表。如果你已经有了一个Win NT的主域控制器的话,就不要设置这个选项。

; domain master = yes

首选master使samba在启动时拒绝一个本地浏览器的选出,且给他一些小的较高的机会让其来选出。

; preferred master = yes

如果你要samba成为Win95工作站的域登录服务器的话则激活它。

; domain logons = yes

如果你激活了domain logons,那么你可以让每一台机器或每一个用户登录角本运行一个指定的登录批处理文件。原文如下:if you enable domain logons then you may want a per-machine or per user logon script run a specific logon batch file per workstation (machine)

; logon script = %m.bat

每一个用户名都运行一个指定的登录批处理文件

; logon script = %U.bat

存储动态的profile(仅针对95与NT)

%L 代表netbios name, %U 是一个用户名

不能注释掉下面的[Profiles]共享。

; logon path = \%L\Profiles\%U

支持WINS部分:告诉samba组件的NMBD去激活WINS服务。

; wins support = yes

WINS服务器-告诉samba组件的NMBD成为一个WINS客户端。

注意:samba即可以是一个WINS服务器,也可以是一个客户端,或都不是。

; wins server = w.x.y.z

WINS 代理-原文如下,没法翻译(Tells Samba to answer name resolution queries on behalf of a non WINS capable client,),执行这件事必须要求在网络中至少有一个Wins服务器。默认情况下是NO。

; wins proxy = yes

DNS Proxy – 告诉samba是否经过DNS的nslookup试着去解析NETBIOS名。1.9.17的内置默认值是yes,目前已经改为1.9.18的no。

dns proxy = no

实例保存可以很简洁-系统默认值是no

注意:可以在每一个共享基础上设置

; preserve case = no

; short preserve case = no

默认实例是对于所有的DOS文件都大写

; default case = lower

对于此选项要很小心-它可能带来一些想不到的事情。

; case sensitive = no

[homes]

comment = Home Directories

browseable = no

writable = yes

valid users = %S

create mode = 0664

directory mode = 0775

如果不想要samba不承认已经映射为guest的用户,可用如下设置

; map to guest = bad user

如果想创建netlogon目录给域登录,不要注释下面的内容。

; [netlogon]

; comment = Network Logon Service

; path = /usr/local/samba/lib/netlogon

; guest ok = yes

; writable = no

; share modes = no

想提供一个指定的不固定的共享profile那么就不要注释下面的内容,默认使用用户主目录。

;[Profiles]

; path = /usr/local/samba/profiles

; browseable = no

; guest ok = yes

注意:如果你有一个BSD风格的打印系统,则没有必须单独的特别指定每一个打印机。

[printers]

comment = All Printers

path = /var/spool/samba

browseable = no

设置public=yes表示允许’guest account’打印

guest ok = no

writable = no

printable = yes

下面的内容对人们共享文件是有用的。

;[tmp]

; comment = Temporary file space

; path = /tmp

; read only = no

; public = yes

公用的可访问的目录,除了在staff组中的成员外,对其它人为只读

;[public]

; comment = Public Stuff

; path = /home/nw

; public = yes

; writable = yes

; printable = no

; write list = @staff

私有打印机,仅仅fred本人可用。打印池中的数据将被放到fred的主目录中。注意:fred用户无论在什么地方都必须对打印池有写访问的权限。

;[yingou]

; comment = qlj’s Printer

; valid users = yingouqlj

; path = /home/yingouqlj

; public = no

; writable = no

; printable = yes

私有目录,仅能对fred开放。注意fred对这个目录需要写访问的权限。

;[fredsdir]

; comment = qlj’s Service

; path = /usr/somewhere/private

; valid users = yingouqlj

; public = no

; writable = yes

; printable = no

允许你制作配置文件去引入的连接到这里的每一台机器都有不同的目录的服务。

使用%U选去配置用户名,%m代替连接到的机器名。

;[yingouqlj]

; comment = PC Directories

; path = /usr/local/pc/%m

; public = no

; writable = yes

公共可访问的目录,对所有的用户都可读/写。注意:在这个目录中的所有由用户创建的文件都会被标识成默认用户所有。所以有访问仅限的用户可以删除别的用户的文件。很明显这个目录必须是可以被默认用户写的。另一个用户当然可以指定,这样所有的文件都将被那个用户所替代。

[public]

path = /tmp/aaaa

public = yes

guest ok = yes

writable = yes

printable = no

下面的两个例子是怎样共享一个目录给两个用户,在这个共享目录中他们可以放置文件且分别属于各自所有。在这个设置中,目录将可以被两个用户同时使用且在其上有粘滞位保护。很明显,可以扩展为多个用户的情况。

;[myshare]

; comment = Mary’s and Fred’s stuff

; path = /usr/somewhere/shared

; valid users = mary fred

; public = no

; writable = yes

; printable = no

; create mask = 0765

以下是个人实际的设置

[sharedir]

path = /home/nw

public = yes

guest ok = yes

writable = yes
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  linux samba 操作系统