Windows+LinuxNFS的配置(增加非root访问的权限)

来源:百度文库 编辑:神马文学网 时间:2024/04/27 21:19:44

你还在生产环境中用 samba 来给 Linux and windows 交换文件吗?
拜托~别这么土....!! 用NFS吧!!!

微软有个用于跟linux(Unix)互联互通的软件包SFU
这东西是需要单独下载而且安装的,而且以前还是收费,不过微软现在还总算是开恩了.
自该文章发稿的时候,最新版是 3.5
http://download.microsoft.com/download/a/1/c/a1ca7af1-a6e3-46e7-874a-4c5d8c0fb3b7/SFU35SEL_EN.exe

网上关于 SFU 安装的教程很多,这我也先转载一篇。但我主要跟大家分享的,是昨晚令我头脑风暴了一篇的用户权限问题。
环境是这样的。Linux + Windows,Linux 是 RedHat4.4 ,Windows 就是 Win2003。
Linux上奔跑着 Nginx 跟apache 而 Win2003 上也有apache 然后就是 NFS server for windows 
我顺利配好了 NFS for windows 的服务,也很顺利在 Linux 上mount 上了目录。
但问题就来了! 网上所有的教程说的都是 root 的访问! (因为都是转载) 就没有仔细说明权限这块是怎么弄的。这就在实际运用中有问题了。
由于Windiws那台服务器的硬盘比较充裕,所以我决定把Linux 上 Nginx上的一个文件下载站都移过去。使用NFS把windows中的目录映射到Linux本机,然后在Nginx中把这个站的目录就直接指向这个NFS的映射。

出问题了,打开的时候出现500错误。查看Nginx 的错误日志 error.log 。  "输入输出错误"

这下我明白什么问题了,Nginx.conf 里头, 我配的运行用户是 "apache"  所以Nginx往 NFS 目录读写的时候用的都是 "apache" 。由于我在 Win2003配置 NFS 的时候,按照网上的教程,密码文档中只有"root"与其UID以及属组。所以导致Linux上除了root用户以外其他的都不能访问。为了证实这点,我在ssh apache用户登陆。打开映射的NFS目录,果然再次出现 "输入输出错误"。

下边是转载的原文,我在关键的地方加了几句,分享给大伙们。

  

windows NFS 配置2007-11-22 11:06 

一、安装SFU

