`
fengyong0912
  • 浏览: 103802 次
  • 性别: Icon_minigender_1
  • 来自: 武汉
社区版块
存档分类
最新评论

一步一学Linux与Windows 共享文件Samba (v0.2b)

阅读更多

简介:本文只是讲一讲我们最常用的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共享时,机子可以进入,但要打开共享文件夹时提示“无法访问...找不到网络名

分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics