当前位置:   article > 正文

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

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

作者: 北南南北,正在增加中... ... 需要您的参与;
来自: LinuxSir.Org
简介: 本文只是讲一讲我们最常用的Linux与Windows共享文件,主要是为新手指一指路。如何建立最简单的Samba服务器,并讲述遇到问题应该从何处寻找解决方案;正在更新之中,希望您的参加 ... ... 谢谢;

目录




++++++++++++++++++++++++++++++++++++++++++++++++
正文
++++++++++++++++++++++++++++++++++++++++++++++++

0、架设Samba 服务器的前提;

Linux是一个多用户的操作系统,对任何服务器的架设与都用户、用户组及权限相关,这是操作的基础。Samba服务器也不例外,对这些知识的掌握 也是极为重要的。在Windows系统上虽然也能架共享文件服务器,但它的权限控制实在令人不敢恭维。如果我们用Windows系统来架网络共享文件系 统,就是点鼠标也能把我们点迷糊了。但在Linux中,我们可以轻松的改一改配置文件,不到几分钟就能建好自己的Samba服务器。哪个更容易,只有你知 道;

对于Samba服务器的架设,有的弟兄简单的认为,只要把改一下配置文件,创建好相应的目录就行了。其实并不是这样的,还要深入的工作,比如目录的权限和归属,也就是说能让哪个用户和用户组有读写权。只有把配置文件和共享目录的权限结合起来,才能架好Samba服务器;

下面是常用的基础知识,我们在本文中所涉及的内容都可以在下面的列表中找到相应的解释;


0.1 查看文件内容和编辑文件的工具;

《Linux 文件内容查看工具介绍》
《文件编辑器 vi》


0.2 关于文件和目录相关;

《Linux 文件类型 及文件的扩展名》
《Linux 文件和目录管理之列出、删除、复制、移动及改名》
《Linux 文件和目录的属性》
《简述Linux文件搜索》


03 用户和用户组相关;

《Linux 用户(user)和用户组(group)管理概述》
《用户(User)和用户组(Group)配置文件详解》
《Linux 用户管理工具介绍》
《Linux 用户(User)查询篇》


04 进程管理;

《Linux 进程管理》

1 Samba 简介

Samba(SMB是其缩写) 是一个网络服务器,用于Linux和Windows共享文件之用;Samba 即可以用于Windows和Linux之间的共享文件,也一样用于Linux和Linux之间的共享文件;不过对于Linux和Linux之间共享文件有 更好的网络文件系统NFS,NFS也是需要架设服务器的;

大家知道在Windows 网络中的每台机器即可以是文件共享的服务器,也可以同是客户机;Samba 也一样能行,比如一台Linux的机器,如果架了Samba Server 后,它能充当共享服务器,同时也能做为客户机来访问其它网络中的Windows共享文件系统,或其它Linux的Sabmba 服务器;

我们在Windows网络中,看到共享文件功能知道,我们直接就可以把共享文件夹当做本地硬盘来使用。在Linux的中,就是通过Samba的向网络中的机器提供共享文件系统,也可以把网络中其它机器的共享挂载在本地机上使用;这在一定意义上说和FTP是不一样的。

Samba 用的netbios协议,如果您用Samba 不成功,

Linux与Windows 、Linux 和 Linux

2 Samba 功能和应用范围

Samba 应该范围主要是Windows和Linux 系统共存的网络中使用;如果一个网络环境都是Linux或Unix类的系统,没有必要用Samba,应该用NFS更好一点;

那Samba 能为我们提供点什么服务呢?主要是共享文件和共享打印机;

3 Samba 两个服务器相关启动程序、客户端及服务器配置文件等;

3.1 Samba 有两个服务器,一个是smb,另一个是nmb;

smb 是Samba 的主要启动服务器,让其它机器能知道此机器共享了什么;如果不打开nmb服务器的话,只能通过IP来访问,比如在Windows的IE浏览器上打入下面的一条来访问;

//192.168.1.5/共享目录
//192.168.1.5/opt



而nmb是解析用的,解析了什么呢?就是把这台Linux机器所共享的 工作组 及在此工作组下的 netbios name 解析出来;

一般的情况下,在RPM包的系统,如果是用RPM包安装的Samba ,一般可以通过如下的方式来启动Samba服务器;

[root@localhost ~]# /etc/init.d/smb start
启动 SMB 服务:                                            [  确定  ]
启动 NMB 服务:                                            [  确定  ]



如果停止呢?就在smb后面加stop ;重启就是restart


[root@localhost ~]# /etc/init.d/smb stop
[root@localhost ~]# /etc/init.d/smb restart


对于所有系统来说,通用的办法就是直接运行smb 和nmb;当然您要知道smb和nmb所在的目录才行;如果是自己编译的Samba ,您应该知道您把Samba放在哪里了;

[root@localhost ~]# /usr/sbin/smbd
[root@localhost ~]# /usr/sbin/nmbd



查看服务器是否运行起来了,则用下面的命令;
[root@localhost ~]# pgrep smbd
[root@localhost ~]# pgrep nmbd


