mysql linux 开源 php Android 云计算 Windows google 编程 微软 shell nginx 程序员 apache Ubuntu centos Firefox wordpress java Python

Linux基礎知識總結(四)

根據RH033課程整理

lecture 14

12月27號整理

用戶:獲取系統資源權限的集合。

管理員:UID 0

系統用戶:UID 1-499

普通用戶:UID >500

authentication 認證

authorization 授權

組: GID 容器 權限的集合

私有組:只有一個用戶,組名和用戶名是一樣的,ID號也一樣。

公共組:一個組中可能有多個用戶。

系統組 :專門存儲系統用戶

AUTHENTICATION 認證

AUTHORIZATION 授權

/etc/passwd 冒號隔開 七個字段

clip_image002

   1   2  3 4    5            6                   7

1 用戶名

2 密碼占位符,有密碼但是加密的,在/etc/shadow中

3 UID

clip_image004clip_image006

4 GID 與/etc/group 有關

5 使用信息說明欄

6 用戶家目錄

7 用戶默認Shell

/etc/shadow 存放用戶密碼

使用md5,salt加密

單項加密:algo,定長加密,不可逆 ,特征碼,雪崩效應

雪崩效應: 在任何時候,輸入兩段數據,在這兩端數據中只要有一個二進制位不一樣,則輸出的結果中至少有一半都不一樣

MD5 定長輸出:128位 麻省理工學院 Linux中廣泛采用

sha1 160位 哈希算法

clip_image008

1 賬號名稱 必須要與/etc/passwd相同

2 密碼 使用函數加密後的密碼,如果第一個字符為“*”,“!”表示此賬號不能使用

3 最近改動密碼的日期,以unix元年為始

4 密碼不可被改動的天數

5 密碼需要重新設置的天數,默認9999,即不需要重新設置

6 密碼變更前的警告期限

7 密碼過期後還能再使用的天數

8 賬號失效的日期

9 保留位

clip_image010

clip_image012

clip_image014

useradd :添加一個用戶

-u UID 直接指定一個特定的UID給這個賬號

-g GID 基本組

-G groups 附加組

-s shell 指定shell類型

-M 強制 不為此用戶創建家目錄

-m 強制 要建立使用者家目錄

-c 說明信息

-d 指定某個目錄成為用戶家目錄,而不使用默認家目錄

clip_image016

chsh user2 改變用戶的shell類型

-l 列出當前系統上可用的shell

-s 設定修改自己的shell

usermod

-u 改UID

–g 改GID

-G 修改使用者支持的附加組 –a 追加進去 二者通常一起用

-s 修改shell

-d 修改賬號的家目錄 –m 將原家目錄的內容一同遷移到新家目錄 二者通常一起用

-l 改變用戶的login name

-c 改變用戶的說明信息

-e 修改過期時間

-f 修改密碼過期後還能再使用的天數

-L 將密碼鎖定

-U 將用戶解鎖 將/etc/shadow密碼欄中的!去掉

passwd

-l 鎖定賬號

-u 將鎖定的賬號解鎖

--stdin 將一串字符直接設定為密碼

-n 密碼不可被改動的天數

-x 密碼需要重新設置的天數,即最長天數

-w 密碼變更前的警告期限

-S 顯示目前username的相關信息

clip_image018

/etc/group 文件

clip_image020

1 群組名稱

2 群組密碼

3 GID

4 支持的賬號名稱,賬號以此組為附加組,多個賬號之間用逗號隔開

/etc/gshadow 文件

clip_image022

1 群組名稱

2 密碼欄,開頭為!表示無法登錄

3 群組管理員的賬號

4 該群組所屬的賬號 與(/etc/group相同)

groupadd

-g GID 用來直接給於某個GID

-r grp_name 建立系統群組

groupmod

-g 修改既有的GID數字;

-n 修改既有的GID名稱

gpasswd 給組設一個密碼

newgrp 臨時性切換自己的組到另外一個組,給組加一個密碼,提示用戶輸入

clip_image024

userdel 刪除一個用戶

-r 連同使用者家目錄一起刪除

使用者身份切換

su

- 如果執行 su - 時,表示該使用者想要變換身份成為root,且使用root的環境設定參數檔,如/root/.bash_profile等

-l 後面可以跟使用者

過去一段時間內曾經成功登錄系統的用戶

/var/log/wtmp<------list –n 最近10次的登錄

過去一段時間內嘗試登錄系統但沒有成功的用戶

/var/log/btmp <-------lastb –n 最近10次嘗試登錄但沒有登錄成功的用戶

umask 設置僅對當前shell生效

SUID 任何一個文件置了SUID位,當一個用戶去執行這個文件時,默認的執行者身份不是這個用戶,而是以文件屬主的身份去執行。 chmod u+s file

SGID 當一個用戶去執行這個文件時,默認的執行者身份不是這個用戶,而是以文件屬組的身份去執行。 chmod g+s file

sticky 粘滯位,通常對目錄來講的,尤其是public dir 全局可寫,

意思就是這個目錄是公共的,任何人都可以寫,但只能刪除自己寫入的內容。