1、下载软件SFU http://download.microsoft.com/download/a/1/c/a1ca7af1-a6e3-46e7-874a-4c5d8c0fb3b7/SFU35SEL_EN.exe 2、编辑用户组group文件 和密码passwd文件 ,并复制到C:\
例如1:(原文内容)
----------------------------
passwd内容
root:x:0:0:root:/root:/bin/sh group内容
root:x:0:
---------------------------
例如2:(apache用户)
----------------------------
passwd内容
root:x:0:0:root:/root:/bin/sh
apache:x:500:500:apache:/home/apache:/bin/bash  
#其中500是代表apache这用户在Linux中的UID跟GID号, 后边的是该用户的登陆目录。
#查看UID跟GID 方法是 id apache , 而登陆目录就可以直接浏览/etc/passwd)
group内容
root:x:0:
apache:x:500:
#500是属组GID号,查看方法同上,严格按照格式。
--------------------------- 3、运行SFU35BETA_EN.exe,这是一个自解压文件,指定一个目录,释放压缩的文件。 4、在释放目录中,运行SfuSetup.msi,出现Micorsoft Windows Services for UNIX Setup wizard窗口。 5、点击Next,出现Customer Information窗口。 6、点击Next,出现License and Support Information窗口,选中“I accept the agreement”。 7、点击Next,出现Installation Options窗口。 8、选择Custom Installation,点击Next,出现Selecting Components窗口。 9、点击Utilities目录项,选择Entire feature will not be available,该项的图标变为一个棕色的叉号。 10、对“Interix GNU components”“Remote Connectivity”使用相同的选择。 11、点击NFS目录项,选择Entire Feature (including all subfeature if any) will be installed on local hard drive,该项的图标变为一个白色背景的驱动器。 12、 对“Authentication tools for NFS”使用相同的选择, 选择Entire Feature (including all subfeature if any) will be installed on local hard drive。 13、最终只有“Authentication tools for NFS”和“NFS”两项是完全安装,其他各项都不安装。 14、点击Next,出现User Name Mapping窗口,选中Password and group files。 15、点击Next,在Password file path and name下的空白栏中输入C:\passwd,在Group file path and name下的空白栏中输入C:\group。 16、点击Next,出现Installationg Location窗口,选择安装位置。 这里的安装位置的盘必须是NTFS格式 17、点击Next,开始安装(约21MB)。最后选择Finish,结束安装。如提示重启,则重启。 (以上安装过程比较简单,引用网络上文章。) 注:与卡巴斯基互联网套装6.0有冲突,需安装之前关闭卡巴斯基。 二、共享Windows主机目录    1、   不需重启,对NTFS格式盘中要共享的目录,右键点击出现下拉菜单,选择“属性”,出现目录属性窗口。 2、    选择“NFS Sharing”选项卡,选中share this folder;指定共享名(Share name,一个简单的名字,大小写无关,如dir);字符编码(Encoding)选择GB2312-80;选中Allow anonymous access;点击Permissions,出现NFS Share Permissions窗口,设置共享文件夹读写属性。 3、   在Type of access下拉菜单中选择Read-Write(可读可写);要使目标板对本机文件有root权限,选中Allow root access。 4、   设置完,点击OK按钮,回到目录属性窗口。 5、   点击“安全”选项,添加everyone,使之允许读取,控制,或者完全控制,如果没有“安全”选项请在资源管理器点“工具”---->“文件夹选项”,点击查看选项,将“使用简单文件共享(推荐)”前的勾去掉。目录属性窗口里就有安全选项了。 三、配置Services for UNIX Administration 1、选择开始->程序->Windows Services for Unix->Services for Unix Administration启动Services for UNIX Administration, 2、出现设置窗口后,点击 左边子窗口User Name Mapping,再点击标签栏“Map”,然后点击 show User Maps 3、在windows user name 和unix user name框中分别输入guest和root,然后点击add,则添加到mapped users中。       也可以点击上边的 [ List Windows User ] 跟 [ List UNIX User ] 列出所有用户,其中 UNIX 用户列表中显示的就是c:\passwd中的用户表。这里我们把apache 也添加过去,对应 windows 中的随便一个用户例如user 4、然后再点击 show group Maps, 在windows group name 和unix group name框中分别输入guests和root然后点击add,则添加到mapped groups中。这里同样也可以跟上方一样点击 List 添加用户组。
至此设置完毕 四、启动目标板,并在目标板上挂装Windows目录   将主机IP设为192.168.1.1,交叉线与目标板相连,启动目标板,主机启动tftp服务,运行mount命令来挂装NFS目录:        mount –t nfs –o nolock 192.168.1.1: share_name /mnt 如果要开机自动挂载,只需把这个命令写入 /etc/rc.local 即可 share_name为共享的目录名。显示一下目录内容,应为Windows机器上的共享NFS目录内容。 这样,我们编译好的程序便可以放入共享目录中,然后在目标板上运行。 例如:windows主机192.168.1.7 NFS共享了一个work目录,ARM板IP为192.168.1.9 二者通过交叉线连接,ARM板操作如下: [root@(none) /]$ [root@(none) /]$mount -t nfs -o nolock 192.168.1.7:work /mnt/nfs/ [root@(none) /]$cd /mnt/nfs/ [root@(none) nfs]$ls gpsdata  ll       test [root@(none) nfs]$./gpsdata handle Reading data from robot. [root@(none) nfs]$ 以上成功挂载了windows共享的work目录,并运行了gpsdata程序 注:如出现网络不通的问题,则应检查本地连接是否有防火墙,如有,则去掉防火墙保护。