关掉Samba服务器,也可以用下面的办法,大多是通用的;要root权限来执行;

[root@localhost ~]# pkill smbd
[root@localhost ~]# pkill nmbd


3.2 查看Samba 服务器的端口及防火墙;

查看这个有何用呢?有时你的防火墙可能会把smbd服务器的端口封掉,所以我们应该smbd服务器所占用的端口;下面查看中,我们知道smbd所占用的端口是139和445 ;

[root@localhost ~]# netstat -tlnp |grep smb
tcp        0      0 0.0.0.0:139                 0.0.0.0:*                   LISTEN      10639/smbd
tcp        0      0 0.0.0.0:445                 0.0.0.0:*                   LISTEN      10639/smbd

如果您有防火墙,一定要把这两个端口打开。如果不知道怎么打开。可能你和我一样是新手,还是把防火墙规则清掉也行;

[root@localhost ~]# iptables -F

[root@localhost ~]# /sbin/iptables -F

3.3、查看Samba 服务器的配置文件;

如果我们是用Linux发行版自带的Samba软件包,一般情况下Samba服务器的配置文件都位于/etc/samba目录中,服务器的主配置文 件是smb.conf;也有有户配置文件 smbpasswd、smbusers和lmhosts等(最好您查看一下这些文件的内容);还有一个文件是secrets.tdb,这个文件是 Samba 服务器启动手自动生成的;我们慢慢根据教程的进度来适当地增加这些文件的说明吧;一下子都说出来,感觉内容太多;所以只能一点一点的来了;

3.4、Samba 在Linux 中的一些工具(服务器端和客户端);

smbcacls    smbcontrol  smbencrypt  smbmount    smbprint    smbstatus   smbtree
smbclient   smbcquotas  smbmnt      smbpasswd   smbspool    smbtar      smbumount
smbd nmbd    mount



其中服务器端的是smbd、nmbd、smbpasswd ;其它的大多是客户端;这些并不是都需要一定要精通的,但至少得会用几个;比如smbmount(也就是mount 加参数的用法),还用smbclient等;

3.5 在Linux 中的常用工具mount(smbmount)和smbclient;Windows查看Linux共享的方法 ;

3.5.1 在Linux系统中查看网络中Windows共享文件及Linux中的Samba共享文件;

一般的情况下,我们要用到smbclient;常用的用法也无非是下面的;

[root@localhost ~]# smbclient  -L  //ip地址或计算机名

smbclient 是Samba 的Linux 客户端,在Linux机器上用来查看服务器上的共享资源,也可以象FTP一样,用户可以登录Samba服务器,也可以上传put和下载get文件,遗憾的是对中文支持并不友好;

查看服务器上的资源;

smbclient -L //IP  [-U 用户名]

如果您的Samba服务器配置为user模式,就要加 “-U 用户名“,如果是share模式,省略也可;

比如:

[root@localhost ~]# smbclient -L   //192.168.1.3  -U sir01
Password: 请输入用户sir01的密码

如果您是用share模式,就可以不必理会用户和密码,直接用;

[root@localhost ~]# smbclient -L  //192.168.1.3
Password: 直接按回车

登录用户身份Samba服务器共享

以用户身份登录共享后,能象FTP用户一样,下传和下载文件;用put表示上传,用get表示下载;

smbclient  //IP地址/共享文件夹    -U 用户

说明:IP地址大家都知道,你不知道自己的IP地址,可以用/sbin/ifconfig 来查看; 共享文件夹是我们在smb.conf中定义的[共享文件夹],比如[sir01]。-U 用户名表示Samba 的用户;

比如:

[root@localhost ~]# smbclient //192.168.1.3/sir01 -U sir01
Password:
Domain=[LINUXSIR] OS=[Unix] Server=[Samba 3.0.21b-2]
smb: /> ls

说明: 登录到Samba服务器上,就可以用smbclient的一些指令,可以象用FTP指令一样上传和下载文件;

smbclient 命令说明

命令									说明

?或help [command] 提供关于帮助或某个命令的帮助
![shell command] 执行所用的SHELL命令,或让用户进入 SHELL提示符
cd [目录] 切换到服务器端的指定目录,如未指定,则 smbclient 返回当前本地目录
lcd [目录] 切换到客户端指定的目录;
dir 或ls 列出当前目录下的文件;
exit 或quit 退出smbclient
get file1 file2 从服务器上下载file1,并以文件名file2存在本地机上;如果不想改名,可以把file2省略
mget file1 file2 file3 filen 从服务器上下载多个文件;
md或mkdir 目录 在服务器上创建目录
rd或rmdir 目录 删除服务器上的目录
put file1 [file2] 向服务器上传一个文件file1,传到服务器上改名为file2;
mput file1 file2 filen 向服务器上传多个文件

3.5.2 在Windows中访问Linux Samba服务器共享文件的办法;

这个简单吧,在网上领居,查看工作组就能看得到,或者在浏览器上输入如下的

//ip地址或计算机名

这样就能看到这个机器上有什么共享的了,点鼠标操作完成;如果访问不了,不要忘记把Linux的防火墙规划清掉,或让相应的端口通过;

