CentOS 6下的NFS檔案共享服務搭建教程

介紹:
nfs是網路檔案系統。類似於samba,但不支援身份認證,只能透過ip地址來鑑別客戶端。
起初只可用於linux/unix系統,後來windows也可以使用nfs了。
安裝軟體:

[root@localhost ~]# yum install nfs-utils

配置服務:
nfs預設的配置檔案為/etc/exports,若不存在此檔案請手動建立。
編輯配置檔案

[root@localhost ~]# vim /etc/exports

向其中新增檔案共享,一條一行,格式:
要共享的資料夾 允許訪問的主機(訪問許可權) 允許訪問的主機2(訪問許可權)……….允許訪問的主機N(訪問許可權)…..
允許訪問的主機可以用IP來指定也可以用網段、主機名(NetBIOS需正常解析),支援萬用字元,需要注意的是——萬用字元只能用在主機名上,不可用於ip。
例如:

關於訪問許可權的詳細解釋如下(此處摘錄自《鳥哥的Linux私房菜——伺服器架設篇(第三版)》):

編輯完配置檔案後啟動服務即可,在正式啟動nfs服務前還需要把rpcbind這個服務給啟動了(已啟動則略過),否則nfs無法啟動。rpcbind服務主要是負責在nfs共享時候告訴客戶端伺服器的nfs埠號的。

[root@localhost ~]# service rpcbind start
[root@localhost ~]# service nfs start

修改共享配置檔案後既可以透過重啟服務使配置生效也可以透過如下命令使配置立即生效:

[root@localhost ~]# exportfs -arv

檢視當前NFS共享的目錄。

[root@localhost ~]# showmount -e     //若僅檢視已被客戶端掛載的目錄則使用-d引數替換-e引數。

目錄及檔案的許可權管理:
nfs伺服器設定目錄及檔案的使用者許可權在實際生產環境中沒有多大意義,因為客戶機和伺服器上的使用者雖然使用者名稱是相同的,但UID可能不同,而NFS是透過UID來區別使用者的,那就會產生問題啦!而且,就算在伺服器上對NFS共享中的某一個目錄設定了所有者,那客戶端上其實只要把隨便一個使用者的UID改成和目錄所有者的UID相同,就可以具有所有者的許可權啦,所以說,為NFS共享中的目錄及檔案設定許可權是完全沒有意義的事情。
客戶端掛載及解除安裝nfs:
參考此篇文章。

CentOS 6下掛載NFS共享的方法

CentOS 6下超實用的samba配置教程

介紹:
samba是在linux/unix上實現SMB協議的免費軟體,通俗來說就是讓linux/unix支援與windows間互相共享檔案。
安裝軟體包:

yum install -y samba

samba配置檔案介紹
samba配置檔案的存放路徑為

/etc/samba/

該目錄下有以下三個檔案:

lmhosts檔案中記錄著區域網中NetBIOS與IP地址的對應關係
smb.conf是samba的主配置檔案,其內容由全域性配置部分和共享配置部分組成。
smbusers檔案記錄著windowns中使用者與linux中使用者的對應關係,例如windows中的administrator管理員賬戶對應linux下的root使用者。
samba的配置:
在開始配置前,首先明確下需求:
1、user11和user12使用者可以透過samba共享來訪問自己的家目錄,且此共享僅本人可見。
2、建立三個共享,分別為share1、share2、share3,其共享的本地資料夾分別為/tmp/a1、/tmp/a2、/tmp/a3。
3、group1組的使用者user1對share1共享有全部許可權,group2組的使用者user2對share2有全部許可權,group3組的使用者user3對share1和share2共享都有全部許可權;對於share1和share2共享其他人有隻讀許可權;share3為公共儲存,所有人都有存取權。
4、所用使用者新建的檔案都是本人擁有全部許可權,其他人只有只讀許可權。
知道了需求,那麼現在就來根據需求來做具體配置吧:

vim /etc/samba/smb.conf                //使用vim文字編輯器開啟配置檔案

轉到第248行,可以看到如下內容,看開頭一行,[homes],home是家的意思,加s呢,變成複數了,可以理解成所有使用者的家,哈哈,感覺我像是在講英語。總之,透過配置此部分就可以滿足需求1了。

