zoukankan      html  css  js  c++  java
  • 快速配置 Samba 将 Linux 目录映射为 Windows 驱动器,用于跨平台编程

    一、局域网内的 Linux 服务器上操作步骤:

      1、安装samba(CentOS Linux):

    yum install samba system-config-samba samba-client samba-common



      2、创建www账号

    /usr/sbin/groupadd www
    /usr/sbin/useradd -g www www

    mkdir -p /data0/knose/
    chmod 777 /data0/knose/

    mkdir -p /data0/htdocs/
    chown -R www:www /data0/htdocs/
    chmod 777 /data0/htdocs/

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



      3、创建samba配置文件

    mv -f /etc/samba/smb.conf /etc/samba/smb.conf.bak
    vi /etc/samba/smb.conf


      输入以下内容:

    引用
    [global]
    server string = Samba Server
    security = user
    encrypt passwords = yes 
    smb passwd file = /etc/samba/smbpasswd

    [knose]
    workgroup = root
    netbios name = root
    path = /data0/knose
    browseable = yes
    writeable = yes

    [web]
    workgroup = www
    netbios name = www
    path = /data0/htdocs
    browseable = yes
    writeable = yes



      4、为samba用户www、root设立一个密码:

    smbpasswd -a www
    smbpasswd -a root



      5、启动samba:

    /sbin/service smb start




      二、局域网内的 Windows 服务器上操作步骤:

      1、Windows 上访问 samba,在“我的电脑”中输入:

    \\xxx.xxx.xxx.xxx\



      2、Windows 断开 samba 共享连接,在【开始】→【运行】→【cmd】回车中输入:

    net use * /del



      3、将 samba 共享的 Linux 目录,映射成 Windows 的一个驱动器盘符:

      点击在新窗口中浏览此图片

      点击在新窗口中浏览此图片

      点击在新窗口中浏览此图片



      三、跨平台C/C++代码编译、调试:

      用 Windows 下的编辑器编写、修改跨平台的C/C++代码,保存后,无需复制到其他地方,即可同时用 Windows 下的 Visual Studio,Linux 下的 g++、gcc、gdb,编译、调试程序了。

      点击在新窗口中浏览此图片

      点击在新窗口中浏览此图片

      注意:在samba共享的驱动器上执行“.bat”批处理脚本,会导致 Windows 蓝屏,这一点需要注意。

    简介

      samba是一个工具套件,在Unix上实现SMB(Server Message Block)协议,或者称之为NETBIOS/LanManager协议。SMB协议通常是被windows系列用来实现磁盘和打印机共享。需要注意的 是,NetBIOS是基于以太网广播机制的,没有透明网桥是不能跨越网段的,也许用WINS和LMHOSTS可以,但我没试过。我感觉samba是把 SMB绑定到TCP/IP上实现的,samba只在IP子网内广播(很多时候我不得不指定IP地址:-()。所以在win95上与samba通讯既要装 NetBEUI协议,也要装tcp/ip协议。

    编辑本段samba的主要部分

      两个守护程序: smbd 和 nmbd(对客户端提供NetBIOS名服务)   配置文件: /etc/smb.conf   使用工具: smbclient,smbstatus,smbmount,smbumount,smbprint,smbprint.sysv,smbrun   samba的启动脚本在/etc/rc.d/init.d/smb   BTW,不要把smb与smp(对称多处理器)搞混了,更不要把NetBIOS名与DNS里的主机名搞混淆了! samba缺省 是把主机名设置成NetBIOS名,这样通常会超出NetBIOS名的长度限制(16个字符).

    编辑本段使用中的问题

    在Win95网上邻居看不到Linux box?

      注意/etc/smb.conf文件里以下几项的设置:   guest account = pcguest(不要照着写,添实际的名字,你要去创建一个pcguest帐号)   null password = yes (这一点很重要!)   browseable = yes   public = yes   另外把security改为share试试.   仔细读一读"man smb.conf".   再说Win95那个破东西,网上邻居运行一百遍才可能会出来你想要的.   用这个方法试一试:先用smbmount Win95的一个共享目录,用"网络监视器"查看一下,然后再用网上邻居看.

    smbmount怎么用?

      不能用man smbmount看看吗? 大致是:   smbmount //win95-name/share-dir /mount-point [-I ip地址或主机名] [-c 本机客户名]   []表示可选项, 本机客户名可以随便取.   Samuel Leo补充道:   标准的smbmount使用格式是   smbmount //server/share -c "mount /mnt -u uid -g gid" (注:好像不对吧)   我编译了一个修改版的smbmount, 使用格式为   smbmount //server/share /mnt [passwd] [-Uusername] [-9]   ftp://202.103.190.5/incoming/smbmount.gz (binary)   如果你用redhat, 也可以试试最新出的smbwrapper   ftp://202.103.190.5/incoming/smbwrapper.so.gz   设置一下环境变量   LD_PRELOAD=/anywhere/    SMBW_USER=username   SMBW_PASSWORD=passsword   SMBW_WORKGROUP=workgroup #optional   SMBW_DEBUG=4 #optional   SMBW_LOGFILE=smbw.log #optional, default to stderr   SMBW_PREFIX=/smb #optional, default to /smb   export PWD SMBW_USER SMBW_PASSWORD SMBW_WORKGROUP   export SMBW_DEBUG SMBW_LOGFILE SMBW_PREFIX   然后你就可以"ls /smb"看到同组的所有机器名.   "ls /smb/server"看该机的共享清单.   缺点就是太慢, 10.10版对execle,execve,...等指定envp的exec仍有bug   不能下执行/smb下的文件, 不能mmap /smb下的文件.   > 先谢谢各位!   > 我的Pwin95现在可以看到linux了,我保证什么也未修改过。   > 现在,我从linux上执行:   > smbclient //sjj2/nes(pwin95机器),可看到文件并显示:   > smb:\>   > smbclient -L sjj2,可看到sjj0(linux)和sjj2(pwin95)。   > 但是我不能从pwin95上访问linux(sjj0),双击总显示:   > 找不到机器名或共享名,请确认输入正确,然后重试。   > 我对smbmount不会用,也找不到能看明白的帮助,因为   > 我不理解mount-point的含义,请指导;linux上的   > smbd和nmbd当然是运行的。   > 再谢各位!请继续帮忙。smb.conf在前面的贴子中。   Win95的网上邻居问题太多,别说跟Linux过不去,就是几台Win95之间连个小网,只要没有NT服务器,他们就经常互相找不到。 所以,一定要把samba的WINS服务器功能打开,(wins support = yes), 然后把95的WINS服务器指向他。也许还要加入:   name resolv order = wins hosts bcast   这样做的话最好让Linux先于Win95启动起来!

    密码问题

      >我在RedHat 5.1里可以共享Win98的服务,在Win98的网上邻居里   >可以看到LINUX的机子,但提示\\linux\IPC$ 需要口令,输入口令总   >不正确,不知该如何设置?   此问题好像不只Linux有,NT也有,原因是连接时没有用户名的信息,不要直接点击图标,用磁盘映射:\\linux\username 的格式.   Win98使用加密的口令认证,而RedHat的SMB缺省使用明文认证,所以口令总是不正确。   可以在smb.conf中加入   encrypt passwords = yes   并使用smbpasswd 维护用户口令   Win98 上选 开始 -> 注销 ,用 Linux 机器上的用户名和口令登录,然后不用输入口令就可以访问 Linux 的资源了。这和 NT 上是一样的。   或者 Linux 机器上的 /etc/smb.conf 里改成 security = share,   guest account = username (username 改成你机器上的一个用户帐号)。   这样如果 Win98 不是用 Linux 系统上的用户帐号登录的,也可以直接访问 Linux ,其权限等于 guest account 指定的用户的权限。Linux作出改动后要重启。   注:完全不必重新启动,可以到/etc/rc.d/init.d下去执行smbd stop,然后再smbd start就可以了(这是在Redhat中).在Linux下要学会尽量不重启的基本技巧!

    如何让Win98发送明文密码呢?

      如果你用Win98或打过很多补丁的Win95. 如果Samba不提供口令加密是不能登录的.   1. 执行Win95_PlainPassword.reg允许Win95发送明文口令   运行REGEDIT,添加:   [HKEY_LOCAL_MACHINE\System\CurrentControlSet\Services\VxD\VNETSUP]   "EnablePlainTextPassword"=dword:00000001   2. 升级到最新的Samba, 打开口令加密开关.   > BTW:哪一版Samba可设加密校验,如何设?   我的 Samba 1.9.18p10 就已经可以了.   在 smb.conf 里面找到   # You may wish to use password encryption. Please read   # ENCRYPTION.txt, Win95.txt and WinNT.txt in the Samba documentation.   # Do not enable this option unless you have read those documents   encrypt passwords = yes   smb passwd file = /usr/private/smbpasswd   这一段就可以了.

    smbclient 相关

      smbclient \\NetBIOS-name\share-dir 不对?   这是shell的原因,应该用smbclient \\\\name\\share-dir或者是smbclient '\\name\share-dir'   shell不处理两个单引号之间的内容.如果你熟悉C语言,应该很清楚为什么了!   或者使用smbclient //NetBios-name/share-dir 就不存在这个问题。   > 我在我的Linux机器上设好了smb.conf如下(删去了所有注释),为什么NT不认Samba?   把 security = user   改成: security = server   Samba 1.9.18以前的版本还不完全支持NT的所谓"域", 2.0.0版正在开发中,对此有不小的进步.   > 多谢姚飞大侠上回的指点。但我在安装时还是碰到了问题。我选择了shadow,no pam,   > 还选了disk quota,结果出现   > quotas.c:38:sys/quota.h:No such file or director   > 这以后再不能编译了。我把选择该为 shadow no pam ,no quota,有编译,出现:   > cc:internal compoler error:program cc1 got fatal signal 6   > make :*** [smbpass.o] Error!   > 我再把shadow ,pam quota 等选项选来选去,总是这个错误都不变化了。好像以前编译   > 通过的就不编了只编译后面的。我怎样才能让它重新编译?   > slackware 3.4 kernel 2.0.30   > Thanks!   如果你用的是Slackware 3.4的话, 应该是shadow, no pam , no quota   大概从1.9.18p4开始就无法正常编译了,到了smbpass.o必定出这个错.   解决方法有几个:   1. 直接下载编译好的文件   2. 升级GCC到2.8.1, 或者 egcs-1.0.2   3. 升级到Slackware 3.5   > 本人单位财务部门需要装一台文件服务器,我安装了Redhat 5.1,用 Samba   > 作为文件服务器,客户端使用的是Win95,现在Win95已可以在网上邻居中找到   > 服务器,我将共享目录映射为F:盘,经过试验,大幅度地拷贝文件都没问题.   > 但是,因为财务软件是dos方式下的,当我执行F:\下的帐务程序时,一次、两次、   > 甚至数次都没问题,但是若干次后每个客户端都出现死机现象。我将Samba   > stop一下,再start就可以了,请问这是怎么一回事?以前用NT做服务器并没有   > 这样的现象。   俺原来用RH 4.2, kernel 2.0.30+ samba 1.9.16p11也有同样的问题update后就ok了,   现在俺用的是kernel 2.0.35 + samba 1.9.18p8

  • 相关阅读:
    luogu 1865 数论 线性素数筛法
    洛谷 2921 记忆化搜索 tarjan 基环外向树
    洛谷 1052 dp 状态压缩
    洛谷 1156 dp
    洛谷 1063 dp 区间dp
    洛谷 2409 dp 月赛题目
    洛谷1199 简单博弈 贪心
    洛谷1417 烹调方案 dp 贪心
    洛谷1387 二维dp 不是特别简略的题解 智商题
    2016 10 28考试 dp 乱搞 树状数组
  • 原文地址:https://www.cnblogs.com/myphoebe/p/2230068.html
Copyright © 2011-2022 走看看