3.5.3 在Linux中smbfs文件系统的挂载;

mount 的用法,加载网络中的共享文件夹到本地机;mount就是用于挂载文件系统的,SMB做为网络文件系统的一种,也能用mount挂载;smbmount说到底也是用mount的一个变种;

mount 挂载smbfs的用法;

mount -t smbfs -o codepage=cp936,username=用户名,password=密码 , -l   //ip地址/共享文件夹名   挂载点

mount -t smbfs -o codepage=cp936,username=用户名,password=密码 , -l   //计算机名/共享文件夹名   挂载点

mount -t smbfs  -o codepage=cp936  //ip地址或计算机名/共享文件夹名   挂载点



smbmount的用法:
smbmount -o username=用户名,password=密码 , -l   //ip地址或计算机名/共享文件夹名   挂载点
smbmount  //ip地址或计算机名/共享文件夹名    挂载点



说明:

如果您的服务器是以share共享的,则无需用户名和密码就能挂载,如果出现要密码的提示,直接回车就行;您也可以用smbmount 来挂载,这样就无需用mount -t smbfs来指定文件系统的类型了;

对于挂载点,我们要自己建立一个文件夹,比如我们可以建在/opt/smbhd,这由您说的算吧;

在mount的命令中,我们发现有这样的一个参数codepage=cp936,这是服务器端文件系统的编码的指定,cp936 就是简体中文,当然您可以用utf8等,尝试一下吧。

如果您挂载了远程的smbfs文件系统出现的是简体中文乱码,就要考虑挂载时要指定编码了;

4、由最简单的一个例子说起,匿名用户可读可写的实现;

第一步: 更改smb.conf

我们来实现一个最简单的功能,让所有用户可以读写一个Samba 服务器共享的一个文件夹;我们要改动一下smb.conf ;首先您要备份一下smb.conf文件;

[root@localhost ~]# cd /etc/samba
[root@localhost samba]# mv smb.conf smb.confBAK

然后我们来重新创建一个smb.conf文件;

[root@localhost samba]#touch smb.conf


然后我们把下面这段写入smb.conf中;

[global]
workgroup = LinuxSir
netbios name = LinuxSir05
server string = Linux Samba Server TestServer
security = share

[linuxsir]
        path = /opt/linuxsir
        writeable = yes
        browseable = yes
        guest ok = yes



注解:

[global]这段是全局配置,是必段写的。其中有如下的几行;

workgroup 就是Windows中显示的工作组;在这里我设置的是LINUXSIR (用大写);
netbios name 就是在Windows中显示出来的计算机名;
server string 就是Samba服务器说明,可以自己来定义;这个不是什么重要的;
security 这是验证和登录方式,这里我们用了share ;验证方式有好多种,这是其中一种;另外一种常用的是user的验证方式;如果用share呢,就是不用设置用户和密码了;

[linuxsir] 这个在Windows中显示出来是共享的目录;
path = 可以设置要共享的目录放在哪里;
writeable 是否可写,这里我设置为可写;
browseable 是否可以浏览,可以;可以浏览意味着,我们在工作组下能看到共享文件夹。如果您不想显示出来,那就设置为 browseable=no

guest ok 匿名用户以guest身份是登录;

第二步:建立相应目录并授权;

[root@localhost ~]# mkdir -p /opt/linuxsir
[root@localhost ~]# id nobody
uid=99(nobody) gid=99(nobody) groups=99(nobody)

[root@localhost ~]# chown -R nobody:nobody /opt/linuxsir



注释: 关于授权nobody,我们先用id命令查看了nobody用户的信息,发现他的用户组也是nobody,我们要以这个为准。有些系统nobody用户组并非是nobody ;

第三步:启动smbd和nmbd服务器;

[root@localhost ~]# smbd
[root@localhost ~]# nmbd

第四步:查看smbd进程,确认Samba 服务器是否运行起来了;


[root@localhost ~]# pgrep smbd
13564
13568



第五步:访问Samba 服务器的共享;


在Linux 中您可以用下面的命令来访问;
[root@localhost ~]# smbclient -L //LinuxSir05
Password: 注:直接按回车



在Windows中,您可以用下面的办法来访问;


//LinuxSir05/


5、复杂一点的用户共享模型(适合10人左右的小型企业);

比如一个公司有五个部门,分别是linuxsir,sir01,sir02,sir03,sir04。我们想为这家公司设计一个比较安全的共享文件 模型。每个用户都有自己的网络磁盘,sir01到sir04还有共用的网络硬盘;所有用户(包括匿名用户)有一个共享资料库,此库为了安全是只读的;所有 的用户(包括匿名用户)要有一个临时文件终转的文件夹... ....


5.1 共享权限设计实现的功能;

1)linuxsir部门具有管理所有SMB空间的权限;
2)sir01到sir04拥有自己的空间,并且除了自身及linuxsir有权限以外,对其它用户具有绝对隐私性;
3)linuxsir01到linuxsir04拥有一个共同的读写权限的空间;
4) 所有用户(包括匿名用户)有一个有读权限的空间,用于资料库,所以不要求写入数据。
5)sir01到sir04还有一个共同的空间,对sir01到sir04的用户来说是隐私的,不能让其它用户来访问。
6) 还要有一个空间,让所有用户可以写入,能删除等功能,在权限上无限制 ,用于公司所有用户的临时文档终转等;


