你還在生產(chǎn)環(huán)境中用 samba 來(lái)給 Linux and windows 交換文件嗎?
拜托~別這么土....!! 用NFS吧?。?!
微軟有個(gè)用于跟linux(Unix)互聯(lián)互通的軟件包SFU
這東西是需要單獨(dú)下載而且安裝的,而且以前還是收費(fèi),不過(guò)微軟現(xiàn)在還總算是開(kāi)恩了.
自該文章發(fā)稿的時(shí)候,最新版是 3.5
http://download.microsoft.com/download/a/1/c/a1ca7af1-a6e3-46e7-874a-4c5d8c0fb3b7/SFU35SEL_EN.exe
網(wǎng)上關(guān)于 SFU 安裝的教程很多,這我也先轉(zhuǎn)載一篇。但我主要跟大家分享的,是昨晚令我頭腦風(fēng)暴了一篇的用戶(hù)權(quán)限問(wèn)題。
環(huán)境是這樣的。Linux + Windows,Linux 是 RedHat4.4 ,Windows 就是 Win2003。
Linux上奔跑著 Nginx 跟apache 而 Win2003 上也有apache 然后就是 NFS server for windows
我順利配好了 NFS for windows 的服務(wù),也很順利在 Linux 上mount 上了目錄。
但問(wèn)題就來(lái)了! 網(wǎng)上所有的教程說(shuō)的都是 root 的訪問(wèn)! (因?yàn)槎际寝D(zhuǎn)載) 就沒(méi)有仔細(xì)說(shuō)明權(quán)限這塊是怎么弄的。這就在實(shí)際運(yùn)用中有問(wèn)題了。
由于Windiws那臺(tái)服務(wù)器的硬盤(pán)比較充裕,所以我決定把Linux 上 Nginx上的一個(gè)文件下載站都移過(guò)去。使用NFS把windows中的目錄映射到Linux本機(jī),然后在Nginx中把這個(gè)站的目錄就直接指向這個(gè)NFS的映射。
出問(wèn)題了,打開(kāi)的時(shí)候出現(xiàn)500錯(cuò)誤。查看Nginx 的錯(cuò)誤日志 error.log 。 "輸入輸出錯(cuò)誤"
這下我明白什么問(wèn)題了,Nginx.conf 里頭, 我配的運(yùn)行用戶(hù)是 "apache" 所以Nginx往 NFS 目錄讀寫(xiě)的時(shí)候用的都是 "apache" 。由于我在 Win2003配置 NFS 的時(shí)候,按照網(wǎng)上的教程,密碼文檔中只有"root"與其UID以及屬組。所以導(dǎo)致Linux上除了root用戶(hù)以外其他的都不能訪問(wèn)。為了證實(shí)這點(diǎn),我在ssh apache用戶(hù)登陸。打開(kāi)映射的NFS目錄,果然再次出現(xiàn) "輸入輸出錯(cuò)誤"。
下邊是轉(zhuǎn)載的原文,我在關(guān)鍵的地方加了幾句,分享給大伙們。
一、安裝SFU1、下載軟件SFU 2、編輯用戶(hù)組group文件 和密碼passwd文件 ,并復(fù)制到C:\ 例如1:(原文內(nèi)容) ---------------------------- passwd內(nèi)容 root:x:0:0:root:/root:/bin/sh group內(nèi)容 root:x:0: --------------------------- 例如2:(apache用戶(hù)) ---------------------------- passwd內(nèi)容 root:x:0:0:root:/root:/bin/sh apache:x:500:500:apache:/home/apache:/bin/bash #其中500是代表apache這用戶(hù)在Linux中的UID跟GID號(hào), 后邊的是該用戶(hù)的登陸目錄。 #查看UID跟GID 方法是 id apache , 而登陸目錄就可以直接瀏覽/etc/passwd) group內(nèi)容 root:x:0: apache:x:500: #500是屬組GID號(hào),查看方法同上,嚴(yán)格按照格式。 --------------------------- 3、運(yùn)行SFU35BETA_EN.exe,這是一個(gè)自解壓文件,指定一個(gè)目錄,釋放壓縮的文件。 4、在釋放目錄中,運(yùn)行SfuSetup.msi,出現(xiàn)Micorsoft Windows Services for UNIX Setup wizard窗口。 5、點(diǎn)擊Next,出現(xiàn)Customer Information窗口。 6、點(diǎn)擊Next,出現(xiàn)License and Support Information窗口,選中“I accept the agreement”。 7、點(diǎn)擊Next,出現(xiàn)Installation Options窗口。 8、選擇Custom Installation,點(diǎn)擊Next,出現(xiàn)Selecting Components窗口。 9、點(diǎn)擊Utilities目錄項(xiàng),選擇Entire feature will not be available,該項(xiàng)的圖標(biāo)變?yōu)橐粋€(gè)棕色的叉號(hào)。 10、對(duì)“Interix GNU components”“Remote Connectivity”使用相同的選擇。 11、點(diǎn)擊NFS目錄項(xiàng),選擇Entire Feature (including all subfeature if any) will be installed on local hard drive,該項(xiàng)的圖標(biāo)變?yōu)橐粋€(gè)白色背景的驅(qū)動(dòng)器。 12、 對(duì)“Authentication tools for NFS”使用相同的選擇, 選擇Entire Feature (including all subfeature if any) will be installed on local hard drive。 13、最終只有“Authentication tools for NFS”和“NFS”兩項(xiàng)是完全安裝,其他各項(xiàng)都不安裝。 14、點(diǎn)擊Next,出現(xiàn)User Name Mapping窗口,選中Password and group files。 15、點(diǎn)擊Next,在Password file path and name下的空白欄中輸入C:\passwd,在Group file path and name下的空白欄中輸入C:\group。 16、點(diǎn)擊Next,出現(xiàn)Installationg Location窗口,選擇安裝位置。 這里的安裝位置的盤(pán)必須是NTFS格式 17、點(diǎn)擊Next,開(kāi)始安裝(約21MB)。最后選擇Finish,結(jié)束安裝。如提示重啟,則重啟。 (以上安裝過(guò)程比較簡(jiǎn)單,引用網(wǎng)絡(luò)上文章。) 注:與卡巴斯基互聯(lián)網(wǎng)套裝6.0有沖突,需安裝之前關(guān)閉卡巴斯基。 二、共享Windows主機(jī)目錄 1、 不需重啟,對(duì)NTFS格式盤(pán)中要共享的目錄,右鍵點(diǎn)擊出現(xiàn)下拉菜單,選擇“屬性”,出現(xiàn)目錄屬性窗口。 2、 選擇“NFS Sharing”選項(xiàng)卡,選中share this folder;指定共享名(Share name,一個(gè)簡(jiǎn)單的名字,大小寫(xiě)無(wú)關(guān),如dir);字符編碼(Encoding)選擇GB2312-80;選中Allow anonymous access;點(diǎn)擊Permissions,出現(xiàn)NFS Share Permissions窗口,設(shè)置共享文件夾讀寫(xiě)屬性。 3、 在Type of access下拉菜單中選擇Read-Write(可讀可寫(xiě));要使目標(biāo)板對(duì)本機(jī)文件有root權(quán)限,選中Allow root access。 4、 設(shè)置完,點(diǎn)擊OK按鈕,回到目錄屬性窗口。 5、 點(diǎn)擊“安全”選項(xiàng),添加everyone,使之允許讀取,控制,或者完全控制,如果沒(méi)有“安全”選項(xiàng)請(qǐng)?jiān)谫Y源管理器點(diǎn)“工具”---->“文件夾選項(xiàng)”,點(diǎn)擊查看選項(xiàng),將“使用簡(jiǎn)單文件共享(推薦)”前的勾去掉。目錄屬性窗口里就有安全選項(xiàng)了。 三、配置Services for UNIX Administration 1、選擇開(kāi)始->程序->Windows Services for Unix->Services for Unix Administration啟動(dòng)Services for UNIX Administration, 2、出現(xiàn)設(shè)置窗口后,點(diǎn)擊 左邊子窗口User Name Mapping,再點(diǎn)擊標(biāo)簽欄“Map”,然后點(diǎn)擊 show User Maps 3、在windows user name 和unix user name框中分別輸入guest和root,然后點(diǎn)擊add,則添加到mapped users中。 也可以點(diǎn)擊上邊的 [ List Windows User ] 跟 [ List UNIX User ] 列出所有用戶(hù),其中 UNIX 用戶(hù)列表中顯示的就是c:\passwd中的用戶(hù)表。這里我們把a(bǔ)pache 也添加過(guò)去,對(duì)應(yīng) windows 中的隨便一個(gè)用戶(hù)例如user 4、然后再點(diǎn)擊 show group Maps, 在windows group name 和unix group name框中分別輸入guests和root然后點(diǎn)擊add,則添加到mapped groups中。這里同樣也可以跟上方一樣點(diǎn)擊 List 添加用戶(hù)組。 至此設(shè)置完畢 四、啟動(dòng)目標(biāo)板,并在目標(biāo)板上掛裝Windows目錄 將主機(jī)IP設(shè)為192.168.1.1,交叉線與目標(biāo)板相連,啟動(dòng)目標(biāo)板,主機(jī)啟動(dòng)tftp服務(wù),運(yùn)行mount命令來(lái)掛裝NFS目錄: mount –t nfs –o nolock 192.168.1.1: share_name /mnt 如果要開(kāi)機(jī)自動(dòng)掛載,只需把這個(gè)命令寫(xiě)入 /etc/rc.local 即可 share_name為共享的目錄名。顯示一下目錄內(nèi)容,應(yīng)為Windows機(jī)器上的共享NFS目錄內(nèi)容。 這樣,我們編譯好的程序便可以放入共享目錄中,然后在目標(biāo)板上運(yùn)行。 例如:windows主機(jī)192.168.1.7 NFS共享了一個(gè)work目錄,ARM板IP為192.168.1.9 二者通過(guò)交叉線連接,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目錄,并運(yùn)行了gpsdata程序 注:如出現(xiàn)網(wǎng)絡(luò)不通的問(wèn)題,則應(yīng)檢查本地連接是否有防火墻,如有,則去掉防火墻保護(hù)。 |
聯(lián)系客服