zoukankan      html  css  js  c++  java
  • Linux NFS 和 Samba 共享配置

     

    一. NFS 配置

    网络文件系统(NFSNetwork File System,主要用于Linux 系统之间的文件共享。

    1.1  Linux 服务器端NFS 服务器的配置 

    root 身份登陆Linux 服务器,编辑/etc 目录下的共享目录配置文件exports,指定共享目录及权限等。 

    # vi /etc/exports 

    /tmp     *(rw,no_root_squash)
    /home/public 192.168.0.*(rw) *(ro)  -- 这里是对同一个目录分配2个不同的网段
    /home/test  192.168.0.100 (rw)
    /home/linux  *.the9.com(rw,all_squash,anonuid=40,anongid=40)

    /home/work  192.168.0.*rw,sync,no_root_squash) 

    内容表示:允许ip 地址范围在192.168.0.*的计算机以读写的权限来访问/home/work 目录。

    括号内的参数意义描述如下: 

    rw:可读写的权限;
    ro:只读的权限;

    sync:资料同步写入存储器中。
    async:资料会先暂时存放在内存中,不会立即写入硬盘。

    no_root_squash:登入 NFS 主机使用分享目录的使用者,如果是 root 的话,那么对于这个分享的目录来说,他就具有 root 的权限这个项目极不安全,不建议使用

    root_squash:在登入 NFS 主机使用分享之目录的使用者如果是 root 时,那么这个使用者的权限将被压缩成为匿名使用者,通常他的 UID 与 GID 都会变成 nobody 那个系统账号的身份。
    all_squash:不管登陆NFS主机的用户是什么都会被重新设定为nobody
    anonuid:自行指定UID,这个UID必须存在于/etc/passwd中,一般来说这个UID是一个匿名账户
    anongid:anonuid
    insecure:允许从这台机器过来的非授权访问
    更多的权限说明:man exports

    接着启动端口映射redhat 中默认自启动: 

    [root@localhost ~]# service portmap start

    [root@localhost ~]# /etc/rc.d/init.d/portmap start 

    最后启动NFS 服务,此时NFS 会激活守护进程,然后就开始监听 Client 端的请求: 

    [root@localhost ~]# /etc/rc.d/init.d/nfs start 

    [root@localhost ~]# service nfs start

    要注意的一点:NFS 服务器启动后,最好检查Linux 服务器的防火墙等设置(一般需要关闭防火墙服务),确保没有屏蔽掉NFS 使用的端口和允许通信的主机,主要是检查Linux 服务器iptablesipchains 等选项的设置,以及/etc/hosts.deny/etc/hosts.allow 文件。 

    我们自己做一个回环测试,即在服务器上挂我们共享的文件,如果能挂上,就ok

    # mount –t nfs 192.168.0.20:/home/work  /mnt 

    # ls /mnt 


    Exportfs命令:

    /usr/sbin/exports可以用来重新共享变更的目录或者卸载目录 如果我们在启动了NFS之后又修改了/etc/exports,这个时候我们就可以用exportfs命令来使改动立刻生效,该命令格式如下:
     exportfs [-aruv]
    -a:全部挂载/etc/exports文件内的设置
    -r:重新挂载/etc/exports的设置
    -u:卸载某一目录
    -v:把执行过程显示在屏幕上
    [root@localhost ~]#  exportfs -rv  --全部重新 export 一次
     exporting 192.168.0.100:/home/test
     exporting 192.168.0.*:/home/public
     exporting *:/home/public
    [root@localhost ~]# exportfs -au --全部都卸载。

     


    1.2  嵌入式目标系统NFS 客户端的配置 

    Linux 服务器设置好后,还需要对客户端进行相关配置。在嵌入式目标系统的Linux Shell 下,执行如下命令来进行NFS 共享目录挂载: 

     mount -t nfs hostname(orIP):/directory /mount/point
     具体例子:
     Linux:  mount -t nfs 192.168.0.1:/home/work  /mnt/nfs  -o nolock 
     Solaris:  mount -F nfs 192.168.0.1:/home/work  /mnt/nfs  -o nolock 

    Mount NFS的其它可选参数:
    Hard mount:  NFS CLIENT会不断的尝试与SERVER的连接(在后台,不会给出任何提示信息,LINUX下有的版本仍然会给出一些提示),直到MOUNT上。
    Soft mount: 会在前台尝试与SERVER的连接,是默认的连接方式。当收到错误信息后终止mount尝试,并给出相关信息。
     

    例如mount -F nfs -o hard 192.168.0.10:/nfs /nfs
    对于到底是使用hard还是soft的问题,这主要取决于你访问什么信息有关。例如你是想通过NFS来运行X PROGRAM的话,你绝对不会希望由于一些意外的情况(如网络速度一下子变的很慢,插拔了一下网卡插头等)而使系统输出大量的错误信息,如果此时你用的是HARD方式的话,系统就会等待,直到能够重新与NFS SERVER建立连接传输信息。另外如果是非关键数据的话也可以使用SOFT方式,如FTP数据等,这样在远程机器暂时连接不上或关闭时就不会挂起你的会话过程。
     
    rsizewsize 文件传输尺寸设定:V3没有限定传输尺寸,V2最多只能设定为8k,可以使用-rsize and -wsize 来进行设定。这两个参数的设定对于NFS的执行效能有较大的影响
    bg在执行mount时如果无法顺利mount上时,系统会将mount的操作转移到后台并继续尝试mount,直到mount成功为止。(通常在设定/etc/fstab文件时都应该使用bg,以避免可能的mount不上而影响启动速度)
    fgbg正好相反,是默认的参数
    nfsversn:设定要使用的NFS版本,默认是使用2,这个选项的设定还要取决于server端是否支持NFS VER 3
    mountport设定mount的端口
    port根据serverexport出的端口设定,例如如果server使用5555端口输出NFS,那客户端就需要使用这个参数进行同样的设定
    timeo=n:设置超时时间,当数据传输遇到问题时,会根据这个参数尝试进行重新传输。默认值是7/10妙(0.7秒)。如果网络连接不是很稳定的话就要加大这个数值,并且推荐使用HARD MOUNT方式,同时最好也加上INTR参数,这样你就可以终止任何挂起的文件访问。
    Intr: 允许通知中断一个NFS调用。当服务器没有应答需要放弃的时候有用处。
    udp:使用udp作为nfs的传输协议(NFS V2只支持UDP)
    tcp使用tcp作为nfs的传输协议
    namlen=n设定远程服务器所允许的最长文件名。这个值的默认是255
    acregmin=n设定最小的在文件更新之前cache时间,默认是3
    acregmax=n设定最大的在文件更新之前cache时间,默认是60
    acdirmin=n:设定最小的在目录更新之前cache时间,默认是30
    acdirmax=n设定最大的在目录更新之前cache时间,默认是60
    actimeo=nacregminacregmaxacdirminacdirmax设定为同一个数值,默认是没有启用。
    retry=n设定当网络传输出现故障的时候,尝试重新连接多少时间后不再尝试。默认的数值是10000 minutes
    noac: 关闭cache机制。
     

    同时使用多个参数的方法mount -t nfs -o timeo=3,udp,hard 192.168.0.30:/tmp /nfs


    注意:  NFS客户机和服务器的选项并不一定完全相同,而且有的时候会有冲突。比如说服务器以只读的方式导出,客户端却以可写的方式mount,虽然可以成功mount上,但尝试写入的时候就会发生错误。一般服务器和客户端配置冲突的时候,会以服务器的配置为准。
     

    ShowMount 命令:
    /usr/sbin/showmount: 用在客户端查看服务器所共享的文件资源对于NFS的操作和查错有很大的帮助。该命令有2个参数:
     -a :这个参数是一般在NFS SERVER上使用,是用来显示已经mount上本机nfs目录的cline机器。
     -e :显示指定的NFS SERVERexport出来的目录。
    例如:
     showmount -e 192.168.0.30


    1.3  设置开机自动挂载
    如果我们手动mountNFS 共享的文件,那么在我们重启之后,挂载点就失效了,需要重新进行挂载。 我们可以在/etc/fstab 文件里添加相关信息,让系统在开机时,自动挂载。


    [root@localhost ~]# more /etc/fstab

    # This file is edited by fstab-sync - see 'man fstab-sync' for details

    LABEL=/                 /                      ext3    defaults        1 1

    none                    /dev/pts                 devpts  gid=5,mode=620  0 0

    none                    /dev/shm                tmpfs   defaults        0 0

    none                    /proc                   proc    defaults        0 0

    none                    /sys                    sysfs   defaults        0 0

    LABEL=SWAP-sda2         swap                 swap    defaults        0 0

    /dev/hdc                /media/cdrom             auto    pamconsole,exec,noauto,managed 0 0

    /etc/fstab的格式如下:
    fs_spec   fs_file  fs_type   fs_options  fs_dump fs_pass 

    参数解释:

    fs_spec: 该字段定义希望加载的文件系统所在的设备或远程文件系统,对于nfs这个参数一般设置为这样:192.168.0.1:/NFS
    fs_file: 本地的挂载点
    fs_type对于NFS来说这个字段只要设置成nfs就可以了
    fs_options: 挂载的参数,可以使用的参数可以参考上面的mount参数。
    fs_dump该选项被"dump"命令使用来检查一个文件系统应该以多快频率进行转储,若不需要转储就设置该字段为0
    fs_pass该字段被fsck命令用来决定在启动时需要被扫描的文件系统的顺序,根文件系统"/"对应该字段的值应该1,其他文件系统应该2。若该文件系统无需在启动时扫描则设置该字段0 。

     

    1.4  其他的几个命令:
     nfsstat:  查看NFS的运行状态,对于调整NFS的运行有很大帮助
     rpcinfo查看rpc执行信息,可以用于检测rpc运行情况的工具。
     /var/lib/nfs/*tab NFS日志文件,etab,主要记录NFS共享出来的目录的完整权限设置值等,xtab,记录曾经连接此NFS主机的相关客户端数据

     

    二. SAMBA 配置

    Samba主要用于Windows Linux 之间的文件共享。 Samba的配置比较多,下面从实用的角度做一些简单的说明。

    2.1  安装samba

     一般的Linux都会安装samba程序,如果没有安装,可以去samba的官网下载安装软件,自己进行安装。 网站地址:http://www.samba.org/

     

    2.2  简单说明

    Samba 有两个守护进程:smbd nmbd,它们是Samba的核心进程。

    nmbd进程使其他计算机浏览Linux服务器.

    Smbd进程在SMB服务请求到达时对它们进行处理,并且为使用或共享的资源进行协调.

    Samba的的配置文件信息写在: /etc/samba/smb.conf 文件中,如果我们要共享某些文件夹,可以在这个文件里添加相关的内容,在重启一下samba服务即可。 先看一下文件的内容:

    [root@localhost ~]# more /etc/samba/smb.conf

    ......中间是一些其他的配置,我们就不看了,我们看最后一个配置....

    #============================ Share Definitions ==============================

       idmap uid = 16777216-33554431

       idmap gid = 16777216-33554431

       template shell = /bin/false

       winbind use default domain = no

    [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

            guest ok = no

            writable = no

            printable = yes

    # Un-comment the following and create the netlogon directory for Domain Logons

    ;       [netlogon]

    ;       comment = Network Logon Service

    ;       path = /var/lib/samba/netlogon

    ;       guest ok = yes

    ;       writable = no

    ;       share modes = no

    # Un-comment the following to provide a specific roving profile share

    # the default is to use the user's home directory

    ;       [Profiles]

    ;       path = /var/lib/samba/profiles

    ;       browseable = no

    ;       guest ok = yes

    # A publicly accessible directory, but read only, except for people in

    # the "staff" group

    ;       [public]

    ;       comment = Public Stuff

    ;       path = /home/samba

    ;       public = yes

    ;       writable = yes

    ;       printable = no

    ;       write list = +staff

    这段是关于添加共享的一些配置。

    重启Samba服务

    [root@localhost oracle]#/etc/rc.d/init.d/smb restart

    [root@localhost oracle]# service smb restart

     

    2.3  2个实例

    2.3.1  windows 访问Linux 共享

    samba的配置文件( /etc/samba/smb.conf )里添加 /u01 的共享。把如下代码添加到sbm.conf就可以了:

    [global]
       workgroup=DAVIDDAI  -- 这个自己随便写
       sercurity=share    -- 这里要注意,因为默认是USER

        [public]  -- 这个是设置的共享名,如果写其他的,你看到的共享名就是其他的

        path = /u01

        public = yes

        writable = yes

                guest ok =yes

        browseable=yes

    重启Samba 服务:

    [root@localhost oracle]# service smb restart

    Shutting down SMB services:                                [  OK  ]

    Shutting down NMB services:                                [  OK  ]

    Starting SMB services:                                     [  OK  ]

    Starting NMB services:                                     [  OK  ]

    最后在window 平台下输入//IP//192.168.1.21 就可以访问Linux的共享内容了,并且还具有写的权限。 

    这里为了方便,没有按用户来进行设置,如果按用户的话要麻烦一点。 所以安全性也比较差。 

     

    2.3.2  Linux 访问window 的共享资源

    这个配置就比较简单。 只有2步:

    (1) window 下共享某个目录,Software,这个都是界面操作,就不多说了。

    (2) linux下挂载这个目录

    # mount -o username=administrator,password=12345678 //192.168.1.81/Software /mnt

    或者

    # mount -t smbfs -o username=administrator,password=12345678 //192.168.1.81/Software /mnt

    mount -t smbfs -o username=administrator,password=bailing520 //192.168.1.81/Software /mnt

    挂载成功就就可以在/mnt 目录下查看window共享的内容了。 

     

     

     

    ------------------------------------------------------------------------------ 

    Blog: http://blog.csdn.net/tianlesoftware 

    网上资源: http://tianlesoftware.download.csdn.net 

    相关视频:http://blog.csdn.net/tianlesoftware/archive/2009/11/27/4886500.aspx 

    DBA1 群:62697716(); DBA2 群:62697977

    DBA3 群:63306533;     聊天 群:40132017

    道森Oracle,国内最早、最大的网络语音培训机构,我们提供专业、优质的Oracle技术培训和服务! 我们的官方网站:http://www.daosenoracle.com 官方淘宝店:http://daosenpx.taobao.com/
  • 相关阅读:
    Java基础加强-内部类及代理
    金额货币转换函数
    SAP ABAP exporting list to memory ...SUBMIT 程序传输屏幕参数
    得到时间戳的函数
    alv行可编辑时带出描述
    ALV编辑行内容有改变时候操作
    ALV判断修改后是否有不合法数据,有则选中错误行,高亮度显示。
    数据字典的QUAN DEC类型与ABAP P型转换
    屏幕编程 F4的帮组用法
    read table 时关键字TRANSPORTING NO FIELDS的用法
  • 原文地址:https://www.cnblogs.com/tianlesoftware/p/3610069.html
Copyright © 2011-2022 走看看