5.2 在服务器上创建相应的目录;

[root@localhost ~]# mkdir -p /opt/linuxsir
[root@localhost ~]# cd /opt/linuxsir
[root@localhost linuxsir]# mkdir sir01 sir02 sir03 sir04 sirshare sir0104rw sirallrw
[root@localhost linuxsir]# ls

sir01  sir0104rw  sir02  sir03  sir04  sirallrw  sirshare

注:功用如下:

/opt/linuxsir  这是管理员目录,负责管理其下所有目录;
/opt/linuxsir/sir01  是sir01的家目录,用于私用,除了用户本身和linuxsir以外其它用户都是不可读不可写;
/opt/linuxsir/sir02  是sir02的家目录,用于私用,除了用户本身和linuxsir以外其它用户都是不可读不可写;
/opt/linuxsir/sir03  是sir03的家目录,用于私用,除了用户本身和linuxsir以外其它用户都是不可读不可写;
/opt/linuxsir/sir04  是sir04的家目录,用于私用,除了用户本身和linuxsir以外其它用户都是不可读不可写;
/opt/linuxsir/sirshare 所用用户(除了linuxsir有权限写入外)只读目录
/opt/linuxsir/sir0104rw 是用于sir01到sir04用户可读可写共用目录,但匿名用户不能读写;
/opt/linuxsir/sirallrw 用于所有用户(包括匿名用户)的可读可写;


5.3 添加用户用户组,设置相应目录家目录的权限;


5.3.1 添加用户组;

[root@localhost ~]# /usr/sbin/groupadd linuxsir
[root@localhost ~]# /usr/sbin/groupadd sir01
[root@localhost ~]# /usr/sbin/groupadd sir02
[root@localhost ~]# /usr/sbin/groupadd sir03
[root@localhost ~]# /usr/sbin/groupadd sir04
[root@localhost ~]# /usr/sbin/groupadd sir0104


5.3.2 添加用户;

[root@cuc03 ~]# adduser -g sir01 -G sir0104  -d /opt/linuxsir/sir01 -s  /sbin/nologin sir01
[root@cuc03 ~]# adduser -g sir02 -G sir0104  -d /opt/linuxsir/sir02 -s  /sbin/nologin sir02
[root@cuc03 ~]# adduser -g sir03 -G sir0104  -d /opt/linuxsir/sir03 -s  /sbin/nologin sir03
[root@cuc03 ~]# adduser -g sir04 -G sir0104  -d /opt/linuxsir/sir04 -s  /sbin/nologin sir04
[root@cuc03 ~]# adduser -g linuxsir -d /opt/linuxsir -G linuxsir,sir01,sir02,sir03,sir04,sir0104 -d /opt/linuxsir -s  /sbin/nologin linuxsir

为什么这样添加用户?请参考:

《Linux 文件和目录的属性》
《Linux 用户管理工具介绍》

当然我们还得学会查看用户信息的工具用法,比如 用finger和id来查看用户信息,主要是看用户是否添加正确;比如;请参考 《Linux 用户(User)查询篇》

[root@localhost ~]# id linuxsir
[root@localhost ~]# finger linuxsir


5.3.3 添加samba用户,并设置密码;

我们用的方法是先添加用户,但添加的这些用户都是虚拟用户,因为这些用户是不能通过SHELL登录系统的;另外值得注意的是系统用户密码和 Samba用户的密码是不同的。如果您设置了系统用户能登入SHELL,可以设置用户的Samba密码和系统用户通过SHELL登录的密码不同。

我们通过smbpasswd 来添加Samba用户,并设置密码。原理是通过读取/etc/passwd文件中存在的用户名。

[root@localhost sir01]# smbpasswd -a linuxsir
New SMB password: 注:在这里添加Samba用户linuxsir的密码;
Retype new SMB password: 注:再输入一次;

用同样的方法来添加 sir01、sir02、sir03、sir04的密码;


5.3.4 配置相关目录的权限和归属;

[root@cuc03 ~]# chmod 755 /opt/linux
[root@cuc03 ~]# chown  linuxsir:linuxsir /opt/linuxsir

[root@cuc03 ~]# cd /opt/linuxsir
[root@cuc03 ~]# chmod 2770 sir0*

[root@cuc03 ~]# chown sir01.linuxsir sir01

[root@cuc03 ~]# chown sir02.linuxsir sir02

[root@cuc03 ~]# chown sir03.linuxsir sir03

[root@cuc03 ~]# chown sir04.linuxsir sir04

[root@cuc03 ~]# chown linuxsir.sir0104 sir0104rw

[root@cuc03 ~]# chown linuxsir.linuxsir sirshare
[root@cuc03 ~]# chmod 755 sirshare

[root@cuc03 ~]# chown linuxsir:linuxsir sirallrw
[root@cuc03 ~]# chmod 3777 sirallrw


