不 斷 前 行,方 可 不 被 淘 汰
linux系統是一個(gè)多用戶(hù)多任務(wù)的分時(shí)操作系統,但系統并不能識別人,它通過(guò)賬號來(lái)區別每個(gè)用戶(hù)。每個(gè)linux系統在安裝的過(guò)程中都要為root賬號設置密碼,這個(gè)root即為系統的第一個(gè)賬號。每一個(gè)用這個(gè)賬號登錄系統的用戶(hù)都是超級管理員,他們對此系統有絕對的控制權。通過(guò)向系統管理員進(jìn)行申請,還可以為系統創(chuàng )建普通賬號。每個(gè)用普通賬號登錄系統的用戶(hù),對系統都只有部分控制權。
我們知道計算機中的數據是以二進(jìn)制0、1的形式存儲在硬件之上的。在linux中,為了管理的方便,系統將這些數據組織成目錄和文件,并以一個(gè)樹(shù)形的結構呈現給用戶(hù)。如下圖所示:
其中處于頂端的/是根目錄,linux下所有的文件均起始于根目錄。另外很重要的一點(diǎn),linux中不僅普通文檔是文件,目錄是文件,甚至設備、進(jìn)程等等都被抽象成文件。這樣做的目的是為了簡(jiǎn)化操作和方便管理。
于是,本文開(kāi)始所說(shuō)的控制權,即為用戶(hù)對系統中文件的控制權。通常所說(shuō)的某某文件的權限,是針對特定用戶(hù)而言的。
另外,每一個(gè)登錄的用戶(hù),在任意的時(shí)刻均處于某個(gè)目錄之內,稱(chēng)為當前目錄(current directory)。用戶(hù)在剛剛登錄的時(shí)候所處的目錄是家目錄,root用戶(hù)的家目錄是/root,普通用戶(hù)的家目錄通常為/home/user_name。在這里第一個(gè)字符/即是上文所說(shuō)的根目錄,root和home是根目錄下的兩個(gè)子目錄名,要注意home后面的/是目錄分隔符,而不是目錄名的一部分,user_name是普通用戶(hù)家目錄的名字。
下面我們來(lái)看具體命令:
pwd 打印當前目錄pwd [OPTION]...例如:
[root@centos7 ~]# pwd
/rootcd 切換目錄cd [DIR]例如切換到根目錄然后打印當前目錄(注意命令提示符的變化):
[root@centos7 ~]# cd /
[root@centos7 /]# pwd
/這兩個(gè)命令非常簡(jiǎn)單,簡(jiǎn)單到它們的選項都不常用,其中cd命令后面跟一個(gè)路徑名。這個(gè)路徑名可以是“絕對的”也可以是“相對的”。絕對的表示成以/為開(kāi)頭的路徑名,如命令cd /usr/local/src中的路徑名;相對的表示成相對于當前目錄的路徑名,若將linux中目錄的包含與被包含關(guān)系比喻成父子關(guān)系的話(huà),符號..代表的是父目錄,符號.代表當前目錄。
例:
假設當前所處目錄為/usr/local/src,那么切換到根目錄可以用兩種方法:cd /和cd ../../..
[root@centos7 src]# cd ../../..
[root@centos7 /]# pwd
/然后再切換回root的家目錄: cd root和cd ./root
[root@centos7 /]# cd ./
root[root@centos7 ~]# pwd
/root另外如果cd后面任何參數都沒(méi)有的時(shí)候,執行的效果是切換回家目錄:
[root@centos7 /]# cd
[root@centos7 ~]# pwd
/rootls 列出目錄內容ls [OPTION]... [FILE]...當命令ls后不跟任何參數的時(shí)候顯示當前目錄的內容
[root@centos7 ~]# lsanaconda-ks.cfg install.log install.log.syslog上面的例子顯示了/root目錄下的三個(gè)文件anaconda-ks.cfg、anaconda-ks.cfg、anaconda-ks.cfg。
選項-l可以使ls命令的結果以長(cháng)格式顯示:
[root@centos7 ~]# ls -l
total 84
-rw------- 1 root root 1666 Jan 14 2016 anaconda-ks.cfg-rw-r--r-- 1 root root 55745 Jan 14 2016 install.log
-rw-r--r-- 1 root root 5039 Jan 14 2016 install.log.syslog顯示結果的意思后述。
mkdir 創(chuàng )建目錄mkdir [OPTION]... DIRECTORY...通常的使用方法是命令名之后直接跟目錄名(可以多個(gè)),這里說(shuō)一下linux文件命名的規則:linux允許文件名使用除字符/之外的所有字符,文件名的最大字符數為255(中文字符為127),linux不鼓勵在文件名中出現特殊字符(容易引起混淆),文件名對大小寫(xiě)敏感。文件或目錄數量限制與所使用的文件系統有關(guān)。
如當前目錄下創(chuàng )建temp目錄并用ls查看:
[root@centos7 ~]# mkdir temp
[root@centos7 ~]# ls
anaconda-ks.cfg install.log install.log.syslog temp選項-p可以遞歸地創(chuàng )建子目錄,如進(jìn)入temp并創(chuàng )建目錄dir1和dir2,dir1的子目錄test:
[root@centos7 ~]# cd temp
[root@centos7 temp]# mkdir -p dir1/test dir2
[root@centos7 temp]# ls
dir1 dir2[root@centos7 temp]# cd dir1
[root@centos7 dir1]# lstesttouch “創(chuàng )建文件”touch [OPTION]... FILE...其實(shí)此命令作用是修改文件時(shí)間,當指定的文件不存在時(shí)就會(huì )創(chuàng )建新文件。由于文件時(shí)間的更改可以通過(guò)許多其它途徑,反而許多用戶(hù)都誤以為它就是創(chuàng )建文件的命令。如在temp目錄下創(chuàng )建文件file1 在temp的子目錄dir1下創(chuàng )建文件file2:
[root@centos7 temp]# touch file1 dir1/file2
[root@centos7 temp]# ls
dir1 dir2 file1[root@centos7 temp]# cd dir1
[root@centos7 dir1]# lsfile2 testuseradd 添加賬號useradd [options] name如創(chuàng )建一個(gè)名叫learner的賬號:
[root@centos7 dir1]# useradd learneruseradd命令默認在創(chuàng )建用戶(hù)賬號的同時(shí)也會(huì )創(chuàng )建用戶(hù)的家目錄,同時(shí)更新系統中與用戶(hù)相關(guān)的配置文件(linux中有許多配置文件,它們的作用是為軟件運行設置環(huán)境信息、參數等,它們通常是純文本的格式,方便用戶(hù)變更其內容以改變軟件運行環(huán)境。在linux中,大多數配置文件都處于目錄/etc內,如與用戶(hù)管理相關(guān)的配置文件:/etc/passwd,/etc/group,/etc/shadow,/etc/gshadow等)。
讓我們進(jìn)入新創(chuàng )建的用戶(hù)家目錄并用ls命令查看目錄內容:
[root@centos7 dir1]# cd /home/learner
[root@centos7 learner]# ls
[root@centos7 learner]# 終端上并沒(méi)有打印出任何信息,試試ls的-a選項:
[root@centos7 learner]# ls -a
. .. .bash_logout .bash_profile .bashrc選項-a作用是顯示目錄下所有文件,包括當前目錄.和父目錄..,linux中以.開(kāi)頭的文件是隱藏文件。在這里的三個(gè)隱藏文件是用戶(hù)learner登錄系統時(shí)所要用到的配置文件。
passwd 添加或更改賬號口令passwd [OPTION]... [NAME]注意通過(guò)命令useradd新添加的賬號并不能馬上進(jìn)行登錄,還必須為賬號添加口令為新用戶(hù)learner添加口令:
[root@centos7 ~]# passwd learner
Changing password for user learner.New UNIX password: xxxxxx #此處的xxxxxx并不在屏幕上顯示
BAD PASSWORD: it is too simplistic/systematic #此處可能會(huì )給出密碼太簡(jiǎn)單的警告
Retype new UNIX password: xxxxxx #重復輸入,此處的xxxxxx不在屏幕上顯示
passwd: all authentication tokens updated successfully.當passwd命令后沒(méi)有用戶(hù)名直接執行時(shí),它的作用是更改當前賬號的口令。
cat 查看文件內容cat [OPTION]... [FILE]...如查看保存系統賬號的配置文件/etc/passwd
[root@centos7 ~]# cat /etc/passwd
root:x:0:0:root:/root:/bin/bash
bin:x:1:1:bin:/bin:/sbin/nologin
daemon:x:2:2:daemon:/sbin:/sbin/nologin
....
learner:x:1000:1000::/home/learner:/bin/bash這里節選了部分輸出,我們看到新創(chuàng )建的賬號learner的信息在文件最后一行。文件中每一行都被:分割為7列,拿第一行舉例說(shuō)明每一列所表示的含義:
1) root表示賬號名。
2) x是口令,在一些系統中,真正的口令加密保存在/etc/shadow里,這里保留x或*。
3) 0是用戶(hù)ID。
4) 0是用戶(hù)組ID,對應著(zhù)/etc/group文件中的一條記錄。
5) root是描述性信息。
6) /root是用戶(hù)家目錄。
7) /bin/bash是用戶(hù)的登錄shell,每一個(gè)登錄的用戶(hù),系統都要啟動(dòng)一個(gè)shell程序以供用戶(hù)使用。對應于新創(chuàng )建的用戶(hù)learner來(lái)說(shuō),它的用戶(hù)ID是1000,通常用戶(hù)ID(UID)與用戶(hù)名是一一對應的。root的UID是0。用戶(hù)組ID(GID)如果在創(chuàng )建用戶(hù)的時(shí)候沒(méi)有被指定,那么系統會(huì )生成一個(gè)和UID號相同的GID,并把新用戶(hù)放到這個(gè)組里面。用戶(hù)組的意義是為了給權限控制增加靈活性,比如把不同的用戶(hù)歸到一個(gè)組之內,然后使文件針對這個(gè)組設置權限。
系統中還有一些登錄shell為/sbin/nologin的用戶(hù),這些用戶(hù)是“偽用戶(hù)”,它們是不能登錄的,它們的存在主要是為了方便管理,滿(mǎn)足相應的系統進(jìn)程對文件屬主的要求。
聯(lián)系客服