Linux的體系結構
體系結構主要分為用戶態(tài)的內核態(tài)。所謂內核本質上是一段管理計算機硬件設備的程序。所謂用戶態(tài)上層應用程序的活動空間。內核必須為上層應用提供資源,CPU,存儲,IO資源,這被稱為系統(tǒng)調用,系統(tǒng)調用是不能被簡化的操作,其他復雜調用都是多個系統(tǒng)調用組合的結果。

我們要查看所有的系統(tǒng)調用,可以使用命令
man 2 syscalls
所得到的列表如下
System call Kernel Notes
---------------------------------------------------------------------------
_llseek(2) 1.2
_newselect(2) 2.0
_sysctl(2) 2.0
accept(2) 2.0 See notes on socketcall(2)
accept4(2) 2.6.28
access(2) 1.0
acct(2) 1.0
add_key(2) 2.6.11
adjtimex(2) 1.0
alarm(2) 1.0
alloc_hugepages(2) 2.5.36 Removed in 2.5.44
bdflush(2) 1.2 Deprecated (does nothing)
since 2.6
bind(2) 2.0 See notes on socketcall(2)
chown(2) 2.2 See chown(2) for
version details
其中2代表的意思是系統(tǒng)調用,3指的是公共庫函數(shù)。公共庫函數(shù)是封裝系統(tǒng)調用,一組定義好的系統(tǒng)調用的組合。
shell
Shell 是指一種應用程序,這個應用程序提供了一個界面,用戶通過這個界面訪問操作系統(tǒng)內核的服務。
Linux 的 Shell 常見的有:
- Bourne Shell(/usr/bin/sh或/bin/sh)
- Bourne Again Shell(/bin/bash)
- C Shell(/usr/bin/csh)
我們常見的shell腳本使用的都是bash,一個shell腳本開頭定義了#!/bin/bash。#!告訴系統(tǒng)其后路徑所指定的程序即是解釋此腳本文件的 Shell 程序。
其中關于命令行可以參照我的這篇文章,以下在簡單介紹幾個常用的命令。
find
在指定目錄下查找文件。
find + 路徑 + -name + “文件名”
//查找當前目錄下子目錄中的文件
find -name "test"
之上的命令使用遞歸查找的方式查找到了test文件。如果我們想全局搜索則使用
find / -name "test"
當然find指令也支持表達式如果要查找所有以test開頭的問題,查找方式可以使用
find -name "test*"
*表示通配符,可以實現(xiàn)模糊查詢。
如果要忽略大小寫查詢可以使用
find -iname "test*"
grep
對于grep使用過Linux的人基本都有接觸過。下面列舉一下grep的一些常用操作。
grep 'test' 1.log
//正則篩選
grep -o 'test[[0-9a-z]*\]'
//不包含
grep -v 'test'
Linux的用戶權限
用戶管理
Linux系統(tǒng)用戶是根據(jù)用戶ID來識別的,默認ID長度為32位,用戶ID限制在60000以下。
- root用戶 (ID 0)
默認是root用戶,其UID和GID均為0,可以操作系統(tǒng)中任何文件和命令,擁有最高的管理權限。 - 系統(tǒng)用戶 (ID 1-499)
與真實用戶區(qū)分開來,例如系統(tǒng)默認的bin、adm、nodoby、mail用戶等。 - 普通用戶 (ID 500以上)
這類用戶一般是由具備系統(tǒng)管理員root的權限的運維人員添加的。
用戶組
linux系統(tǒng)中的用戶組(group)就是具有相同特性的用戶(user)集合,通過組可以更加方便的管理用戶,每個組擁有一個GroupID,每個用戶屬于一個主組,屬于一個或多個附屬組,一個用戶最多有31個附屬組。
權限管理
Linux權限是操作系統(tǒng)用來限制對資源訪問的機制,權限一般分為讀、寫、執(zhí)行。系統(tǒng)中每個文件都擁有特定的權限、所屬用戶及所屬組,通過這樣的機制來限制哪些用戶或用戶組可以對特定文件進行相應的操作,Linux權限授權,默認是授權給三種角色,分別是user、group、other(其他用戶)。
drwxr-xr-x 2 root root 4096 Feb 17 15:57 test/
test目錄詳解如下:
d 表示目錄,同一位置如果為-則表示普通文件;
rwxr-xr-x 表示三種角色的權限,每三位為一種角色,依次為u,g,o權限,如上則表示user的權限為rwx,group的權限為r-x,other的權限為r-x;
2表示文件夾的鏈接數(shù)量,可理解為該目錄下子目錄的數(shù)量;
4096表示該文件夾占據(jù)的字節(jié)數(shù);
chmod權限
+、-、=代表加入、刪除和等于對應權限
授予用戶、組、其他人對test目錄擁有rwx權限
chmod –R u+rwx,g+rwx,o+rwx test
撤銷用戶、組、其他人對test目錄擁有x權限
chmod –R u-x,g-x,o-x test
chmod二進制權限
Linux權限可以將rwx用二進制來表示,其中有權限用1表示,沒有權限用0表示。
Linux權限用二進制顯示如下:
rwx=111
r-x=101
rw-=110
r--=100
依次類推,轉化為十進制,對應十進制結果顯示如下:
rwx=111=4+2+1=7
r-x=101=4+0+1=5
rw-=110=4+4+0=6
r--=100=4+0+0=4
得出結論,用r=4,w=2,x=1來表示權限。
所以我們有時候使用
chmod 777 test
為文件賦予所有權限。
Linux特殊權限
除了普通權限,Linux還有三個特殊權限
- suid
以文件的所屬用戶身份執(zhí)行,而非執(zhí)行文件的用戶。
chmod u+s test
- sgid
1)以文件所屬組身份去執(zhí)行。
2)在該目錄中創(chuàng)建任意新文件的所屬組與該目錄的所屬組相同。
chmod g+s test
- sticky
對目錄擁有寫入權限的用戶僅可以刪除其擁有的文件,無法刪除其他用戶所擁有的文件。
chmod o+t test