1. 程式人生 > >Linux 學習之路(二):使用者及許可權詳解

Linux 學習之路(二):使用者及許可權詳解

作業:

1.ls 命令是否可以顯示某目錄的整體大小,即包括其內部的所有檔案的整體大小?

可以,使用ls -s xxx

2.通過幫助手冊,學習使用du命令:

# du 估計檔案空間使用量

​ -s 分割資料夾,不包括子目錄大小

​ -h 以可讀格式展示

3.通過幫助,學習read命令:

變數:記憶體空間,有名稱

變數賦值:

變數替換

4.描述GPL,BSD,Apache三個開源協定的大體聯絡及區別。

自由軟體開源協定,版權描述

BSD開源協議
BSD開源協議是一個給於使用者很大自由的協議。基本上使用者可以”為所欲為”,可以自由的使用,修改原始碼,也可以將修改後的程式碼作為開源或者專有軟體再發布。

但”為所欲為”的前提當你釋出使用了BSD協議的程式碼,或則以BSD協議程式碼為基礎做二次開發自己的產品時,需要滿足三個條件:

​ 如果再發布的產品中包含原始碼,則在原始碼中必須帶有原來程式碼中的BSD協議。
​ 如果再發布的只是二進位制類庫/軟體,則需要在類庫/軟體的文件和版權宣告中包含原來程式碼中的BSD協議。
​ 不可以用開原始碼的作者/機構名字和原來產品的名字做市場推廣。
​ 我們很熟悉的Linux就是採用了GPL。GPL協議和BSD, Apache Licence等鼓勵程式碼重用的許可很不一樣。GPL的出發點是程式碼的開源/免費使用和引用/修改/衍生程式碼的開源/免費使用,但不允許修改後和衍生的程式碼做為閉源的商業軟體釋出和銷售。這也就是為什麼我們能用免費的各種linux,包括商業公司的linux和linux上各種各樣的由個人,組織,以及商業軟體公司開發的免費軟體了。

GPL協議的主要內容是隻要在一個軟體中使用(”使用”指類庫引用,修改後的程式碼或者衍生程式碼)GPL 協議的產品,則該軟體產品必須也採用GPL協議,既必須也是開源和免費。這就是所謂的”傳染性”。GPL協議的產品作為一個單獨的產品使用沒有任何問題,還可以享受免費的優勢。

由於GPL嚴格要求使用了GPL類庫的軟體產品必須使用GPL協議,對於使用GPL協議的開原始碼,商業軟體或者對程式碼有保密要求的部門就不適合整合/採用作為類庫和二次開發的基礎。

其它細節如再發布的時候需要伴隨GPL協議等和BSD/Apache等類似。

5.如何獲取Linux當前最新的核心版本號?

www.kernel.org

$ cat /proc/version

列出你所瞭解的Linux發行版,並說明其跟Linux核心的關係。

Linux,GNU:GNU/Linux,原始碼

發行版:Fedora,RedHat(Centos,),SUSE,Debian (Ubuntu,Mint),Gentoo(編譯的可能性),LFS(Linux From Scratch)

RedHat:通用格式


檢視文字:

cat、tac 、more、less、head、tail

cat:連線並顯示

​ -n 顯示時可以顯示行號

​ -e 顯示每一行結束符$

Ctrl+c 中止訊號

命令輸完不想執行也可以Ctrl+c

shift + PgUp/PgDn

分屏顯示:

more 、less

more:向後翻

less: man用法

head:檢視前n行

tail:檢視後n行

​ -n 指定顯示多少行 head -n 1 xxxxxx/head -1 xxxxxxx

​ -f 檢視檔案尾部,不退出,等待顯示後續追加至此檔案的新內容(監控服務執行的時候可以隨時監控日誌)

不要直接編輯etc下的檔案!!!拷貝一份

文字處理:

cut、join、sed、awk

cut命令:以:作為分隔符,只顯示第一個欄位

cut -d: -f1 xxxxxx

​ -d:指定欄位分隔符,預設是空格

​ -f:指定要顯示的欄位

​ -f 1,3 顯示第一個和第三個

​ -f 1-3 顯示第一個到第三個

文字排序:

不影響原檔案中次序,字元在AscII碼錶中次序,按照升序

sort命令

​ -n:數值排序

​ -r:逆序排序

​ -t:欄位分隔符

​ -k:以哪個欄位為準進行排序

​ -u:排序後相同的行只顯示一次

​ -f:排序時忽略字元大小寫

uniq命令(略過重複行):如果重複行不相鄰不認為是重複行。

​ -d:只顯示重複行 -D:顯示所有重複行

​ -c:顯示某一行重複的次數

文字統計:

wc(word count)命令

行 單詞數 位元組數

​ -l 只顯示行數 -w 只顯示單詞數 -c 只顯示位元組數

​ -L 最長的一行包含多少個字元

字元處理命令:

tr ——轉換或刪除字元

tr [OPTION]… SET1 [SET2]

tr set1 把小寫轉換為大寫 tr ‘ab’ ‘AB’

輸入重定向:

把/etc/passwd檔案中所有小寫字母都換成大寫的:

# tr 'a-b' 'A-B' < /etc/passwd
-d:刪除出現在字符集中的所有字元

bash及其特性:

程式:程序

程序:在每個程序看來,當前主機上只存在核心和當前程序

程序是程式的副本,程序是程式執行例項

