在linux中系統中,它並不認識賬號名稱。它認識的是咱們的賬號ID,賬號ID保存在/etc/passwd文件中。咱們在登陸linux主機時,在輸入完賬號和密碼時,linux會先查找/etc/passwd文件中是否有這個賬號,若是沒有則跳出,若是有的話,他會讀取該賬號的user ID和group ID同時該賬號的根目錄和shell也讀了出來。而後在去核對密碼錶,在/etc/shadow中找出咱們剛剛輸入的賬號和userID,覈對咱們輸入密碼是否正確。一切正確咱們能夠登陸到當前用戶shell。那麼,咱們首先了解一下用戶賬號文件。node
1./etc/passwd咱們使用more查看一下這個文件
linux
咱們首先看第一行root這一行,一共有七項,每一項使用:分開,他們表明的意思以下:
shell
賬號名稱:賬號名稱因爲對應用戶ID,這個是系統默認用戶root超級管理員,在同一個系統賬號名稱是惟一的,長度根據不一樣的linux系統而定,通常是8位。安全
密碼:因爲系統中還有一個/etc/shadow文件用於存放加密後的口令,因此在這裏這一項是「x」來表示,若是用戶沒有設置口令,則該項爲空。bash
用戶ID:這個是系統內部用於來識別不一樣的用戶的,不一樣的用戶識別碼不一樣,其中用戶ID有如下幾種:服務器
0表明系統管理員,若是你想創建一個系統管理員的話,能夠創建一個普通賬戶,而後將該帳戶的用戶ID改成0便可。編輯器
1-500系統預留的ID,500以上是普通用戶使用。工具
組ID:其實這個和用戶ID差很少,用來規範羣組,他與/etc/group有關。測試
描述信息:這個字段幾乎沒有什麼做用,只是用來解釋這個賬號的意義。通常常見的是用戶全名信息。-ui
用戶根目錄:就是用戶登陸系統的起始目錄,用戶登陸系統後將首先進入該目錄。root用戶默認的是/root,普通用戶的是/home/用戶名。
用戶登陸shell:就是用戶登陸系統時使用的shell,關於shell咱們會在之後專門的研究一下。
一般咱們可使用vi編輯這個文件,也可使用vipw命令對/etc/passwd對這個用戶賬戶文件進行編輯,使用的編輯器是vi。
2./etc/shadow
在早期的unix操做系統中,用戶的賬號信息和口令信息都保存在passwd文件中,儘管系統已經對口令進行了加密,而且以密文的方式保存在passwd文件中,可是因爲passwd文件對於系統中的全部用戶是可讀的,口令比較容易破解,存在較大的安全隱患。如今使用「shadow」文件保存密文的用戶口令,使用passwd文件保存用戶賬號其它信息。「shadow」文件只有管理員用戶才能夠讀取其中的內容。因爲這個文件可能被破解,因此必定不要將該文件內容泄露給他人,保證系統安全。
賬戶名稱:和passwd對應,和passwd的意思相同。
密碼:這纔是真正的密碼,而且已經加密過了,只能看到一些特殊符號。須要注意的是這些密碼很難破解,可是不等於不能。還有密碼欄的第一個字符爲「*」表示這個用戶不用來登陸,若是那個用戶不想讓他登陸了,能夠在他前面加個星。
上次改動密碼的日期:這段記錄了改動密碼的最後日期,爲何是13798呢?這是由於linux計算日期的方法是以1970年1月1日做爲1,1971年1月1日就是366,依次類推到我修改密碼的日期表示爲13798了。
密碼不可被改動的天數:這個字段表明要通過多久才能夠更改密碼。若是是「0」表明密碼能夠隨時更改。
密碼須要從新更改天數:因爲懼怕密碼被人盜取而危害到整個系統的安全,因此安排了這個字段,你必須在這個時間內從新修改密碼,不然這個賬號將暫時失效。上面的99999,表示密碼不須要從新輸入,最好設定一段時間修改密碼。確保系統安全。
密碼變動期期限快到前的警告期:當賬號的密碼失效期限快到時,系統依據這個字段的設定發出警告,提醒用戶「再過n天您的密碼將過時,請儘快從新設定密碼。默認的是七天。
賬號失效期:若是用戶過了警告期沒有從新輸入密碼,使得密碼失效,而該用戶在這個字段限定的時間內又沒有向管理員反映,讓賬號從新啓用,那麼這個賬號將暫時失效。
賬號取消日期:這個日期跟第三個字段同樣,都是使用1970年以來的日期設定方法。這個字段表示:這個賬號在此字段規定的日期以後將沒法再使用。這個字段一般用於收費服務系統中,能夠規定一個日期讓該賬號不能再使用。
保留:最後一個字段是保留的,看之後有沒有新功能加入。
3. /etc/group查看一下這個文件
咱們仍是分析第一行,一共有四項,依次爲:
羣組名稱:就是羣組的名稱了。
羣組密碼:一般不需設定,由於咱們不多使用羣組登陸。不過這個密碼也被記錄在/etc/shadow中了。
羣組ID:也就是組ID了。
支持賬號的名稱:這個羣組的全部賬號。若是你想讓用戶qiuri也屬於root這個羣組,就在第一行最後加上「,qiuri」注意添加的時候沒有空格。
一般咱們使用vi編輯這個文件,也可使用vigr這個命令編輯,等同於使用vi /etc/group編輯。
4. adduser添加用戶
若是沒有特殊的要求,一般咱們使用adduser 用戶名稱直接建立用戶賬號。例如咱們建立qiuri賬戶:
因爲通常新建立的賬號都會在剛纔咱們說的三個文件的最後一行添加一行內容,咱們驗證一下:
咱們使用這條命令是經過/etc/login.defs和/etc/default/useradd這兩個默認賬號設定文件來實現建立用戶時用戶的基本設置的。/etc/login.defs文件內容以下:
/etc/default/useradd文件內容以下:
這個文件中咱們有必要了解一下,SKEL這個選項,用戶的根目錄內容是從/etc/skel這個目錄下複製過去的。在手動添加用戶的時候有用。查看一下這個目錄下的內容:
這條命令還有好多的參數舉例幾個,供你們參考一下:
adduser [-u uid][-g group][-d home][-s shell]
-u:直接給出userID -g:直接給出GID
-d:直接將根目錄創建在已存在目錄 -s:定義shell
5.passwd設置用戶密碼
默認的狀況下,在添加完用戶後並無設置用戶的密碼,所以創建的用戶賬號即便存在也不能登錄系統。須要使用passwd命令對用戶賬號設置密碼才能夠用於登錄系統。這條命令分爲管理員給用戶修改密碼和用戶本身登陸系統本身修改密碼。
管理員root給用戶修改密碼,例如:建立用戶qiuri,而後設置密碼
管理員給用戶設置密碼以命令passwd [用戶名]來設置密碼,在輸入密碼的過程當中爲了不輸入錯誤,將連續輸入兩次。若是兩次輸入的密碼相同,表示輸入的密碼正確,同時將密碼以加密的方式保存到了shadow文件中。設置完之後咱們可使用用戶qiuri登陸。qiuri用戶本身修改一下密碼:
咱們已經明白經過命令useradd每建立一個用戶都會在相應的配置文件中添加相關的信息和建立用戶的宿主目錄。其實今天要和你們說的是和用戶相關的linux安全問題,在安全中有一種技術人們稱它爲「後門」技術,其實就是說一些「小黑」,入侵到服務器後獲得root權限,最多見的就是添加一個用戶方便往後來訪。雖然這是一個初級的技術,可是這個可以看出你對/etc/passwd和/etc/shadow文件的熟悉程度。
若是你是黑客的話,入侵到一個系統後,你爲了防止管理員修改密碼致使你不能登陸,而你去修改密碼,這不是明擺着要通知管理員他的系統已近被入侵了,因此這個時候能夠經過編輯passwd和shadow文件來實現以下內容:
[root@qiuri ~]#echo "admin:x:0:0::/usr/src:/bin/bash" >> /etc/passwd
[root@qiuri ~]#echo "admin:!!:14143:0:99999:7::: " >> /etc/shadow
經過以上兩條命令能夠添加一個UID爲0的具備管理員權限的帳戶,也能夠編輯配置文件手工輸入,固然,這裏小黑們會盡可能的掩蓋本身建立的這個帳戶,首先用戶名稱通常會選擇一個相似系統應用程序的帳戶,用戶的主目錄也不會和其它帳戶同樣放在/home下。總之儘可能的逃過哪些粗心的管理員。
固然,尚未設置密碼是不可以經過遠程能夠鏈接上服務器的,這個時候用passwd來設置一下:輸入要設置的密碼,以後查看/etc/shadow配置文件後密碼位已近成爲md5加密的亂碼。
[root@qiuri ~]# passwd admin
[root@qiuri ~]# grep admin /etc/shadow
admin:$1$1IoPDSJW$3NxLHwcXeutWT1lIMb4Zy1:14163:0:99999:7:::
這個時候咱們能夠測試一下登陸,這個時候咱們沒有必要退出後再登陸,咱們可使用su命令切換用戶,你們在使用這條命令的時候最多見的問題以下:
[root@qiuri ~]# su admin
bash-3.1#
[root@qiuri ~]# su – admin
bash-3.1#
咋看起來這兩條命令沒有什麼區別,當咱們使用su admin命令的時候,咱們輸入一個認爲可用的命令的時候會獲得「command not found」的錯誤信息。是因爲su命令不能在根用戶環境中的讀操做。爲了解決這個問題,只能在給su命令添加一個」–」的選項,也就是su – admin這樣的格式。咱們使用pwd查看一下這兩個命令的區別:
[root@qiuri ~]# su admin
bash-3.1# pwd
/root
bash-3.1# su - admin
-bash-3.1# pwd
/usr/src
看到了吧,其實這兩個命令的區別就是:使用su命令切換用戶後,不會修改當前登陸會話的目錄或者環境;而su – 後,一般會修改用戶的登陸目錄爲用戶本身的根目錄,而且用戶本身的變量也可使用了。或許有人還有疑問爲什麼提示符爲」-bash-3.1#」了,其實這個」-bash-3.1」不是關鍵,主要是看」#」和」$」來區別用戶的類型。這裏變爲」-bash-3.1」的緣由是咱們建立的admin用戶沒有本身的初始配置文件,咱們使用命令建立用戶的時候都會從/etc/skel這個目錄中複製到用戶的宿主目錄。這裏查看一下這個配置文件:
[root@qiuri ~]# ls -al /etc/skel/
total 48
drwxr-xr-x 2 root root 4096 09-18 21:26 .
drwxr-xr-x 94 root root 12288 10-11 20:27 ..
-rw-r--r-- 1 root root 24 2006-07-12 .bash_logout
-rw-r--r-- 1 root root 176 2006-07-12 .bash_profile
-rw-r--r-- 1 root root 124 2006-07-12 .bashrc
[root@qiuri ~]#
咱們看到這些都是一下隱藏文件,這些文件是用於用戶的環境變量的shell腳本,用戶登陸後能夠修改這些文件。我在之後的文章中詳細介紹這些文件的用途。
那咱們就將這些文件複製過去看看:
[root@qiuri ~]# cp -r /etc/skel/.* /usr/src
[root@qiuri ~]# su - admin
[root@qiuri ~]# pwd
/usr/admin
固然,經過這種方法建立的後門用戶很容易被細心的管理員發現,可是若是你對這些配置文件不是很熟悉的話也是很難發現問題。這就是火能助人,也能殺人的道理。
當發現這樣的用戶,咱們須要作的是將其刪除,刪除用戶的命令是userdel。
1)userdel命令用於刪除linux系統中的用戶帳號,命令格式以下:
userdel [-r] user_name
通常,在使用這條命令的時候,若是不添加」-r」的話,不會刪除用戶的宿主目錄,這樣就能夠保存該用戶在系統中的文件,要是想刪除的話咱們能夠手工的去刪除該目錄。可是你已經確認該宿主目錄中的文件能夠刪除,直接使用」-r」這樣就能夠一次性的刪除用戶操做。
[root@qiuri ~]#userdel –r admin
2)手工刪除用戶
手工刪除一個用戶須要執行以下步驟:
從/etc/passwd、/etc/shadow、/etc/group配置文件中刪除該用戶的相關條目,以後刪除該用戶的宿主目錄。
可是,在咱們工做的過程當中,爲了提升系統的安全性最經常使用的就是禁用和啓用帳戶。可使用usermod命令來禁用帳號:
[root@qiuri ~]# grep u1 /etc/shadow #禁用前查看一下
u1:$1$66svsu0z$9yg1bwziK2rXvnYiUH9HB1:14163:0:99999:7:::
[root@qiuri ~]# usermod -L u1 #禁用帳號
[root@qiuri ~]# grep u1 /etc/shadow #再次查看一下,發現多出一個"!",代表用戶已禁用
u1:!$1$66svsu0z$9yg1bwziK2rXvnYiUH9HB1:14163:0:99999:7:::
[root@qiuri ~]#
當因工做須要的時候,能夠將已禁用的帳號u1從新啓用,命令以下:
[root@qiuri ~]# usermod -U u1 #從新啓用帳號
[root@qiuri ~]# grep u1 /etc/shadow #發現"!"已經移除,代表用戶已啓用
u1:$1$66svsu0z$9yg1bwziK2rXvnYiUH9HB1:14163:0:99999:7:::
[root@qiuri ~]#
從上邊的操做能夠看出usermod命令禁用和啓用帳號功能是經過在/etc/shadow 配置文件中,在用戶密碼位以前添加和刪除"!"實現的。固然也可使用手工添加或刪除"!"來實現效果。
不知道你們還記不記得我在上一篇文章中提到能夠經過設置shadow文件中的「帳號失效期」來設置帳號的有效期限。這裏也可使用usermod命令實現,命令格式以下:
usermod –e YYYY-MM-DD name
經過這個命令能夠設置用戶帳號的過時時間,就是說在此日期以前用戶帳戶生效,過了這個日期後用戶將禁止登陸。設置後以下所示:
[root@qiuri ~]# usermod -e 2008-10-18 u1 #設置帳號過時時間
[root@qiuri ~]# grep u1 /etc/shadow #驗證結果
u1:$1$66svsu0z$9yg1bwziK2rXvnYiUH9HB1:14163:0:99999:7::14170:
[root@qiuri ~]#
在實際的管理工做中,若是咱們一個一個的去管理帳號的話,無形中會增長咱們大量的管理負擔和形成沒必要要的錯誤。可使用「用戶組」來解決這些問題。那麼什麼是「用戶組」呢?用戶組就是一個具備相同特性的用戶集合,在同一個組中的全部用戶具備相同的組權限。通常狀況下咱們使用useradd建立用戶的時候會建立和用戶同名的用戶組,可是有些時候咱們須要單獨的建立用戶組,可使用groupadd命令實現?命令格式以下:
groupadd [-g gid [-o]] [-r] [-f] group
咱們建立一個qiuri組爲例:
[root@qiuri ~]# groupadd qiuri #添加用戶組
[root@qiuri~]# grep qiuri /etc/group #驗證是否建立成功
qiuri:x:501:
若是咱們要建立一個xifeng組同時組ID爲1000
[root@qiuri ~]# groupadd -g 1000 xifeng #添加組ID爲1000的用戶組
[root@qiuri ~]# grep xifeng /etc/group #驗證結果
xifeng:x:1000:
咱們會建立組了,可是如何將用戶添加到相應的組呢?通常有如下幾種狀況?
1) 建立用戶的時候指定用戶屬於那個用戶組
例如:咱們建立一個test用戶,同時這個用戶屬於qiuri組,這個時候系統就不會再創建與用戶名同名的用戶組帳號了。命令格式:
uersadd -g group_name user_name
建立過程:
[root@qiuri ~]# grep qiuri /etc/group #確認用戶組qiuri是否存在
qiuri:x:1001:
[root@qiuri ~]# useradd -g qiuri test #將建立用戶指定到qiuri組
[root@qiuri ~]# grep test /etc/passwd #查看用戶是否建立成功,是否屬於組qiuri。
test:x:510:1001::/home/test:/bin/bash
[root@qiuri ~]# grep qiuri /etc/group
qiuri:x:1001:
說明:驗證用戶屬於那個組的時候也可使用命令groups user_name來查詢。
2)更改用戶的用戶組
通常何時須要更改用戶組呢?例如:咱們在建立用戶的時候忘記指定用戶屬於那個用戶組,這個時候咱們執行此命令。可使用usermod –g來更新組的名稱,這裏咱們將test用戶從qiuri組更改到xifeng組。命令格式:
uermod –g group_name user_name
更改過程:
[root@qiuri ~]# usermod -g xifeng test #更改用戶所屬於的組
[root@qiuri ~]# grep test /etc/passwd #確認用戶組ID是否發生變化
test:x:510:1000::/home/test:/bin/bash
[root@qiuri ~]# grep xifeng /etc/group #確認組ID爲1000的組是不是xifeng。
xifeng:x:1000:
[root@qiuri ~]#
3) 將用戶添加到其它組
一個用戶能夠同時屬於多個組,例如:test用戶同時屬於qiuri和xifeng組,能夠經過usermod –G命令來實現。注意:這條命令執行的前提條件是確認該用戶是否存在,也就是說是將已有用戶添加到相應的組。命令格式:
usermod –G group_name user_name
方法1、添加過程:
[root@qiuri ~]# usermod -G qiuri test #讓用戶test同時屬於qiuri組
[root@qiuri ~]# grep test /etc/passwd #查看一下用戶配置文件,無變化
test:x:510:1000::/home/test:/bin/bash
[root@qiuri ~]# egrep 'qiuri|xifeng' /etc/group
#查看一下用戶組配置文件中關於xifeng和qiuri組。我的認爲使用groups test命令查看更方便些。
xifeng:x:1000:
qiuri:x:1001:test
[root@qiuri ~]#
或者使用gpasswd命令,命令格式以下:
gpasswd –a user_name group_name
方法2、添加過程:
[root@qiuri ~]# gpasswd -a test qiuri #讓用戶test同時屬於qiuri組
Adding user test to group qiuri
[root@qiuri ~]# egrep 'qiuri|xifeng' /etc/group #驗證結果
xifeng:x:1000:
qiuri:x:1001:test
[root@qiuri ~]# grep test /etc/passwd
test:x:510:1000::/home/test:/bin/bash
[root@qiuri ~]#
當咱們須要修改組的名稱的時候可使用groupmod -n實現,命令格式:
groupmod -n new_group_name old_ group_name
例如:將組qiuri更改成qiurixifeng
[root@qiuri ~]# groupmod -n qiurixifeng qiuri #修改組名稱
[root@qiuri ~]# grep qiuri /etc/group #確認結果
qiurixifeng:x:1001:test
[root@qiuri ~]#
和組名稱對應的就是用戶名稱,咱們能夠usermod –l修改用戶名稱,命令格式以下:
usermod –l new_user_name old_ user_name
[root@qiuri ~]# usermod -l qiuri test #修改用戶名稱
[root@qiuri ~]# grep qiuri /etc/passwd #驗證結果
qiuri:x:501:501::/home/test:/bin/bash
最後要介紹刪除組的命令groupdel,命令格式以下:
groupdel group_name
[root@qiuri ~]# egrep 'qiuri|xifeng' /etc/group #查看一下qiuri和xifeng組是否存在
qiuri:x:1001:
xifeng:x:1000:
[root@qiuri ~]# groupdel qiuri #刪除qiuri組
[root@qiuri ~]# groupdel xifeng #刪除xifeng組
[root@qiuri ~]# egrep 'qiuri|xifeng' /etc/group #確認結果
[root@qiuri ~]#
咱們已經能夠經過建立不一樣的用戶來防止其餘人使用本身的帳號,以後每一個帳戶對應一個單獨的用戶密碼,構成了一個基本的用戶管理思路。爲了方便管理還可使用組來設置相同屬性的用戶。那麼設置這些究竟是爲了什麼呢?今天就揭開它的面紗。
Linux系統是一個典型的多用戶操做系統,不一樣的用戶處於不一樣的地位,爲了保護系統的安全性,linux系統對於不一樣用戶訪問同一個文件或目錄作了不一樣的訪問權限控制。
咱們是否還記得查看文件權限的命令,爲了便於你們理解首先我建立以下所示文件和目錄並查看相應的權限。
[user@qiuri ~]$ mkdir qiuri
[user@qiuri ~]$ touch xifeng
[user@qiuri ~]$ ls -l
總計 4
drwxrwxr-x 2 user user 4096 07-13 15:17 qiuri
-rw-rw-r-- 1 user user 0 07-13 15:17 xifeng
[user@qiuri ~]$
咱們拿qiuri這個目錄分析一下輸出的結果的含義,首先將它從左邊開始分爲7個部分,以下圖所示:
第一個部分:文件類型和文件權限,其中第一個字符是文件的類型標誌,後9個爲權限標誌。經過第一位確認文件屬於那種類型。說道文件類型在Windows中,常見的文件類型有file.txt、file.doc、file.mp3等,根據文件的後綴名判斷該文件的類型,在Linux中,一個文件主要看他是否可以執行與後綴沒有太大的關係,主要看文件的屬性有關。
在linux中常見的文件類型有:
「—」表示普通文件,例如:
[root@qiuri ~]# ls -l install.log
-rw-r--r-- 1 root root 41727 07-13 02:56 install.log
輸出的第一個標誌位是「-」,這樣的文件在Linux 中就是普通文件。這些文件通常是用一些相關的應用程序建立,好比圖像工具、文檔工具、歸檔工具... .... 或 cp工具等。這類文件的刪除方式是用rm 命令。
「d」表示目錄,例如:
[root@qiuri ~]# ls -l /root
總計 84
-rw------- 1 root root 882 07-13 02:56 anaconda-ks.cfg
drwxr-xr-x 2 root root 4096 07-13 03:18 Desktop
-rw-r--r-- 1 root root 41727 07-13 02:56 install.log
-rw-r--r-- 1 root root 4182 07-13 02:50 install.log.syslog
-rw-r--r-- 1 root root 209 07-13 03:14 scsrun.log
當某個目錄下看到有相似 drwxr-xr-x ,這樣的文件就是目錄,目錄在Linux 是一個比較特殊的文件。注意它的第一個字符是d。建立目錄的命令能夠用 mkdir 命令,或cp 命令,cp 能夠把一個目錄複製爲另外一個目錄。刪除用rm 或rmdir 命令
「b」表示塊設備文件,例如:
[root@qiuri ~]# ls -l /dev/sda
brw-r----- 1 root disk 8, 0 07-13 05:57 /dev/sda
咱們看到 /dev/sda 的屬性是 brw-rw---- ,注意前面的第一個字符是b,這表示塊設備,好比硬盤,光驅等設備。
「c」表示字符設備文件
[root@qiuri ~]# ls -l /dev/tty
crw-rw-rw- 1 root tty 5, 0 07-13 05:58 /dev/tty
咱們看到/dev/tty的屬性是 crw-rw-rw-,注意前面第一個字符是 c ,這表示字符設備文件。好比貓等串口設備。
「l」 表示符號連接
[root@qiuri ~]# ls -l /etc/rc.local
lrwxrwxrwx 1 root root 13 07-13 02:09 /etc/rc.local -> rc.d/rc.local
查看文件屬性時,會看到有相似 lrwxrwxrwx,注意第一個字符是l,這類文件是連接文件。這和Windows 操做系統中的快捷方式有點類似。通常連接有兩種:硬鏈接和符號連接。
首先咱們要明白,在Linux系統中每個存儲設備(硬盤、U盤),格式化後,分爲Inode和Block兩個部分。內核爲每個新建的文件分配一個Inode(索引結點),每一個文件都有一個唯一的inode號。文件屬性(文件的全部者、存取模式、類型、建立或修改時間、文件真正內容的指向等)保存在索引結點裏,在訪問文件時,索引結點值被複制到內存中,快速找到真正內容指向(pointer)指向數據內容放置的區塊(Block)之中,從而實現文件快速的找到該文件。
硬連接是直接指向索引結點(Inode)的指針,系統不會從新分配給它新的Inode。可是建立時需注意:連接文件和被連接文件必須位於同一個文件系統中,而且不能創建指向目錄的硬連接。默認狀況下,ln名稱建立的即是硬連接。命令格式:
ln source(源文件名)dist(目的文件名)
例如:
[user@qiuri ~]$ ls -il #查看文件屬性並顯示文件lnode號
total 4
354552 drwxrwxr-x 2 user user 4096 07-13 17:34 qiuri
354553 -rw-rw-r-- 1 user user 0 07-13 17:34 xifeng
[user@qiuri ~]$ ln xifeng qiurixifeng #建立文件xifeng的硬連接qiurixifeng
[user@qiuri ~]$ ls -il #驗證結果,結果代表建立硬連接系統沒有分配新的lndoe
total 4
354552 drwxrwxr-x 2 user user 4096 07-13 17:34 qiuri
354553 -rw-rw-r-- 2 user user 0 07-13 17:34 qiurixifeng
354553 -rw-rw-r-- 2 user user 0 07-13 17:34 xifeng
[user@qiuri ~]$ ln qiuri qiurixifeng #建立目錄qiuri的硬連接,提示不容許硬連接指向目錄
ln: `qiuri': hard link not allowed for directory
[user@qiuri ~]$
軟鏈接又稱符號連接克服了硬連接的不足,不受文件系統的限制,能夠建立指向目錄的符號連接。所以咱們大多數使用符號連接。建立符號連接的時候只須要在ln後加上-s選項便可。
例如:
[root@qiuri ~]# ln -s /home/user/qiuri qiuri #給root用戶建立符號連接qiuri,連接到/home/user/qiuri
[root@qiuri ~]# ln -s /home/user/xifeng xifeng #建立符號連接xifeng,提示「文件已存在」的錯誤信息。
ln: creating symbolic link `xifeng' to `/home/user/xifeng': File exists
[root@qiuri ~]# ls -l #查看一下當前目錄下的文件,發現當前目錄下已存在一個同名文件。
total 80
-rw------- 1 root root 882 Jul 13 02:56 anaconda-ks.cfg
drwxr-xr-x 2 root root 4096 Jul 13 03:18 Desktop
-rw-r--r-- 1 root root 41727 Jul 13 02:56 install.log
-rw-r--r-- 1 root root 4182 Jul 13 02:50 install.log.syslog
lrwxrwxrwx 1 root root 16 Jul 13 17:48 qiuri -> /home/user/qiuri
-rw-r--r-- 1 root root 209 Jul 13 03:14 scsrun.log
-rw-r--r-- 1 root root 0 Jul 11 07:51 xifeng
[root@qiuri ~]# ln -sf /home/user/xifeng xifeng
#咱們可使用-f選項忽略目標文件的存在並強制作連接文件。
[root@qiuri ~]# ls -li #驗證結果,發現建立成功。
total 80
580109 -rw------- 1 root root 882 Jul 13 02:56 anaconda-ks.cfg
128925 drwxr-xr-x 2 root root 4096 Jul 13 03:18 Desktop
1031170 -rw-r--r-- 1 root root 41727 Jul 13 02:56 install.log
1031171 -rw-r--r-- 1 root root 4182 Jul 13 02:50 install.log.syslog
1031178 lrwxrwxrwx 1 root root 16 Jul 13 17:48 qiuri -> /home/user/qiuri
580110 -rw-r--r-- 1 root root 209 Jul 13 03:14 scsrun.log
1031176 lrwxrwxrwx 1 root root 17 Jul 13 17:53 xifeng -> /home/user/xifeng
[root@qiuri ~]#
對文件類型有了一個瞭解以後,咱們接着說文件權限,linux文件的權限標誌位共九個,分爲3組,分別表明文件擁有者的權限,文件所屬用戶組的權限和其它用戶的權限,以下圖所示:
Linux 文件的權限有三種:
? 可讀(r):意味着咱們能夠查看閱讀;
? 可寫(w):意味着,能夠修改或刪除(不過刪除或修改的權限受父目錄上的權限控制);
? 可執行(x):意味着若是是文件就能夠運行,好比二進制文件(好比命令),或腳本(要用腳本語言解釋器來解釋運行)。
若是權限位不可讀、不可寫、不可執行,是用「-」來表示。對於目錄來講,執行(x)權限表示可使用cd 命令進入該目錄,能夠讀出該目錄下的文件的內容。若是某用戶對目錄只有讀取權限,而沒有執行權限,那麼該用戶只能使用ls 命令列出目錄下的文件,而不能讀取該目錄內的文件。
當一個文件的權限不符合咱們使用的要求咱們可使用命令chmod來設置和改變,改變目錄和文件權限的方法有兩種,一種是經過八進制的語法,另外一種是助記語法。
八進制的語法使用數字表示各個權限分別是r(4)、w(2)、x(1)、-(0)。例如目錄qiuri的權限如何使用八進制來表示:
drwxrwxr-x 2 user user 4096 07-13 15:17 qiuri
屬主的權限用數字表達:屬主的那三個權限位的數字加起來的總和。好比上面的例子中屬主的權限是rwx ,也就是4+2+1 ,應該是7;
屬組的權限用數字表達:屬組的那個權限位數字的相加的總和。好比上面的例子中的rwx ,也就是4+2+1 ,應該是7;
其它用戶的權限數字表達:其它用戶權限位的數字相加的總和。好比上面例子中是 r-x ,也就是4+0+1,應該是5;
也就是說,若是使用八進制數來表示該文件的權限,應該是775。
明白了數值表示權限的方法,例如將目錄qiuri的權限修改成:屬主對目錄qiuri有可讀可寫可執行權限,屬組和其餘人有可讀和可執行權限。
[root@qiuri ~]# ls -l #修改前查看一下
total 4
drwxrwxr-x 2 user user 4096 07-13 15:17 qiuri
-rw-rw-r-- 1 user user 0 07-13 15:17 xifeng
[root@qiuri ~]#chmod 755 qiuri #修改權限爲755
[root@qiuri ~]# ls -l #修改後驗證
total 4
drwxr-xr-x 2 user user 4096 07-13 15:17 qiuri
-rw-rw-r-- 1 user user 0 07-13 15:17 xifeng
若是想同時修改目錄和子目錄中全部文件的權限執行以下命令:
[root@qiuri ~]#chmod –R 755 qiuri
助記語法中將屬主(user)使用u表示、屬組(group)使用g表示、其它用戶(other)使用o來表示,而全部人(all)使用a來表示。使用「+」來表示添加權限、「-」表示減小權限、「=」表示授予的權限。固然使用r、w、x來表示權限。在使用的時候,能夠組合使用。例如:
[root@qiuri tmp]# touch xifeng #建立空文件
[root@qiuri tmp]# chmod u+x xifeng # 給文件的擁有者添加執行權限
[root@qiuri tmp]# chmod go-r xifeng # 給文件的屬組和其它用戶減去讀取權限
[root@qiuri tmp]# chmod a-rwx xifeng # 全部人都拒絕訪問
[root@qiuri tmp]# chmod a+rw xifeng # 全部人都具備讀寫權限
[root@qiuri tmp]# chmod o=rw #其它人的權限爲讀寫
注意:每修改一次,別忘了使用ls -l 命令查看權限的變化。
第二個部分:硬連接數 通常文件建立硬連接的時候這個數值會發生變化。
第三個部分:文件的屬主,就是說這個文件是那個用戶的。這裏是user用戶的目錄。咱們能夠經過chown來修改文件或文件夾的全部者。例如:
[root@qiuri ~]# ls -l /home/user #修改前查看一下屬性
total 4
drwxrwxr-x 2 user user 4096 07-13 15:17 qiuri
-rw-rw-r-- 1 user user 0 07-13 15:17 xifeng
[root@qiuri ~]#chown root /home/user/qiuri #使用命令修改屬主
[root@qiuri ~]# ls -l /home/user #驗證修改結果
Total 4
drwxrwxr-x 2 root user 4096 07-13 15:17 qiuri
-rw-rw-r-- 1 user user 0 07-13 15:17 xifeng
第四個部分:文件屬組:也就是說,對於這個文件,它歸屬於哪一個用戶組,在這裏是user 用戶組。能夠經過命令chgrp修改文件或文件夾組用戶。例如:
[root@qiuri ~]# ls -l /home/user #修改前查看一下屬性
total 4
drwxrwxr-x 2 root user 4096 07-13 15:17 qiuri
-rw-rw-r-- 1 user user 0 07-13 15:17 xifeng
[root@qiuri ~]#chgrp root /home/user/qiuri
#修改文件屬組,同理若是想修改當前目錄和子目錄的話,使用選項-R。
[root@qiuri ~]# ls -l /home/user #驗證結果
total 4
drwxrwxr-x 2 root root 4096 07-13 15:17 qiuri
-rw-rw-r-- 1 user user 0 07-13 15:17 xifeng
第五個部分:文件的大小,這裏是4096個字節。
第六個部分:建立或修改時間,這裏是7月13號15:17。這個值的變化和修改或訪問文件有關。
第七個部分:文件或目錄的名稱。這裏是qiuri這個目錄。
另外咱們在修改文件的屬主和屬組的時候可使用一下命令同時修改:
[root@qiuri ~]# ls -l /home/user #修改前查看一下屬性
total 4
drwxrwxr-x 2 root root 4096 07-13 15:17 qiuri
-rw-rw-r-- 1 user user 0 07-13 15:17 xifeng
[root@qiuri ~]#chown root.root /home/user/xifeng
#同時修改文件的屬主和屬組,若是想修改目錄和子目錄下的全部文件屬性使用選項-R。
[root@qiuri ~]# ls -l /home/user #驗證結果
total 4
drwxrwxr-x 2 root root 4096 07-13 15:17 qiuri
-rw-rw-r-- 1 root root 0 07-13 15:17 xifeng