comment選項是用來新增一個文字描述的。
browseable選項定義他人是否可以看到此共享,yes為可以,no為不可以(僅自己可見)。
writable選項用來定義共享是否可寫。
valid users選項定義該共享規則對哪些使用者啟用。

看顯而易見,我們只要設定valid users選項,讓此共享配置僅對user11和user12使用者生效即可滿足需求1。

再來看需求2,新建三個共享,這個怎麼破?其實很簡單啦,配置檔案裡已經寫好了現成的,我們只需要複製成三份就好。
轉到配置檔案的末尾,可以看到以[public]關鍵字開頭的配置部分,這就是配置共享的模板。

複製前需要注意,這部分配置檔案預設被註釋掉了,如果你不想在複製完去一點點的刪除三份註釋符號的話那最好在複製之前把這一份註釋符號刪掉,如下圖:

三個共享有了,但他們的配置檔案是一摸一樣的,那共享名和共享的資料夾一定也是一樣的,要如何為每一個共享做定製呢?
先看這部分配置檔案的簡單介紹:

開頭的[public]是共享名,可任意起,與實際的共享資料夾可以不同名。
comment是沒用的文字介紹。
path是指定要共享的本地資料夾的路徑。
public是用來指定是否共享的,有yes和no兩個選項,至於這兩個選項分別是啥意思我就不囉嗦了。
writable用於配置此共享是否支援寫入。
printable指定是否支援列印,沒有特殊需求的話這裡都保持註釋狀態。
write list此選項用於決定哪些使用者或組對此共享擁有寫入許可權,此處一般保持註釋就好,因為linux的許可權管理可比samba的好用多了。

以下是按照需求2修改過的配置檔案,修改部分已經用紅筆標出來了,對照上方配置選項的解釋就可以輕鬆理解下圖的配置內容了。

許可權配置部分:
下面來看需求3,很明顯這裡是需要做許可權控制了。但我不得不嘮叨一下,samba自帶的許可權管理配置起來那是相當的蛋疼,而且功能弱爆了。所以這裡我們使用linux系統許可權管理加ACL來做許可權控制。
關於ACL的介紹可以參考:

linux下acl許可權詳解


在配置許可權前,我們先把所需要的使用者與組都建立完,並把他們加入到samba使用者資料庫中,再把要共享的資料夾都建立出來。
新建使用者:

useradd user11
useradd user12
useradd user1
useradd user2
useradd user3

新建組:

groupadd group1
groupadd group2
groupadd group3

將使用者加入組:

usermod -G group1 user1
usermod -G group2 user2
usermod -G group3 user3

將系統使用者加入到samba使用者資料庫中。

pdbedit -a user11
pdbedit -a user11
pdbedit -a user1
pdbedit -a user2
pdbedit -a user3

使用pebedit命令將系統使用者加入samba使用者資料庫中時會提示輸入兩次密碼,此密碼可以與linux系統使用者密碼不相同,加入成功後會出現類似如下提示:

建立共享的資料夾:

mkdir /tmp/a1
mkdir /tmp/a2
mkdir /tmp/a3

接下來就進入到了最重要的資料夾許可權配置階段了。
先來看/tmp/a1目錄的許可權配置。
將目錄所屬組改為group1

chown :group1 /tmp/a1

此時目錄/tmp/a1的許可權為:

此時group1組的成員對目錄是沒有寫許可權的,下面就賦予其讀寫執行的許可權:

chmod 775 /tmp/a1


此時group1組已經擁有了應有的許可權,但需求3裡面要求grou3組對該共享目錄也擁有全部許可權,這個就需要ACL來完成了。
執行如下命令:

setfacl -m g:group3:rwx /tmp/a1       //配置ACL許可權使group3組的成員對/tmp/a1目錄擁有全部許可權

此時檢視許可權:

注意許可權的最後多了一個+號,這證明ACL許可權已經生效了,再執行。

getfacl /tmp/a1         //檢視目錄的ACL許可權


只要有如上圖畫紅線的部分即是配置成功。
至此/tmp/a1這個目錄的全部許可權已經配置完成,而/tmp/a2目錄的許可權與/tmp/a1的許可權的配置方法雷同,這裡不再贅述。
再來看下/tmp/a3目錄的許可權,很簡單,給他777的許可權即可。

