Linux 是一個實現多用戶登錄的操作系統,比如“zoe”和“loe”可以同時登陸同一臺主機,他們共享同一臺主機的資源。但他們有各自的用戶空間,用於存放各自的文件。但實際上他們的文件都是放在同一個物理磁盤上的甚至同一個邏輯分區或者目錄裏,但是由於 Linux 的 用戶管理 和 權限機制 ,不同用戶不可以輕易地查看、修改彼此的文件。
1.查看用戶
請打開終端,輸入命令:
$ who am i
或者
$ who mom likes
輸入的第一列表示打開當前僞終端的用戶的用戶名(要查看當前登錄用戶的用戶名,去掉空格直接使用 whoami 即可),第二列的 pts/0 中 pts 表示僞終端,所謂僞是相對於 /dev/tty 設備而言的,還記得上一節講終端時的那七個使用 [Ctrl]+[Alt]+[F1]~[F7] 進行切換的 /dev/tty 設備麼,這是“真終端”,僞終端就是當你在圖形用戶界面使用 /dev/tty7 時每打開一個終端就會產生一個僞終端, pts/0 後面那個數字就表示打開的僞終端序號,你可以嘗試再打開一個終端,然後在裏面輸入 who am i ,看第二列是不是就變成 pts/1 了,第三列則表示當前僞終端的啓動時間。
who 命令其它常用參數
**參數 說明
-a 打印能打印的全部
-d 打印死掉的進程
-m 同am i,mom likes
-q 打印當前登錄用戶數及用戶名
-u 打印當前登錄用戶登錄信息
-r 打印運行等級
2.創建用戶**
在 Linux 系統裏, root 賬戶擁有整個系統至高無上的權利,比如 新建/添加 用戶。
root 權限,系統權限的一種,與 SYSTEM 權限可以理解成一個概念,但高於 Administrator 權限,root 是 Linux 和 UNIX 系統中的超級管理員用戶帳戶,該帳戶擁有整個系統至高無上的權力,所有對象他都可以操作,所以很多黑客在入侵系統的時候,都要把權限提升到 root 權限,用 Windows 的方法理解也就是將自己的非法帳戶添加到 Administrators 用戶組。更比如安卓操作系統中(基於 Linux 內核)獲得 root 權限之後就意味着已經獲得了手機的最高權限,這時候你可以對手機中的任何文件(包括系統文件)執行所有增、刪、改、查的操作。
我們一般登錄系統時都是以普通賬戶的身份登錄的,要創建用戶需要 root 權限,這裏就要用到 sudo 這個命令了。不過使用這個命令有兩個大前提,一是你要知道當前登錄用戶的密碼,二是當前用戶必須在 sudo 用戶組。新建一個叫 lilei 的用戶:
$ sudo adduser lilei
這個命令不但可以添加用戶到系統,同時也會默認爲新用戶創建 home 目錄:
$ ls /home
現在你已經創建好一個用戶,並且你可以使用你創建的用戶登錄了,使用如下命令切換登錄用戶:
$ su -l lilei
退出當前用戶跟退出終端一樣可以使用 exit 命令或者使用快捷鍵 Ctrl+d。
3.用戶組
在 Linux 裏面每個用戶都有一個歸屬(用戶組),用戶組簡單地理解就是一組用戶的集合,它們共享一些資源和權限,同時擁有私有資源,就跟家的形式差不多,你的兄弟姐妹(不同的用戶)屬於同一個家(用戶組),你們可以共同擁有這個家(共享資源),爸媽對待你們都一樣(共享權限),你偶爾寫寫日記,其他人未經允許不能查看(私有資源和權限)。當然一個用戶是可以屬於多個用戶組的,正如你既屬於家庭,又屬於學校或公司。
在 Linux 裏面如何知道自己屬於哪些用戶組呢?
方法一:使用groups命令
$ groups zoegreen
其中冒號之前表示用戶,後面表示該用戶所屬的用戶組。這裏可以看到 zoegreen用戶同時屬於 zoegreen 和 sudo 用戶組,每次新建用戶如果不指定用戶組的話,默認會自動創建一個與用戶名相同的用戶組(差不多就相當於家長的意思,或者說是老總)。默認情況下在sudo用戶組裏的可以使用sudo命令獲得root權限。
方法二:查看/etc/group文件
$ cat /etc/group | sort
這裏 cat 命令用於讀取指定文件的內容並打印到終端輸出,後面會詳細講它的使用。 | sort 表示將讀取的文本進行一個字典排序再輸出,然後你將看到如下一堆輸出,你可以在最下面看到zoegreen的用戶組信息:
沒找到,沒關係,你可以使用命令過濾掉一些你不想看到的結果:
$ cat /etc/group | grep -E “zoegreensudo”
etc/group 文件格式說明
/etc/group 的內容包括用戶組(Group)、用戶組口令、GID 及該用戶組所包含的用戶(User),每個用戶組一條記錄。格式如下:
group_name:password:GID:user_list
你看到上面的 password 字段爲一個 ‘x’ 並不是說密碼就是它,只是表示密碼不可見而已。
將其它用戶加入 sudo 用戶組
默認情況下新創建的用戶是不具有 root 權限的,也不在 sudo 用戶組,可以讓其加入sudo用戶組從而獲取 root
使用 usermod 命令可以爲用戶添加用戶組,同樣使用該命令你必需有 root 權限,你可以直接使用 root 用戶爲其它用戶添加用戶組,或者用其它已經在 sudo 用戶組的用戶使用 sudo 命令獲取權限來執行該命令
這裏我用 zoegreen 用戶執行 sudo 命令將 lilei 添加到 sudo 用戶組,讓它也可以使用 sudo 命令獲得 root 權限
$ su zoegreen
$ groups lilei
$ sudo usermod -G sudo lilei
$ groups lilei
然後你再切換會 lilei 用戶,現在就可以使用 sudo 獲取 root 權限了。
4.刪除用戶
刪除用戶是很簡單的事:
$ sudo deluser lilei –remove-home
二、Linux 文件權限
1.查看文件權限
我們之前已經很多次用到 ls 命令了,如你所見,我們用它來列出並顯示當前目錄下的文件,當然這是在不帶任何參數的情況下,它能做的當然不止這麼多,現在我們就要用它來查看文件權限。
使用較長格式列出文件:
$ ls -l
你可能除了知道最後面那一項是文件名之外,其它項就不太清楚了,那麼到底是什麼意思呢:
可能你還是不太明白,比如第一項文件類型和權限那一堆東西具體指什麼,鏈接又是什麼,何爲最後修改時間,下面一一道來:
文件類型
關於文件類型,這裏有一點你必需時刻牢記Linux 裏面一切皆文件,正因爲這一點纔有了設備文件( /dev 目錄下有各種設備文件,大都跟具體的硬件設備相關)這一說,還有 socket(網絡套接字,具體是什麼,感興趣的用戶可以自己去了解或期待實驗樓的後續相關課程),和 pipe (管道,這個東西很重要,我們以後將會討論到,這裏你先知道有它的存在即可)。軟鏈接文件,鏈接文件是分爲兩種的,另一種當然是“硬鏈接”(硬鏈接不常用,具體內容不作爲本課程討論重點,而軟鏈接等同於 Windows 上的快捷方式,你記住這一點就夠了)
文件權限
讀權限,表示你可以使用 cat 之類的命令來讀取某個文件的內容;寫權限,表示你可以編輯和修改某個文件; 執行權限,通常指可以運行的二進制程序文件或者腳本文件,如同 Windows 上的 ‘exe’ 後綴的文件,不過 Linux 上不是通過文件後綴名來區分文件的類型。你需要注意的一點是,一個目錄要同時具有讀權限和執行權限纔可以打開,而一個目錄要有寫權限才允許在其中創建其它文件,這是因爲目錄文件實際保存着該目錄裏面的文件的列表等信息
所有者權限,這一點相信你應該明白了,至於所屬用戶組權限,是指你所在的用戶組中的所有其它用戶對於該文件的權限,比如,你有一個艾派德,那麼這個用戶組權限就決定了你的兄弟姐妹有沒有權限使用它破壞它和佔有它。
鏈接數
鏈接到該文件所在的 inode 結點的文件名數目(關於這個概念涉及到 Linux 文件系統的相關概念知識,不在本課程的討論範圍,感興趣的用戶可以自己去了解)。
文件大小
以 inode 結點大小爲單位來表示的文件大小,你可以給 ls 加上 -lh 參數來更直觀的查看文件的大小。
明白了文件權限的一些概念,我們順帶補充一下關於 ls 命令的一些其它常用的用法:
顯示除了 ‘.’(當前目錄),’..’ 上一級目錄之外的所有包含隱藏文件(Linux 下以 ‘.’ 開頭的文件爲隱藏文件)
$ ls -A
當然,你可以同時使用 ‘-A’ 和 ‘-l’ 參數:
$ ls -Al
查看某一個目錄的完整屬性,而不是顯示目錄裏面的文件屬性:
其中小 s 爲顯示文件大小,大 S 爲按文件大小排序,若需要知道如何按其它方式排序,請使用“man”命令查詢。
2.變更文件所有者
假設目前是 lilei 用戶登錄,新建一個文件,命名爲 “iphone6”:
$ touch iphone6
可見文件所有者是 lilei :
現在,使用以下命令變更文件所有者爲 shiyanlou :
現在查看,發現 文件所有者成功修改爲 shiyanlou :
3.修改文件權限
如果你有一個自己的文件不想被其他用戶讀、寫、執行,那麼就需要對文件的權限做修改,這裏有兩種方式:
方式一:二進制數字表示
每個文件的三組權限(擁有者,所屬用戶組,其他用戶,記住這個順序是一定的)就對應這一個 “rwx”,也就是一個 ‘7’ ,所以如果我要將文件“iphone6”的權限改爲只有我自己可以用那麼就這樣:
爲了演示,我先在文件里加點內容:
$ echo “echo \”hello shiyanlou\”” > iphone6
然後修改權限:
$ chmod 700 iphone6
現在,其他用戶已經不能讀這個“iphone6”文件了:
方式二:加減賦值操作
完成上述相同的效果,你可以:
$ chmod go-rw iphone
‘g”o’還有’u’,分別表示group,others,user,’+’,’-’ 就分別表示增加和去掉相應的權限。