chmod o+t file

chmod (1/2/4)755 file

Lecture 15

文件系統:用於實現有效高效管理文件的機制。

windows 常用文件系統:fat32,NTFS

linux支持類型(靠虛擬文件系統(VFS)來支持):

fat32,NTFS,(windows);

jfs(IBM),xfs(SGI),(UNIX);

reiserfs;

iso9660;

網絡文件系統:NFS,SMBFS,

集群文件系統:GFS(全局文件系統),GFS2,OCFS(oracle)

常用類型:ext2,ext3(RHEL5),ext4(RHEL6默認)

VFS:虛擬文件系統,相當於一個接口,將不同文件系統轉換成磁盤上真正使用的文件系統。

ext3 比ext2多了一個日誌功能和acl(訪問控制列表)功能。

格式化的過程就是建立文件系統的過程。

 

Boot

Block

Block Group 0

Block Group 1

. . . . .

Block Group n

 

 

 

 

Super Block

GDT

Block

Bitmap

Inode

Bitmap

Inode

Table

Data blocks

 

Boot Block:引導塊,引導此分區上系統的一些相關信息。

super Block超級塊:放的整個文件系統的信息,包括數據塊的個數,大小,一共多少個塊組,每個塊組中包含多少個數據塊等等。屬於全局描述信息,描述整個分區的信息。

GDT塊組描述符:描述這一塊組的信息。

Block Bitmap:按位圖的方式來存儲數據塊是否可用。0表示可用,1表示不可用。是實現快速決定一個大容量空間中的文件系統的塊是否可用的機制。

inode Bitmap:用來存儲當前磁盤分區上一共有多少個inode號,以及使用與否。

clip_image028

混合索引方式(《計算機操作系統223頁》)

1) 直接地址

為提高對文件的檢索速度,在索引節點中可設置10個直接地址項,即用iaddr(0)~iaddr(9)來存放直接地址。換言之,在這裏的每項中所存放的是該文件數據項所在盤快的盤塊號。假設每個盤塊大小為4KB時,當文件不大於40KB時,便可直接從索引節點中讀出該文件的全部盤塊號。

2) 一次間接地址

對於大中型文件而言,只采用直接地址是不現實的。為此,可 再利用索引節點中的地址項iaddr(10)來提供一次間接尋址。這種方式的實質就是一級索引分配方式。圖中的一次間址塊也就是索引塊,文件系統分配給文件的多個盤塊號計入其中。在一次間址塊中可存放1K個盤塊號,因為允許文件長達4MB。

3) 多次間接地址

當文件大於4MB+40KB時(一次間址與10個直接地址項),系統還須采用二次間址分配方式。這時,用地址項iaddr(11)提供二次間接地址。該方式的實質是兩級索引分配方式。系統此時是在二次間址塊中記入所有一次間址塊的盤號。在采用二次間址方式時,文件最大長度可達到4GB。同理,地址項iaddr(12)作為三次間接地址,所允許的文件最大長度可達到4TB。

目錄僅僅是一種尋址路徑而已。是一種特殊的文件,也需要一個inode的號指向一個磁盤塊。通常一個目錄只占一個磁盤塊。大小為4096k。塊中的內容如圖所示:

clip_image030

塊裏邊存放的是一個表,表裏是這個目錄下所有的文件的名字及inode號。每一行(條目)用以指定目錄中一個文件的屬性。每一個目錄都有兩個特殊文件:“.” 目錄自身 ,“ . .”當前目錄的父目錄。

一個partition(filesystem)所能容許的最大文件數,與inode的數量有關,因為一個文件至少要占用一個inode。

根是一種特殊的文件系統,稱之為“rootfs”,是自引用的。通過根的inode號,找到根所存儲的磁盤塊。在這個塊下存放的是根下每個目錄下所存儲的文件名和inode所對應的關系。

讀取一個文件的簡單流程(以/etc/crontab為例):——《鳥哥的Linux私房菜》

clip_image032

1.操作系統根據根目錄(/)的相關資料取得/etc這個目錄所在的inode,並前往讀取/etc/這個目錄的所有相關屬性;

2.根據/etc的inode的資料,可取得/etc這個目錄底下所有的文件的相關數據時放置在哪一個Block中,並前往該block讀取文件的相關內容;

3.由以上步驟的block可知道crontab這個文件的inode所在地,並前往該inode;

4.由以上步驟的inode當中,可取得crontab這個文件的所有屬性,並且可前往由inode所指向的block區域,順利的取得crontab的文件內容。

鏈接:通過多條路徑找到同一個文件。類似於windows下的“快捷方式”。

硬鏈接:兩個文件名指向同一個inode。但是兩個文件必須在同一個磁盤空間。如果其中一條路徑被刪除,只要還有其他路徑能指向這個inode,那麽這個文件依然存在。

硬鏈接文件本身也是普通文件。

clip_image034

ls –l 第一個數字顯示的是硬鏈接的次數。每一個目錄都是2,因為每個目錄被自身和父目錄所引用。