5.4 修改Samba配置文件 smb.conf;

配置文件如下,修改/etc/samba/smb.conf后,不要忘记重启smbd和nmbd服务器;

[global]
workgroup = LINUXSIR
netbios name = LinuxSir
server string = Linux Samba   Test Server
security = share


[linuxsir]
        comment = linuxsiradmin
        path = /opt/linuxsir/
        create mask =  0664
#create mask是用户创建文件时的权限掩码;对用户来可读可写,对用户组可读可写,对其它用户可读;
        directory mask = 0775
#directory mask 是用来设置用户创建目录时的权限掩码,意思是对于用户和用户组可读可写,对其它用户可读可执行;
        writeable = yes
        valid users = linuxsir
        browseable = yes

[sirshare]
        path = /opt/linuxsir/sirshare
        writeable = yes
        browseable = yes
        guest ok = yes

[sirallrw]
        path = /opt/linuxsir/sirallrw
        writeable = yes
        browseable = yes
        guest ok = yes

[sir0104rw]
        comment = sir0104rw
        path = /opt/linuxsir/sir0104rw
        create mask =  0664
        directory mask = 0775
        writeable = yes
        valid users = linuxsir,@sir0104
#@sir0104是用户组;
        browseable = yes

[sir01]
        comment = sir01
        path = /opt/linuxsir/sir01
        create mask =  0664
        directory mask = 0775
        writeable = yes
        valid users = sir01,@linuxsir
        browseable = yes


[sir02]
        comment = sir02
        path = /opt/linuxsir/sir02
        create mask =  0664
        directory mask = 0775
        writeable = yes
        valid users = sir02,@linuxsir
        browseable = yes

[sir03]
        comment = sir03
        path = /opt/linuxsir/sir03
        create mask =  0664
        directory mask = 0775
        writeable = yes
        valid users = sir03,@linuxsir
        browseable = yes

[sir04]
        comment = sir04
        path = /opt/linuxsir/sir04
        create mask =  0664
        directory mask = 0775
        writeable = yes
        valid users = sir04,@linuxsir
        browseable = yes


5.5 关于客户端访问;


5.5.1 Windows 访问;

我们打开Windows的IE浏览器,用IP地址的访问方式就能访问了,格式为 //192.168.1.3 类似的。当然也可以把共享文件夹挂在本地使用。比如我们把sir01文件夹挂在本地中,应该以sir01用户来挂载,挂载流程图如下;

 

6、更新日志;

2006/01/23 v0.1b
2006/01/24 v0.2b

7、参考文档;

《Samba-HOWTO》

7、相关文档;

《Samba 文件服务器用户复杂权限模型设计和实现 》

如何记录用户在samba服务器上读取和存放了那些文件?

匿名samba服务器上的日志能否记录下来每个IP的用户都读取了那些文件和保存了那些文件吗?

如何换用户访问

我刚开始访问Samba服务器时,成功,再次访问时,直接用原来用户登陆了,怎么样换其它用户?

似乎还要加上自动启动SAMBA!

似乎还要加上自动启动SAMBA!
同时非常敬佩北南南北大哥的无私,以及您的这种精神!
谢谢!
不好意思,不弟我刚学习LINUX,只是看到有人这样做!

文章非常好,就是

文章非常好,就是 writeable 应该是writable

有个重要的问题,在windows里面进入的时候,

有个重要的问题,在windows里面进入的时候,根本不用输入用名称,只有输入正确的密码就可以了.用户名是灰色的,不能输入,而且里面显示的是guest,这样一来,所有的文件加,只要密码正确都可以进去.好像和设置的不符合啊.?
who can help me to slove/answer the problem?

你应该用的是XP,再控制面板里执行网络安装向导

你应该用的是XP,再控制面板里执行网络安装向导

就能输入用户名了,你说的输入密码可以进入,应该是你把共享的文件夹权限设置为guest ok了

共享

我也是同样的现象,用户名是灰色的,输入密码没有反应,而且我用netstat,显示结果为,请求高手指点netstat -tlnp |grep smb
tcp 0 0 0.0.0.0:139 0.0.0.0:* LISTEN 10639/smbd
没有显示出445端口,

拜读后,sgid得设置不明白

我刚拜读完您的文档以下两句,看了《Linux 文件和目录的属性》后还是不明白,还请赐叫
chmod 2770 sir0*
chmod 3777 sirallrw

setuid,setgid,stickybit的三个权限的详细说明

