根據RH033課程整理
lecture 14
12月27號整理
用戶:獲取系統資源許可權的集合.
管理員:UID 0
系統用戶:UID 1-499
普通用戶:UID >500
authentication 認證
authorization 授權
組: GID 容器 許可權的集合
私有組:只有一個用戶,組名和用戶名是一樣的,ID號也一樣.
公共組:一個組中可能有多個用戶.
系統組 :專門存儲系統用戶
AUTHENTICATION 認證
AUTHORIZATION 授權
/etc/passwd 冒號隔開 七個欄位
1 2 3 4 5 6 7
1 用戶名
2 密碼佔位符,有密碼但是加密的,在/etc/shadow中
3 UID
4 GID 與/etc/group 有關
5 使用信息說明欄
6 用戶家目錄
7 用戶默認shell
/etc/shadow 存放用戶密碼
使用md5,salt加密
單項加密:algo,定長加密,不可逆 ,特徵碼,雪崩效應
雪崩效應: 在任何時候,輸入兩段數據,在這兩端數據中只要有一個二進位位不一樣,則輸出的結果中至少有一半都不一樣
MD5 定長輸出:128位 麻省理工學院 linux中廣泛採用
sha1 160位 哈希演算法
1 賬號名稱 必須要與/etc/passwd相同
2 密碼 使用函數加密后的密碼,如果第一個字元為“*”,“!”表示此賬號不能使用
3 最近改動密碼的日期,以unix元年為始
4 密碼不可被改動的天數
5 密碼需要重新設置的天數,默認9999,即不需要重新設置
6 密碼變更前的警告期限
7 密碼過期后還能再使用的天數
8 賬號失效的日期
9 保留位
useradd :添加一個用戶
-u UID 直接指定一個特定的UID給這個賬號
-g GID 基本組
-G groups 附加組
-s shell 指定shell類型
-M 強制 不為此用戶創建家目錄
-m 強制 要建立使用者家目錄
-c 說明信息
-d 指定某個目錄成為用戶家目錄,而不使用默認家目錄
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的相關信息
/etc/group 文件
1 群組名稱
2 群組密碼
3 GID
4 支持的賬號名稱,賬號以此組為附加組,多個賬號之間用逗號隔開
/etc/gshadow 文件
1 群組名稱
2 密碼欄,開頭為!表示無法登錄
3 群組管理員的賬號
4 該群組所屬的賬號 與(/etc/group相同)
groupadd
-g GID 用來直接給於某個GID
-r grp_name 建立系統群組
groupmod
-g 修改既有的GID數字;
-n 修改既有的GID名稱
gpasswd 給組設一個密碼
newgrp 臨時性切換自己的組到另外一個組,給組加一個密碼,提示用戶輸入
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號,以及使用與否.
混合索引方式(《計算機操作系統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.塊中的內容如圖所示:
塊裡邊存放的是一個表,表裡是這個目錄下所有的文件的名字及inode號.每一行(條目)用以指定目錄中一個文件的屬性.每一個目錄都有兩個特殊文件:“.” 目錄自身 ,“ . .”當前目錄的父目錄.
一個partition(filesystem)所能容許的最大文件數,與inode的數量有關,一個文件至少要佔用一個inode.
根是一種特殊的文件系統,稱之為“rootfs”,是自引用的.通過根的inode號,找到根所存儲的磁碟塊.在這個塊下存放的是根下每個目錄下所存儲的文件名和inode所對應的關係.
讀取一個文件的簡單流程(以/etc/crontab為例):——《鳥哥的Linux私房菜》
1.操作系統根據根目錄(/)的相關資料取得/etc這個目錄所在的inode,並前往讀取/etc/這個目錄的所有相關屬性;
2.根據/etc的inode的資料,可取得/etc這個目錄底下所有的文件的相關數據時放置在哪一個Block中,並前往該block讀取文件的相關內容;
3.由以上步驟的block可知道crontab這個文件的inode所在地,並前往該inode;
4.由以上步驟的inode當中,可取得crontab這個文件的所有屬性,並且可前往由inode所指向的block區域,順利的取得crontab的文件內容.
鏈接:通過多條路徑找到同一個文件.類似於windows下的“快捷方式”.
硬鏈接:兩個文件名指向同一個inode.但是兩個文件必須在同一個磁碟空間.如果其中一條路徑被刪除,只要還有其他路徑能指向這個inode,那麼這個文件依然存在.
硬鏈接文件本身也是普通文件.
ls –l 第一個數字顯示的是硬鏈接的次數.每一個目錄都是2,每個目錄被自身和父目錄所引用.
軟鏈接:類型為“l”,也成為符號鏈接.創建一個軟鏈接就相當於創建了一個新文件.有自己的inode號.在inode所指向的磁碟塊上放的是所鏈接的文件的路徑.事實上,在創建一個軟鏈接時,如果路徑非常短的話就直接放在inode的內部,如果路徑足夠長,才從新開闢一個磁碟塊去存放路徑.(可以跨分區,可以指向目錄),一旦源文件被刪除,那麼鏈接也就失效了.
使用命令:ln 創建一個硬鏈接
-f 如果目標文件存在,就主動將目標文件直接移除后再建立
-s 創建一個軟鏈接
創建一個硬鏈接:
創建一個軟鏈接:
文件大小指的是源文件路徑字元的長度.
小常識:我們平時刪除文件通常只是將文件的inode號給刪除了,文件依然存在.
特殊文件:b 塊設備 c 字元設備 不佔用空間大小
第一個數字錶示主設備號:指的是設備類型.第二個數字錶示次設備號.
檢查磁碟空閑空間 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]來表示.一個硬碟上最多有四個主分區,或者三個主分區加一個擴展分區.
掛載:當我們所建立起來的磁碟文件系統想在linux上面啟用的時候,一定要將它掛在到文件系統上.而所謂的掛載點則是該分區所在的目錄,且該目錄下的所有目錄都歸在該分區所有.掛載的時候得先建立起掛載的目錄才行!
如果用來掛載的目錄原先不為空,那麼掛載了文件系統之後,原目錄下的文件就是暫時隱藏起來,這裡注意,並不是消失了.等到原partition被umount之後,則該目錄的內容就會再次顯示.
mount /dev/sdb1(設備) /mnt/usb(目錄)
-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 只能壓縮單個文件,不能對目錄進行壓縮.
zip/unzip 後綴:.zip 可以壓縮目錄,需要指定壓縮後文件的名字,能夠保留原文件
格式:zip 壓縮後文件名 原文件1 原文件2 原文件3 ……
歸檔:把多個零散的文件打包成一個單個文件.不是壓縮,只是打包封存起來.
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 將內容展開,重新釋放
tar -tf 不用展開的情況下看看所歸檔的文件
tar 可以直接調用壓縮工具,即歸檔,又壓縮
tar –zcf 使用gzip進行壓縮
tar –jcf 調用bzip2進行壓縮
tar –zxf 解壓縮以gzip壓縮的文件
tar –jxf 解壓縮以bzip2壓縮的文件
本文出自 「諸葛草廬」 博客,請務必保留此出處http://lyp0909.blog.51cto.com/508999/469293
[火星人 ] Linux基礎知識總結(四)已經有621次圍觀