7月29號,馬哥linux學習第五天,學習內容主要:
一、索引節點
二、硬鏈接與軟鏈接
三、重定向和管道
四、用戶和用戶組
一、索引節點(index node)一個節點 (索引節點)是在一個表項,包含有關文件的信息 ( 元數據 ),包括:
文件類型,權限,UID,GID
鏈接數(指向這個文件名路徑名稱個數)
該文件的大小和不同的時間戳
指向磁盤上文件的數據塊指針
有關文件的其他數據
一個目錄是目錄下的文件名和文件inode號之間的映射
CP命令和inode:
分配一個空閒的inode號,在inode表中生成新條目 在目錄中創建一個目錄項,將名稱與 inode編號關聯 拷貝數據生成新的文件
cp -f /etc/issue/ f1 將/etc/issue/刪除再創建f1文件
rm命令和inode:
鏈接數遞減,從而釋放的inode號可以被重用
把數據塊放在空閒列表中
刪除目錄項 (數據實際上不會馬上被刪除,但當另一個文件使用數據塊時將被覆蓋)
mv命令和inode:
目標和源在相同的文件系統:用新的文件名創建對應新的目錄項 刪除舊目錄條目對應的舊的文件名 不影響inode表(除時間戳)或磁盤上的數據位置:沒有 數據被移動!
目標和源在一個不同的文件系統: mv相當於cp和rm
二、硬鏈接與軟鏈接硬鏈接
語法: ln filename [linkname ]
創建硬鏈接會增加額外的記錄項以引用文件;對應於同一文件系統上一個物理文件;每個目錄引用相同的inode號;創建時鏈接數遞增;刪除文件時: rm命令遞減計數的鏈接;文件要存在,至少有一個鏈接數當鏈接數為零時,該文件被刪除;不能跨越驅動器或分區,不能給目錄創硬鏈接。
軟鏈接
語法:ln -s filename [linkname]
一個符號鏈接指向另一個文件;ls - l的 顯示鏈接的名稱和引用的文件;一個符號鏈接的內容是它引用文件的名稱;可以對目錄進行;可以跨分區;指向的是另一個文件的路徑,其大小為指向的路徑字符串的長度;不增加或減少目標文件inode的引用計數。
三、重定向標准輸入與輸出:
Linux給程序提供三種I/O設備:
標准輸入(STDIN)-0 默認接受來自鍵盤的輸入
標准輸出(STDOUT)-1 默認輸出到終端窗口
標准錯誤(STDERR)-2 默認輸出到終端窗口
I/O重定向:改變默認位置
STDOUT和STDERR可以被重定向到文件: 命令 操作符號 文件名
支持的操作符號包括:
> 把STDOUT重定向到文件(set -C: 禁止將內容覆蓋已有文件,但可追加 強制覆蓋:>| set +C: 解除禁止)
2> 把STDERR重定向到文件
&> 把所有輸出重定向到文件
( > 文件內容會被覆蓋 >> 原有內容基礎上,追加內容)
標准輸出和錯誤輸出各自定向至不同位置:
COMMAND > /path/to/file.out 2> /path/to/error.out
合並標准輸出和錯誤輸出為同一個數據流進行重定向:
(1)&>:覆蓋重定向 &>>:追加重定向
(2)COMMAND > /path/to/file.out 2> &1 (&1表示同標准正確輸出目錄)
COMMAND >> /path/to/file.out 2> &1
多行重定向:cat <<EOF cat > file <<EOF
():合並多個程序的STDOUT ( cal 2007 ; cal 2008 ) > all.txt
tr命令:轉換和刪除字符
tr [OPTION]... SET1 [SET2]
-c或――complerment:取字符集的補集
-d或――delete:刪除所有屬於第一字符集的字符
-s或―squeeze-repeats:把連續重復的字符以單獨一個字符 表示
-t或--truncate-set1:將第一個字符集對應字符轉化為第二 字符集對應的字符
tr [a-z] [A-Z] 將小寫轉化為大寫(輸入時不能直接回刪,可使用Ctrl+Backspace回刪)
管道
命令1 | 命令2 | 命令3 | …
連接程序,實現將前一個命令的輸出直接定向後一個程序當作輸入的數據流
ls | tr 'a-z' 'A-Z'
STDERR默認不能通過管道轉發,可利用2>&1 或 |& 實現
less :一頁一頁地查看輸入: $ ls -l /etc | less
mail: 通過電子郵件發送輸入: $ echo "test email" | mail \ -s "test" [email protected] lpr:把輸入發送給打印機 $ echo "test print" | lpr -P printer_name
tee命令:一次輸入,兩次輸出(標准輸出+文件)
$命令1 | tee 文件名 | 命令2
把命令1的STDOUT保存在文件名中,然後管道輸入給命令2
cat /etc/issue/ | tee /tmp/issue.tee | tr 'a-z' 'A-Z'
使用: 保存不同階段的輸出;復雜管道的故障排除;同時查看和記錄輸出
特殊設備:
/dev/null
要使用狀態結果而不需要執行結果時,執行結果放入 /dev/null
四、用戶及用戶組用戶user
Linux用戶:Username/UID
管理員:root, 0
普通用戶:1-65535
系統用戶:1-499(CENTOS6), 1-999(CENTOS7) 對守護進程獲取資源進行權限分配
登錄用戶:500(CENTOS6)+, 1000(CENTOS7)+
交互式登錄
組group
Linux組:Groupname/GID
管理員組:root, 0
普通組:
系統組:1-499, 1-999
普通組:500+, 1000+
用戶的主要組(主組):
用戶必須屬於一個且只有一個主組 組名同用戶名,且僅包含一個用戶:私有組
用戶的附加組(輔助組):
一個用戶可以屬於零個或多個輔助組
Linux安全上下文
進程(運行中的程序)所能夠訪問資源的權限取決於進程的運行者的身份
密碼的復雜性策略
使用數字、大寫字母、小寫字母及特殊字符中至少3種
足夠長(至少8位)使用隨機密碼
定期更換;不要使用最近曾經使用過的密碼
加密算法
對稱加密:加密和解密使用一個
非對稱加密:加密和解密使用一對密鑰(公鑰、私鑰)
單向加密::哈希算法,只能加密,不能解密,提取數據的特征碼(定長輸出,雪崩效應)
算法類型:md5 sha1 sha224 sha256 sha384 sha512
用戶和組的主要配置文件
/etc/passwd:用戶及其屬性信息(名稱、UID、主組ID等)
/etc/group:組及其屬性信息
/etc/shadow:用戶密碼及其相關屬性
/etc/gshadow:組密碼及其相關屬性
passwd 文件格式
①login name:登錄用名(wang)
②passwd:密碼 (x)
③UID:用戶身份編號 (1000)
④GID:登錄默認所在組編號 (1000)
⑤GECOS:用戶全名或注釋
⑥home directory:用戶主目錄 (/home/wang)
⑦shell:用戶默認使用shell (/bin/bash)
shadow文件格式
登錄用名
用戶密碼:一般用sha512加密($n$salt$密碼 其中n為加密類型 salt為每次添加的隨機數)
從1970年1月1日起到密碼最近一次被更改的時間
密碼再過幾天可以被變更(0表示隨時可被變更)
密碼再過幾天必須被變更(99999表示永不過期)
密碼過期前幾天系統提醒用戶(默認為一周)
密碼過期幾天後帳號會被鎖定
從1970年1月1日算起,多少天後帳號失效。
group文件格式
群組名稱:就是群組名稱
群組密碼:通常不需要設定,密碼是被記錄在 /etc/gshadow
GID:就是群組的 ID
以當前組為附加組的用戶列表(分隔符為逗號)
gshdow文件格式
群組名稱:就是群組名稱
群組密碼:
組管理員列表:組管理員的列表,更改組密碼和成員
以當前組為附加組的用戶列表:(分隔符為逗號)
本文出自 “笑猴子” 博客,請務必保留此出處http://xiaomonkey.blog.51cto.com/11869371/1833328