一个文件都有一个所有者, 表示该文件是谁创建的. 同时, 该文件还有一个组编号, 表示该文件所属的组, 一般为文件所有者所属的组.

  如果是一个可执行文件, 那么在执行时, 一般该文件只拥有调用该文件的用户具有的权限. 而setuid, setgid 可以来改变这种设置.

  setuid: 设置使文件在执行阶段具有文件所有者的权限. 典型的文件是 /usr/bin/passwd. 如果一般用户执行该文件, 则在执行过程中, 该文件可以获得root权限, 从而可以更改用户的密码.

  setgid: 该权限只对目录有效. 目录被设置该位后, 任何用户在此目录下创建的文件都具有和该目录所属的组相同的组.

  sticky bit: 该位可以理解为防删除位. 一个文件是否可以被某用户删除, 主要取决于该文件所属的组是否对该用户具有写权限. 如果没有写权限, 则这个目录下的所有文件都不能被删除, 同时也不能添加新的文件. 如果希望用户能够添加文件但同时不能删除文件, 则可以对文件使用sticky bit位. 设置该位后, 就算用户对目录具有写权限, 也不能删除该文件.

  下面说一下如何操作这些标志:

  操作这些标志与操作文件权限的命令是一样的, 都是 chmod. 有两种方法来操作,

用户可以用chmod指令来为文件设置强制位和冒险位
setuid: chmod u+s 文件名 (setuid 只对文件有效)
setgid: chmod g+s 文件名 (setgid 只对目录有效)
sticky: chmod o+t 文件名 (sticky只对文件有效)

也可以通过数字加和,放在读写执行的三位数字前来指定:
4(setuid) 2(setgid) 1(sticky)
命令 结果
chmod 4755 -rwsr-xr-x
chmod 6711 -rws--s--x
chmod 4611 -rws--x--x

  那么原来的执行标志x到哪里去了呢? 系统是这样规定的, 如果本来在该位上有x, 则这些特殊标志显示为小写字母 (s, s, t). 否则, 显示为大写字母 (S, S, T)

老兄 帮帮忙 为什么我的windows能找到linux工作组

老兄 帮帮忙 为什么我的windows能找到linux工作组,却找不到主机呢?我认为是 netbios问题,可是解决不了!

另外,dns和域怎么设?

1你添加一個NET客戶端就可以了1

你添加一個NET客戶端就可以了

通过添加网络映射能行吗?

可能存在两方面的原因。一是主机名有相同的。这会造成冲突。
是不是把NMB服务器启动了呢???

另外防火墙,是不是关了呢?

老兄 帮帮忙 为什么我的windows能找到linux工作组

老兄 帮帮忙 为什么我的windows能找到linux工作组,却找不到主机呢?我认为是 netbios问题,可是解决不了!

另外,dns和域怎么设?

Samba 用的netbios协议,如果您用Samba 不成功

Samba 用的netbios协议,如果您用Samba 不成功,

Linux与Windows 、Linux 和 Linux

请问文章第1节里面的以上两句是什么意思?
好像没说完啊?

北南南北,辛苦了,大家感谢你!

看了北南兄写的这一系列文章,感慨万千,这些文章实用价值很高,
对我们的帮助很大,希望继续坚持,也希望大家都能够支持!谢了!

北南南北,辛苦了,大家感谢你!

看了北南兄写的这一系列文章,感慨万千,这些文章实用价值很高,
对我们的帮助很大,希望继续坚持,也希望大家都能够支持!谢了!

文件的2次共享问题

有一关于samba共享的问题请教;
网中有A(Windows),B(Linux FC3),C3(Windows XP)台主机,A-B间可以互访,B-C间可以互访;
目的:通过B的共享实现A-C间的文件共享,即C可以读写A共享的文件夹share

方法:

1.将A的share挂载到B的/mnt/share目录,此时测试,可以对/mnt/share进行读写,并创建新文件(夹)操作(证明A对B的共享设置没有问题)

2.将B的/mnt/share目录通过samba设置为share2共享,在C中访问B的共享share2,

说明:若不进行操作1,直接进行操作2,则C机可以对B的共享share2进行读写,并创建新文件(夹)操作(证明B对C的共享设置没有问题)
若进行了操作1,然后再进行操作2,则C机可以对B的共享share2进行读写修改,但并不能再创建新文件(夹)操作
问题:为什么依次经过1,2操作后,共享的的权限削弱了,即C不能在A共享的文件夹中创建新文件(夹)?该如何避免此种问题?

很好

能不能把共享文件 挂载到 本地?

FC5 中似乎 smbfs 被 cifs 取代了

rpm -ql samba-client 只有 cifs 了。

mount -t smbfs 会返回 "不支持的文件系统",必须改为 mount -t cifs。

请问,samba可不可以单独设置某个目录为匿名用

请问,samba可不可以单独设置某个目录为匿名用户访问,其他的目录为用户级访问?

可以,在论坛中的网络版中有关于这访问的

可以,在论坛中的网络版中有关于这访问的,在置顶帖中。。

大侠帮我看看是什么原因?谢谢了

1.我按这种方式启动的时候SMB启动失败
[root@localhost ~]# /etc/init.d/smb start
启动 SMB 服务: [ 失败 ]
启动 NMB 服务: [ 确定 ]
2.我按以下的方式启动的时候,没任何反映,而且硬盘狂转,这是什么原因啊
[root@localhost ~]# smbd
[root@localhost ~]# nmbd

第四步:查看smbd进程,确认Samba 服务器是否运行起来了;
[root@localhost ~]# pgrep smbd------->此处没任何显示

我也一样,我查了一下/var/log/samba下的smbd.log文件