shell自身是個外部程式,shell自有命令是內部

shell

​ 子shell bash–bash pstree

bash:

1.命令歷史

2.管道、重定向

3.命令別名

4.命令列編輯

5.命令列展開

6.檔名通配

7.變數

8.程式設計

命令列編輯:

游標跳轉:

Ctrl+a :跳到命令列首

Ctrl+e :跳到命令列尾

Ctrl+u :刪除游標至命令列首內容

Ctrl+e :刪除游標至命令列尾內容

Ctrl+l :清屏

命令歷史:

history : 檢視命令歷史(儲存在記憶體緩衝區)

​ -c 清空命令歷史

​ -d 刪除指定位置的命令 history -d 500 10 從第500個開始刪除10個

​ -w 儲存命令歷史至歷史檔案中

命令歷史的使用技巧:

!n 執行命令歷史中的第n條命令:

! -n: 執行命令歷史中的倒數第n條命令

! !:執行上一條命令

! string:執行命令歷史中以字串開頭的命令

! $ : 引用上一個命令的最後一個引數

Esc 鬆開 按 .

Alt+.遠端終端不支援

命令補全:

tab鍵自動補全命令(Path設定正常,是在PATH環境下搜尋補全,要能唯一標識命令)

兩次tab鍵所有以這個字元開頭的命令

路徑補全:

給的路徑下查詢

命令別名:

alias CMDALIAS=‘COMMAND [options] [arguments]’(命令之間有空格則用引號)

在shell中定義的別名僅在當前shell生命週期中有效:別名的有效範圍為當前shell程序

unalias 別名 撤銷別名

\CMD 使用命令本身

命令替換:

把命令中某個子命令替換為其執行結果的過程

$(),COMMAND

建立以當前時間命名的檔案:

file-2018-10-12-08-24-01.txt

touch ./file-$(date+%F-%H-%M-%S).txt

bash支援的引號:

``:命令替換

" ":弱引用,可以實現變數替換

’ ':強引用,不完成變數替換

檔名通配(globbing):

  • : 任意長度的任意字元

? : 匹配任意單個字元

[] :匹配指定範圍內的任意單個字元

[a-zA-Z]

[[:space:]]:空白字元

[[:punct:]]:標點符號

[[:lower:]]:小寫字母

[[:upper:]]:大寫字母

[[:alpha:]]:大小寫字母 [^[:alpha:]]非字母(注:\在markdown中作轉義)

[[:digit:]]:數字

[[:alnum:]]:數字和大小寫字母

#man 7 glob裡面有說明

[^] : 匹配指定範圍之外的任意單個字元

環境變數

PATH:命令搜尋路徑

HISTSIZE:命令緩衝區大小大小,預設是1000條

echo $變數名 獲取命令


安裝作業系統在硬碟或光碟上

計算資源

許可權

使用者 :獲取資源或服務的標識

使用者,容器,關聯許可權:使用者組,方便地指派許可權。使用者組也是一個識別符號

檔案:被機器對映為某個識別符號。

程序也有屬組,執行發起者發起的程序。

安全上下文(secure context):

屬主 屬組 其他使用者

檔案:

r:可讀,可以使用類似cat等命令檢視檔案內容

w:可寫,可以編輯或刪除此檔案

x:可執行,eXecutable,可以在命令提示符下當作命令提交給核心執行

目錄:

r:可以對此目錄執行ls以列出內部的所有檔案

w:可以在此目錄建立檔案

x:可以使用cd切換進此目錄,也可以使用ls -l 檢視內部檔案的詳細資訊

一般不建議檔案直接具有可執行許可權,但是目錄可以有

0 000 —:無許可權

1 001 --x:執行

2 010 -w-:寫

3 011 -wx:寫和執行

4 100 r–:只讀

5 101 r-x:讀和執行

6 110 rw-:讀寫

7 111 rwx:讀寫執行

755:rwxr-xr-x

使用者:UID,/etc/passwd

組:GID,/etc/group

影子口令:

使用者:/etc/shadow

組:/etc/gshadow

使用者類別:

管理員 :0

普通使用者:1-65535(16位二進位制)

系統使用者 :1-499

一般使用者:500-60000

使用者組類別:

管理員組:

普通組:

系統組:

一般組:

使用者組類別:

基本組:使用者的預設組

私有組:建立使用者時,如果沒有為其指定所屬的組,系統會自動為其建立一個與使用者同名的組

附加組:額外組:預設組以外的其他組

account: 使用者名稱/登入名

password:密碼佔位符

UID:使用者ID

GID:基本組ID

comment:註釋

HOME DIR:家目錄

SHELL:使用者的預設shell

/etc/shadow

account:登入名

encrypted password:加密的密碼

加密方法:

對稱加密:加密和解密使用同一個密碼

公鑰加密:每個密碼都成對出現,一個為私鑰(secret key),一個為公鑰(public key)   公鑰加密,私鑰解密。用於做金鑰交換。

單向加密:雜湊加密:由明文取得密文。提取資料特徵碼,可用於做資料校驗。

	1.雪崩效應

	2.定長輸出

		MD5:Message Digest,128位定長輸出

		SHA1:Secure Hash Algorithm,160位定長輸出

新增使用者:

useradd USERNAME

新增組:

groupadd GRPNAME

環境變數

PATH:命令搜尋路徑

HISTSIZE:命令緩衝區大小大小,預設是1000條

echo $變數名 獲取命令