在Linux中也可以讀取Windows分區,包括fat32格式的和ntfs格式的。讓Linux系統啟動時有自動掛載windows分區許可權,可以命令寫入 /etc/fstab 文件中,下面是一個例子:
/dev/disk/by-id/ata-HITACHI_HTS723225L9SA61_FDE_090521FC1D20NJG943JG-part1/windows/Cntfs-3gusers,gid=users,fmask=133,dmask=022,locale=en_US.UTF-800
/dev/disk/by-id/ata-HITACHI_HTS723225L9SA61_FDE_090521FC1D20NJG943JG-part5/windows/Dntfs-3gusers,gid=users,fmask=133,dmask=022,locale=en_US.UTF-800
#/dev/disk/by-id/ata-HITACHI_HTS723225L9SA61_FDE_090521FC1D20NJG943JG-part6/windows/Entfs-3gusers,gid=users,fmask=133,dmask=022,locale=en_US.UTF-800
/dev/disk/by-id/ata-HITACHI_HTS723225L9SA61_FDE_090521FC1D20NJG943JG-part6/windows/Entfs-3gusers,gid=users,fmask=0,dmask=0,locale=en_US.UTF-800
/dev/disk/by-id/ata-HITACHI_HTS723225L9SA61_FDE_090521FC1D20NJG943JG-part7/windows/Fntfs-3gusers,gid=users,fmask=133,dmask=022,locale=en_US.UTF-800
默認掛載是 root 擁有讀寫許可權,當沒有執行許可權,其它用戶只有可讀許可權。
如上代碼掛載文件許可權設置解釋如下:
#dmask是目錄的mask,fmask是文件的mask
#mask是許可權掩碼,由3個八進制的數字所組成,
#當前訪問許可權去掉許可權掩碼所表示的許可權之後,
#即可產生建立文件時預設的許可權。
#第一位表示自己訪問的許可權
#第二位表示同組訪問的許可權
#第三位表示其他所有人訪問的許可權
#每位表示為二進制,又可以有三位,分別表示讀、寫和可執行。
#例如-r-----r-x表示文件
#自己可以讀,不能寫,不能執行
#同組人不能讀,不能寫,不能執行
#其他人可以讀,不能寫,可以執行
#因為掛載的是windows的盤符,是ntfs分區,
#linux為了安全起見,分區只讀,默認訪問模式為555
#可以執行可以讀但是不能寫入,而且中間一位不能改動。
B. 如何以NFS方式掛載根文件系統
用NFS方式掛載根文件系統
由於原來的內核是用ATBOOT的方式下載的,不知道怎麼傳遞參數(好像不能,網上查的nfs方式都是用U-boot的方式掛載的),因此決定用u-boot重新下載內核。
1.下載u-boot和內核
1.1編譯內核
1.1.1由於板子光碟自帶的內核觸摸屏驅動不是配套的,要修改驅動的一個宏定義
LCD driver info */<br/>//#define TFT3<br/>#define TFT_NEW3 //這是板子配套觸摸屏的參數<br/>//#define vga800480 //這是默認的參數,需要注釋掉<br/>//#define vga1024<br/>//#define vga800600
1.1.2修改參數
在arch/arm/mach-s3c2410/common-smdk.c 里的
static struct s3c2410_platform_nand smdk_nand_info = {<br/>.tacls = 10,<br/>.twrph0 = 30,<br/>.twrph1 = 10,<br/>...
原來是20,60,20,但這個參數會找不到nand flash,需要修改為上面幾個。否則得到的uImage 文件會下載運行不了。
1.1.3修改交叉編譯器
vi Makefile
找到
CROSS_COMPILE ?= arm-linux
這一行,將arm-linux-修改為交叉編譯器的路徑(Linux系統上交叉編譯工具的路徑為下)
/usr/local/arm/3.4.1/bin/arm-linux-
輸入:wq 保存並退出。
1.1.4編譯
make clean
make uImage
(在執行命令之前要執行make menuconfig,進行配置內核:
networking options-》IP:kernel level autoconfiguralion項
選中file systems-》network file systems-》下的root file system on nfs和nfs file system support
由於我解壓的是板子自帶的內核,發現這些都已經選中了,因此直接編譯即可,執行make uImage後,最後會提示一個錯誤,說不能創建某個文件,但我發現uImage已經生成了,就沒理會錯誤,直接拿來用了)
1.2下載u-boot和內核
1.2.1下載u-boot
1.2.1.1 SJF2440 環境設置(見前面部分圖文介紹)
下載u-boot用板子自帶工具SJF2440.exe,安裝其驅動,具體見說明文檔
1.2.1.2 燒寫u-boot.bin 到Nand flash 中
新建D:\atboot,把sjf2440.exe 和u-boot.bin復制到文件夾內
(sjf2440.exe 和u-boot.bin 必須在同一目錄下)
具體見說明文檔
1.2.1.3 利用u-boot下載uImage和文件系統到arm板上
由於板子自帶是用autoflash.img自動下載uImage和文件系統到arm板上,現在我還不太明白具體的地址,因此就自動把文件系統也下載上去了,但是這個文件系統不用,下面將用nfs掛載linux主機上的文件系統rootfs文件
具體見說明文檔
2. 用nfs掛載根文件系統
2.1 在虛擬機Linux上建立文件夾
/home/water/rootfs
把板子自帶的系統直接拷進rootfs文件夾內
2.2linux主機 配置nfs 文件系統
修改/etc/exports 文件,格式為共享目錄開發板ip 地址(許可權設置):cat <<EOM >/etc/exports
/home/water/rootfs *(rw,sync,insecure,no_root_squash)
重啟nfs 伺服器:
/etc/init.d/nfs restart
2.3 IP設置
XP:192.168.1.100
linux:192.168.1.128
arm:192.168.1.7(這個一會用U-boot給內核傳遞)
2.4 給u-boot傳遞參數
啟動u-boot,在倒計時結束前,按下空格鍵,進入輸入參數界面
輸入:
AVANTECH# set bootargs root=/dev/nfs
nfsroot=192.168.1.128:/home/water/rootfs rw noinitrd
init=/linuxrc ip=192.168.1.7:192.168.1.128:192.168.1.128:255.255.255.0:avantech:eth0:off console=ttySAC0,115200
(注:上面為一行代碼,只是可能自動換行的緣故,因此輸入是可以一部分一部分的復制)
AVANTECH# saveenv
AVANTECH# reset
2.5然後就ok了
C. 群暉載入Windows NFS目錄的許可權如何設置
群暉里設置共享目錄(設置讀寫許可權),然後載入Windows下的NFS目錄,載入成功後共享目錄的許可權被改為只讀,並且無法通過群暉界面修改,通過WinSCP訪問群暉,在屬性里也無法修改共享目錄的許可權!
D. NFS 深入配置
1.1 NFS配置參數許可權
參數名稱
參數用途
rw
read-write,表示可讀寫許可權
ro
read-only,表示只讀許可權
sync
請求或寫入數據時,數據同步寫入到硬碟才完成
async
非同步寫到遠程緩沖區
all_squash
不管客戶端什麼用戶,到服務端都會被壓縮成匿名用戶
anonuid
匿名用戶的UID
anongid
匿名用戶的GID
在配置文件內設置共享目錄時所給予的許可權:
[root@nfs01 ~]$ cat /etc/exports
/data 172.16.1.0/24(rw,sync) 10.0.0.0/24(ro)
配置好NFS服務後,/var/lib/nfs/etab文件中可以看到的配置參數以及默認自帶的參數:
[root@nfs01 ~]$ cat /var/lib/nfs/etab
/data
172.16.1.0/24(rw,sync,wdelay,hide,nocrossmnt,secure,root_squash,
no_all_squash,no_subtree_check,secure_locks,acl,no_pnfs,anonuid=65534,
anongid=65534,sec=sys,rw,secure,root_squash,no_all_squash
1.1.1 更改NFS默認用戶
1.1.1.1 nfs01服務端NFS、以及所有客戶端:
[root@nfs01 ~] id www
uid=1111(www) gid=1111(www) 組=1111(www)
1.1.1.2 服務端NFS特殊配置
配置文件增加如下內容:
[root@nfs01 ~]$ tail -2 /etc/exports
/data 172.16.1.0/24(rw,sync,all_squash,anonuid=1111,anongid=1111)
/data1 10.0.0.0/24(ro)
共享目錄更改用戶和用戶組:
[root@nfs01 ~] ls -ld /data
drwxr-xr-x 2 www www 70 4月 18 10:05 /data
1.1.1.3 服務端NFS重啟
[root@nfs01 ~]$ systemctl reload nfs
1.1.1.4 每個客戶端掛載
[root@web01 ~] df -h
文件系統 容量 已用 可用 已用% 掛載點
172.16.1.31:/data 19G 1.8G 18G 10% /data
新創建文件驗證用戶名:
[root@web01 /data]# touch new_web01.txt
[root@web01 /data]# ls -l
總用量 0
-rw-r--r-- 1 www www 0 4月 18 11:01 new_web01.txt
-rw-r--r-- 1 www www 0 4月 17 11:59 oldboy.txt
-rw-r--r-- 1 www www 0 4月 17 12:30 oldgirl.txt
1.2 NFS服務重點知識梳理
當多個NFS客戶端訪問伺服器端讀寫文件時,需要具有以下幾個許可權:
NFS伺服器/etc/exports設置需要開放許可寫入的許可權,即伺服器端的共享許可權
NFS伺服器實際要共享的NFS目錄許可權具有可寫入w的許可權,即伺服器端本地目錄的安全許可權
每台機器都對應存在和NFS默認配置UID的相同UID的用戶
下表列出了常用的重點NFS服務文件或命令。
NFS常用路徑
說明
/etc/exports
NFS服務主配置文件,配置NFS具體共享服務的地點,默認內容為空
/var/lib/nfs/etab
NFS配置文件的完整參數設定的文件
/proc/mounts
客戶端的掛載參數
1.3 NFS客戶端掛載深入
1.3.1 mount -o 參數選項及系統默認設置
參數
參數意義
系統默認值
suid/nosuid
當掛載的文件系統上有任何SUID的程序時,只要使用nosuid就能夠取消設置SUID的功能
suid
rw/ro
可以指定文件系統是只讀(ro)或可讀寫(rw)
rw
dev/nodev
是否可以保留裝置文件的特殊功能
dev
exec/noexec
是否具有執行文件的許可權
exec
user/nouser
是否允許用戶擁有文件的掛載與卸載功能
nouser
auto/noauto
auto指的是「mount -a」時會不會被掛載的項目,如果不需要這個分區隨時被掛載,可以設置為noauto
auto
1.3.2 mount -o 參數詳細說明
參數選項
說明
async
涉及文件系統I/O的操作都是非同步處理,即不會同步寫到磁碟,能提高性能,但會降低數據安全。
sync
有I/O操作時,都會同步處理I/O,會降低性能,但數據比較安全。
atime
在每一次數據訪問時,會更新訪問文件的時間戳,是默認選項,在高並發的情況下,可以通過添加noatime來取消默認項。
ro
以只讀的方式掛載一個文件系統
rw
以可讀寫的方式掛載一個文件系統
auto
能夠被自動掛載通過-a選項
noauto
不會自動掛載文件系統
defaults
這是fstab里的默認值,包括rw、suid、dev、exec、auto、nouser、async
exec
允許文件系統執行二進制文件,取消這個參數,可以提升系統安全性。
noexec
在掛載的文件系統中不允許執行任何二進製程序,進僅對二進製程序有效。
noatime
訪問文件時不更新文件的時間戳,高並發情況下,一般使用該參數
nodiratime
不更新文件系統上的directory inode時間戳,高並發環境,推薦顯式應用該選項,可以提高系統I/O性能。
nosuid
不允許set-user-identifier or set-group-identifier位生效。
suid
允許set-user-identifier or set-group-identifier位生效。
nouser
禁止一個普通用戶掛載該文件系統,這是默認掛載時的默認選項。
remount
嘗試重新掛載一個已經掛載了的文件系統,這通常被用來改變一個文件系統的掛載標志,從而使得一個只讀文件系統變的可寫,這個動作不會改變設備或者掛載點。當系統故障時進人single或rescue模式修復系統時,會發現根文件系統經常會變成只讀文件系統,不允許修改,此時該命令就派上用場了。具體命令為:mount -o remount,rw /,表示將根文件系統重新掛載使得可寫。single或rescue模式修復系統時這個命令十分重要。
dirsync
目錄更新時同步寫人磁碟。
1.3.3 企業生產場景NFS共享存儲優化
硬體:使用ssd/sas磁碟,可以買多塊,製作成raid10。
NFS伺服器端配置:
/data 10.0.0.0/24(rw,sync,all_squash,anonuid=65534,anongid=65534)
NFS客戶端掛載優化配置命令:
mount -t nfs -o nosuid,noexec,nodev,noatime,nodiratime,rsize=131072,
wsize=131072 172.16.1.31:/data /mnt <===兼顧安全性能
對NFS服務的所有伺服器內核進行優化,執行命令如下:
cat >>/etc/sysctl.conf <<EOF
net.core.wmen_default = 8388608
net.core.rmen_default = 8388608
net.core.wmen_max = 16777216
net.core.rmen_max = 16777216
EOF
執行sysctl -p 生效
大型網站NFS網路文件系統的替代軟體為分布式文件系統,如:Moosefs(mfs)、GlusterFS、FastDFS。
1.4 NFS系統應用的優缺點
1.4.1 優點
簡單,容易上手,容易掌握。
NFS文件系統內數據是在文件系統之上的,即數據是能看得見的。
部署快速維護簡單方便,且可控,滿足需求就是最好的。
可靠,從軟體層面上看,數據可靠性高,經久耐用。
服務非常穩定。
1.4.2 缺點(局限)
存在單點故障,如果NFS服務端宕機了,所有客戶端都不能訪問共享目錄。
在大數據高並發的場合,NFS效率、性能有限。
客戶端認證是基於IP和主機名的,許可權要根據ID識別,安全性一般。
NFS數據是明文的,NFS本身不對數據完整性進行驗證。
多台客戶機掛載一個NFS伺服器時,連接管理維護麻煩。
1.4.3 解決性能問題的方法
使用CDN加速以及自己搭建文件緩存服務(squid、nginx、varnish)。
把多個目錄分配到不同的NFS伺服器上。
棄用NFS(即讀寫分離)。
使用分布式文件系統。