[2006/08/16 18:23:35, 0] smbd/server.c:main(847)
smbd version 3.0.23a-1.fc5.1 started.
Copyright Andrew Tridgell and the Samba Team 1992-2006
smbd: symbol lookup error: smbd: undefined symbol: cupsLangDefault

To solve the issue:yum

To solve the issue:yum update cups
http://groups.google.com.tw/group/redhat-linux-fedora/browse_thread/thread/fc38a525a7bba165/4fabd3d3a4027fa9?hl=zh-TW

应该是配置文件中有非法选项!

应该是配置文件中有非法选项!

感谢楼主为我这些菜鸟提笔!!!!!!!

感谢,支持,期望

不知道对windows的域支持的怎么样啊?

不知道对windows的域支持的怎么样啊?

非常感谢,找了很多资料,这里说得比较明白。

非常感谢,找了很多资料,这里说得比较明白。

请教北南兄!

小弟已按照你的做法一步步做了,但有一处不同的是:
# pgrep smbd
20274
20275
这是什么问题啊?到最后,我在局域网中其它机子访问Linux共享时,机子可以进入,但要打开共享文件夹时提示“无法访问...找不到网络名。”这是什么原因呢?
补充:
# smbclient -L //...
是可以见到我的共享的。
请北南兄赐教!~

谢谢!

我昨天才安装了 red hat linux 9.03 没找到现成的安装教程,就参照咱们站找到的其它教程装啦!以前根本没接触过,看了几个站,觉得还是这好,通俗比较易懂(哈!偶英文太差啦)以后多发点这样的贴子!偶支持!帮助别人快乐自己!

nice!

清晰、明了

增加两个选项

呵呵,不知道大家知道不知道这个
dos charset = gbk
unix charset = gbk

可以是utf-8,gbk,gb2312,gb18030
dos charset 用来设置linux访问windows 共享时的字符集
unix charset 用来设置windows客户机访问samb服务器的字符集
samba 共享码码问题一直存在,上面两个选项能解决大多数问题,不过除非你全部用utf-8编码,否则不是100%都行的。

另外还可以在编译内核的时候可以设置
CONFIG_SMB_NLS_REMOTE="cp936" 来定义远程主机使用的字符集

给你一个好建议

北南兄,你的做法令人钦佩.
不过,建议你下次再写,一定先去网上看看有没有人做过同样的工作.
关于samba的设置,有一位鸟兄写得不错.此人写了一系列的文章.
关于samba的文章也非常详细.不知道你是否看过?
http://linux.vbird.org/linux_server/0370samba.php

文章多了,但对初学者来说有好坏之分

看了一位仁兄的回复,想说两句
>给你一个好建议
>北南兄,你的做法令人钦佩.
>不过,建议你下次再写,一定先去网上看看有没有人做过同样的工作.
>关于samba的设置,有一位鸟兄写得不错.此人写了一系列的文章.
>关于samba的文章也非常详细.不知道你是否看过?
>http://linux.vbird.org/linux_server/0370samba.php

北南这篇感觉对我这种新手来说就非常易于理解,而且都在一个页面里面可以看完。
你发那个首先是台湾网站,繁体字看起来就比较费劲,而且还有很多的页面跳转,其实一样是简单的指导性的文档,但是看这篇你不觉得会比你说的那个网站,可以更省时间么?
做同样的事情,我觉得怎么样能用最短的时间,达到同样的目的是最重要的。所以有人在这里为大家提供这样好的学习资料,我觉得大家应该多多支持!!

不是人家做了你没有做的事情,还要被说风凉话~~~

大家能把自己的学习经验,自己的知识拿出来与大家共享,我觉得是非常好的事情,而且对技术的发展也会起到很大的推进作用。

按北南的配置说明,刚刚试验了一下,的确是很方便。不过139端口和445端口在Windows上常常是被攻击的目标,象以前一些冲击波之类的病毒,好象就是借助这些端口,不知道在Linux下,会不会也有同样的安全隐患?

谢谢台兄建议;

我没有看过;

网上的SMB文档一大堆;我看smb的说明文档及为全面。只要对英文稍有认识的就可以完全读懂。就是读不懂,按上面的给的配置代码来操作也能行;

本不想写这样的教程。但基于我以前写了一些基础文档,我想我不会少这一篇两篇的。记得ROSE兄说过,别人写是别人的风格,你写是你的风格。

本来也想从网上抄几篇过来。。但这并不符合我的作事风格,当然也不符合SIR的风格。如果一个站整天抄来抄去的。中文所有的站都转这几篇文档。我不知道这是悲哀还是什么的。如果能写的人都不写了。我看大家到时去哪转??

我写SMB的意义,并不是别人说做过了,我还要去做,也就是大家常说的“本来都有轮子了,你还要再去发明轮子有必要吗?”。

现在我声明一下,对于开源文档,重新“发明轮子”,这是极有必要的。特别是中文的DOC。是极有必要重新发明“轮子”。我的目的是引导大家参与写文档。而非中文Linux DOC真的少我北南这一篇SMB文档。