chmod 777 /tmp/a3

最後的最後,來看看需求4吧,就差這一個了。
這裡依然使用ACL許可權來完成需求,而不透過修改samba的配置檔案。
那要如何配置ACL呢?沒錯,只需要配置兩條預設ACL許可權即可。

setfacl -m d:u::rwx /tmp/a?    //這裡使用萬用字元為所有以a開頭而第二個字元為任意字元的資料夾配置許可權
setfacl -m d:g::rx /tmp/a?

以/tmp/a1資料夾的acl許可權為例:

getfacl /tmp/a1


可以看到如上圖中紅色標註的部分即為配置成功。
 
好啦,4個需求已經全部滿足了,盡情測試吧。

linux下acl許可權詳解

安裝軟體包

yum install -y acl

配置acl許可權
用於acl許可權管理的命令主要有兩個:

setfacl          //設定acl許可權
getfacl          //檢視acl權

首先來看setfacl
常用引數:

-b:刪除所有擴充套件的acl規則,基本的acl規則(所有者,群組,其他)將被保留。
-d:設定預設的acl規則
-R:遞迴的對所有檔案及目錄進行操作。
-m:修改檔案或目錄的acl規則。
-x:刪除指定acl規則。

以上只列出常用引數,詳細命令幫助可參考:http://man.linuxde.net/setfacl
舉個例子:想讓user1這個使用者對~/test目錄擁有全部許可權,除了修改所有者或所屬組之外還能怎樣呢?
且往下看。

setfacl -Rm u:user1:rwx ~/test             //使user1使用者對test目錄擁有全部許可權。

執行以上命令後user1使用者即可任意操作~/test目錄。
來看一下這條命令,setfacl,設定acl許可權、引數R代表遞迴應用,m修改許可權、u代表使用者,如果想賦予某個組acl許可權就用g,:後邊接的要賦予acl許可權的使用者名稱或組名(不填則修改所有者或所屬組的acl許可權),緊接著下一個冒號後面跟的就是要賦予這個使用者的許可權了、最後接要操作的目錄或檔名,就這麼簡單。
再來看一個例子:

setfacl -m d:u::rwx ~/test                //為test目錄下新建的檔案或目錄設定預設acl許可權,對所有使用者生效

如果寫成這樣:

setfacl -m d:u:user1:rwx ~/test

這條命令執行後可以達到什麼目的呢?我猜,聰明的讀者一定猜到了:是給user1建立的檔案或目錄設定預設acl許可權。
如果你是這樣想的,那麼恭喜你,猜錯了。
這條命令實際的意義其實是給所有使用者建立的檔案或目錄都加上user1這個使用者的rwx的acl許可權~
最後再來看下如何刪除acl許可權

setfacl -x d:u:user1 ~/test              //刪除~/test目錄中關於user1的預設acl許可權
setfacl -b ~/test                        //刪除~/test目錄上所有的acl許可權

檢視acl許可權
檢視acl許可權使用getfacl命令

getfacl ~/test                           //檢視~/test目錄的acl許可權

會輸入類似如下內容

另外,當我們執行ls -l時會發現,擁有acl許可權的檔案或資料夾其linux預設許可權後面多一個“+”號。

最後需要注意的是:linux預設許可權是優於acl許可權的,就是說當liux預設許可權和acl許可權同時存在時,系統會優先考慮linux預設許可權。

linux中root使用者無法刪除某個檔案的解決方法

root使用者登入,刪除檔案:

rm -f  a.txt

刪除不了,提示:

rm: cannot remove 'a.txt': Opreation not permitted

檢視許可權:

ls -l a.txt
-rwxr--r-- a.txt root root

發現root 使用者 有執行檔案的許可權
再使用 lsattr   命令檢視許可權:

lsattr a.txt
---i------------ a.txt

發現有一個 i 許可權,百度檢視此許可權,發現 I 許可權如下:
不能被刪除、改名、設定連結、寫入或新增資料;
使用   命令撤銷 i 許可權:

chattr -i a.txt

再檢視:

lsattr a.txt
--------------- a.txt

此時再刪除:

rm -f  a.txt

刪除成功。
本文來源:http://blog.csdn.net/ye1142262478/article/details/51152228