軟鏈接:類型為“l”,也成為符號鏈接。創建一個軟鏈接就相當於創建了一個新文件。有自己的inode號。在inode所指向的磁盤塊上放的是所鏈接的文件的路徑。事實上,在創建一個軟鏈接時,如果路徑非常短的話就直接放在inode的內部,如果路徑足夠長,才從新開辟一個磁盤塊去存放路徑。(可以跨分區,可以指向目錄),一旦源文件被刪除,那麽鏈接也就失效了。

使用命令:ln 創建一個硬鏈接

-f 如果目標文件存在,就主動將目標文件直接移除後再建立

-s 創建一個軟鏈接

創建一個硬鏈接:

clip_image036

clip_image038

创建一个软链接:

clip_image040

clip_image043

文件大小指的是源文件路径字符的长度。clip_image041

小常識:我們平時刪除文件通常只是將文件的inode號給刪除了,文件依然存在。

特殊文件:b 塊設備 c 字符設備 不占用空間大小

第一個數字表示主設備號:指的是設備類型。第二個數字表示次設備號。

clip_image045

檢查磁盤空閑空間 baobab 圖形界面查看

du 顯示磁盤空間利用情況

-a 列出所有的文件與目錄容量,預設僅統計目錄下面的文件量而已

-s 顯示目錄總共占用多大空間

-h 以用戶易讀的方式做單位換算 默認kb

-k 以KB列出容量顯示

-m 以MB列出容量顯示

du –sh 經常用

df 顯示磁盤空間的空閑情況

-h 以用戶易讀的方式做單位換算 默認kb

-T 顯示磁盤分區文件系統類型

-i 顯示inode號一共有多少個

-a 列出所有的文件系統,包括系統特有的/proc等文件系統;

-k 以KB 的容量顯示文件系統

磁盤分區:

linux上所有設備都對應一個設備文件放在/dev目錄下。

IDE:/dev/hd*

SCSI SATA USB都在/dev目錄下以/dev/sd*來表示

硬盤接口類型不同,顯示文件名稱的表示方式也不一樣。

同一塊硬盤上的不同分區用/dev/sda[0-3]來表示。一個硬盤上最多有四個主分區,或者三個主分區加一個擴展分區。

clip_image047

掛載:當我們所建立起來的磁盤文件系統想在linux上面啟用的時候,一定要將它掛在到文件系統上。而所謂的掛載點則是該分區所在的目錄,且該目錄下的所有目錄都歸在該分區所有。掛載的時候得先建立起掛載的目錄才行!

如果用來掛載的目錄原先不為空,那麽掛載了文件系統之後,原目錄下的文件就是暫時隱藏起來,這裏註意,並不是消失了。等到原partition被umount之後,則該目錄的內容就會再次顯示。

mount /dev/sdb1(設備) /mnt/usb(目錄)

clip_image049

-a 依照/etc/fstab 的內容將所有的相關磁盤都掛上來

卸載:umount /dev/sdb1 或者 umount /mnt/usb 一定要卸載,否則數據讀入可能會失敗

-f 強制卸載

sync (同步),手動寫入,將內存緩沖區中要求寫到硬盤的內容依次寫入到硬盤中。

壓縮、解壓縮:

compress/uncompress .Z 過時的命令

gzip/gunzip 後綴:.gz 壓縮的時候會刪除源文件 還可以指定壓縮比1---9, 默認級別為6。 一般來說,數字越大。壓縮比越大,壓縮越慢。gzip –d === gunzip

bzip2/bunzip2 後綴:.bz2 比gzip更新,壓縮比更大 bzip –d ====bunzip2

gzip ,bzip2 只能壓縮單個文件,不能對目錄進行壓縮。

clip_image051

clip_image053

zip/unzip 后缀:.zip 可以压缩目录,需要指定压缩后文件的名字,能够保留原文件

格式:zip 压缩后文件名 原文件1 原文件2 原文件3 ……

clip_image055

歸檔:把多個零散的文件打包成一個單個文件。不是壓縮,只是打包封存起來。

tar –c 建立一個壓縮文件(create)

-x 解開一個壓縮文件

-t 查看tarfile裏面的檔案

在參數中 c/x/t僅能存在一個,不能同時存在

-z 用gzip壓縮

-j 是否用bzip2壓縮

-v 顯示整個創建過程或者解壓縮過程

-C 指定展開到什麽位置

-f 使用文件名 eg :tar –zcvPf tfile sfile 在f之後要立即加上文件名

-p 使用原來文件的屬性(permission)

-P 可以使用絕對路徑來壓縮

tar –cf myfile.tar file1 file2 file3…. 只歸檔不壓縮

gzip myfile.tar 再壓縮即可

tar –xf myfile.tar 將內容展開,重新釋放

clip_image057

tar -tf 不用展開的情況下看看所歸檔的文件

tar 可以直接調用壓縮工具,即歸檔,又壓縮

tar –zcf 使用gzip進行壓縮

clip_image059

tar –jcf 调用bzip2进行压缩

clip_image061

tar –zxf 解压缩以gzip压缩的文件

tar –jxf 解压缩以bzip2压缩的文件

clip_image063

 

延伸阅读

评论