可能有的弟兄已经看到了在文档提要部份中的“作者:北南南北,正在增加中... ... 需要您的参与;
来自:LinuxSir.Org
简介:本文只是讲一讲我们最常用的Linux与Windows共享文件,主要是为新手指一指路。如何建立最简单的Samba服务器,并讲述遇到问题应该从何处寻找解决方案;正在更新之中,希望您的参加 ... ... 谢谢;

我真正的意图并非要SMB文档,而是让会SMB的弟兄参与进来,让大家有这种”人人为我,我为人人“的心胸。中文项目为什么总是失败?问题出在几乎很少人参与。所以这就有lumaqq 、fcitx ...... 总是一个开发者在挺着的原因。

我想把SIR的首页做成引导大家理解”互助共享“这一理念的实验室;这也是我一直在写文档的真正原因。。。。。。。

谢谢建议。。。。

北南 呈上

如果一个站整天抄来抄去的。。。。

如果一个站整天抄来抄去的。中文所有的站都转这几篇文档。我不知道这是悲哀还是什么的。如果能写的人都不写了。我看大家到时去哪转??

强烈支持南北大侠的观点,LINUX之福,菜鸟之福。祝南北大虾新年快乐,也祝SIR里的各位兄弟姐妹们新年快乐

光GUEST用户没什么用啊

光GUEST用户没什么用啊,要像WIN系统那样能自由控制目录等权限才好啊

呵。兄弟,这不是从最简单的开始写起吗?

smb在我认为他的功能太强大了,并不是我一下就能说的清楚的。。

所以只能从最简单的功能写起。主要是给初学者在学习时,用这个最小的例子来获得一点信心。。

我看兄弟有能力写SMB DOC,为何不出出手呢???我是表示欢迎的。。

任何一个文档都是从最简单的开始写起。。主要是把一些基础的东西给初学者。并不是我不想写USER验证模式。主要是为了让新手一步一步的学会基本的操作。。。

授之与鱼不如授之与渔。。。。所以我才写SMB。。。。想把最基本的操作告诉新手。。

欢迎大家补充。。。。因为我在标题和提要上写着,欢迎参与。。。

写文档,越深入,需要科普的知识越多

SP。写文档,越深入,需要科普的知识越多。

所以只能 暂时按照用户接收程度分类总结;P

这个权且当做初级篇;P,期望中级应用+高级配置篇的早日归纳完成。辛苦您了

很不幸,我smbclient 没有成功

很不幸,我smbclient -L //redhat 后得到消息说
Connection redhat failed.

我的配置同第四部分,只是workgroup = mygroup
netbios name = redhat
id nobody显示 groups也是nobody

楼主,请留E-mail地址

楼主,请留一个E-mail地址,有点东西要发给你!

谢谢楼主,发一份给我行吗。。我也在学

xuexuejiang88@163.com

楼主能不能发一份给我呢。。我也在学SAMBA

楼主能不能发一份给我呢。。我也在学SAMBA

看了后有一点不明白。

create mask = 775
#create mask是用户创建文件时的权限掩码;
---到底是什么权限?这是个mask是umask吗?
解释一下,小弟确实不太明白,如果是umask的话,
用户创建文件的权限应该是 666-775,总感觉别扭。

就是mask,不是umask;

是我大意了,我在最近再更新一下文档。我们可以设置文件的权限代码是664,目录的权限是775。

此文档的第二个例子,我的本意是让大家明白权限继承,比如sgid 的设置。这样用户创建目录时,就继承父目录的用户组。

还有一点没有说明,就是用户家目录的其它用户的权限是关掉的。所在在用户的家目录下设置多大的权限,也没有关系。因为其它用户是进不来的。家目录都 被设置为770,也就是drwxrwx---。。相对来说还是比较安全的。。不过如果再向将一个用户添加到linuxsir用户组,这种安全性就不敢说 了。因为凡是linuxsir用户组的用户都有管理权限。

谢谢。。。有些地方我还在学习中,可能在近期把SMB的文档,关于公共部份和特殊部份的定义会说一下。

在这个例子中,我主要的目的是让大家从一个小小的例子体验SMB的易用性。用最少的几个参数就能完成WINDOWS中比较难完成的权限级别。。。。。。

慢慢学习和整理中……

跟 南北兄的感触一样,网上的东西老是抄来抄去,难免误传滥传。最近我也在整理linux学习笔记,从卸载老版本程序,安装新版本过程以及过程中遇到的问题和 解决办法都记录下来了。我发现很多文章只写安装和配置,却很少提到卸载--卸载时候也会遇到n多问题如,mysql与perl之间的bt依赖关系。安装 php5需要的前提等很多问题在官方文档有时候更本就没有提到。由于本人英文水平(对专业术语理解不透等)和深入程度,写出来的东西可能有很多理解上等诸 多错误,欢迎大家来指正。本人的linux学习笔记整理的只有那么几篇,还有很多在慢慢学习和整理中…………欢迎有兴趣的朋友一起交流。

本人目前整理请查看:(blog上记录的都跟linux有关)
http://xiutuo.vxv.cn/blog/

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

闽ICP备14008679号