本文內容:
索引節點
硬鏈接與軟鏈接
重定向
用戶組
useradd命令
索引節點:
索引節點包含了一個表,包含了有關文件的元數據,包含:
文件類型,權限,UID,GID 鏈接數(指向這個文件名路徑名稱個數)
該文件的大小和不同的時間戳。
指向磁盤上文件的數據塊指針。
有關文件的其他數據。
索引節點與數據是分開存放的。
cp命令:分配一個空閑的inode號,在inode表中生成新條目,在目錄中創建一個目錄項,將名稱與inode編號關聯,拷貝數據生成新的文件。
rm 命令:鏈接數遞減,從而釋放的inode號可以被重用,把數據塊放在空閑列表中 刪除目錄項 數據實際上不會馬上被刪除,但當另一個文件使用數據塊 時將被覆蓋。
mv命令:如果mv命令的目標和源在相同的文件系統,作為mv 命令 用新的文件名創建對應新的目錄項 刪除舊目錄條目對應的舊的文件名 不影響inode表(除時間戳)或磁盤上的數據位置,此時沒有數據被移動!所以速度很快,如果目標和源在一個不同的文件系統, mv相當于cp和rm。
硬鏈接:一個文件的一個或多個文件名,本質上是一個文件。
特點:創建硬鏈接會增加額外的記錄項以引用文件 v
對應于同一文件系統上一個物理文件 v
每個目錄引用相同的inode號。
創建時鏈接數遞增,刪除文件時,rm命令遞減計數的鏈接
文件要存在,至少有一個鏈接數,當鏈接數為零時,該文件被刪除
v 不能跨越驅動器或分區
語法: ln filename [linkname]
可以看出,f1和f2實際上是一個文件。
軟鏈接:軟鏈接文件有類似于Windows的快捷方式。它實際上是一個特殊的文件。在符號連接中,文件實際上是一個文本文件,其中包含的有另一文件的位置信息。
I/O:輸入與輸出
程序:指令+數據 讀入數據:Input 輸出數據:Output
打開的文件都有一個fd: file descriptor (文件描述符) v
Linux給程序提供三種I/O設備 ?
標準輸入(STDIN)-0 默認接受來自鍵盤的輸入 ?
標準輸出(STDOUT)-1 默認輸出到終端窗口 ?
標準錯誤(STDERR)-2 默認輸出到終端窗口
STDOUT和STDERR可以被重定向到文件:
命令 操作符號 文件名
支持的操作符號包括:
> 把STDOUT重定向到文件
2> 把STDERR重定向到文件
&> 把所有輸出重定向到文件
標準輸入重定向:
多行重定向:cat <<E >f1
>
>
>E
單行重定向:
cat >f1
xxx
yyy
mail重定向:又稱就地文本
mail -s hi wang <<eof
>aa
>bb
>cc
>eof
tr命令:轉換或者刪除字符串
tr [options] str1 str2
eg:
tr ‘a-z’ ‘A-Z’
tr ‘a-z’ ‘A-Z’ </etc/issue
選項:
-c:取補集。
-d:刪除字符,不做轉換。
-s:把連續的重復的字符用一個字符顯示。
-t:str1 str2 刪除第一字符集較第二字符集多出的部分。
練習:
1、將/etc/issue文件中的內容轉換為大寫后保存至/tmp/issue.out文件中
2、將當前系統登錄用戶的信息轉換為大寫后保存至/tmp/who.out文件中 v
3、一個linux用戶給root發郵件,要求郵件標題為”help”,郵件正文如下: Hello, I am 用戶名,the system version is here,please help me to check it ,thanks! 操作系統版本信息
4、將/root/下文件列表,顯示成一行,并文件名之間用空格隔開。
5、file1文件的內容為:”1 2 3 4 5 6 7 8 9 10” 計算出所有數字的總和
6、刪除Windows文本文件中的'^M'字符
7、處理字符串“xt.,l 1 jr#!$mn 2 c*/fe 3 uz 4”,只保留其中的數字 和空格
管道(使用符號“|”表示)用來連接命令 命令1 | 命令2 | 命令3 | … ? 將命令1的STDOUT發送給命令2的STDIN,命令2的 STDOUT發送到命令3的 STDIN ,STDERR默認不能通過管道轉發,可利用2>&1 或 |& 實現。 ?
最后一個命令會在當前shell進程的子shell進程中執行用來組合多種工具的功能。
eg:ls | tr 'a-z' 'A-Z'。
tee:可以繼續標準輸出。同時寫進文件中。
set -C:禁用覆蓋功能。
set +C:取消禁用。
/dev/null:垃圾桶,不占空間。
用戶,組和權限
linux用戶:Uername/UID
管理員:root uid為0
一般用戶:1-65535
系統用戶:1-499 對守護進程獲取資源進行權限分配。(不需要登錄)
登錄用戶:500+
組:Groupname/GID
管理員組:root,0
普通組:
系統組:1-499
用戶組:500+
主要組:用戶必須屬于一個且只有一個主組
組名同用戶名,且僅包含一個用戶,又叫私有組。
用戶的附加組(輔助組)
一個用戶可以屬于0個或多個附加組。
組的信息保存在/etc/group下。
id 用戶:查看用戶,屬組信息。
運行中的程序:進程
以進程發起者身份運行:
root:/bin/cat
liuzhuo:/bin/cat
進程所能訪問資源的權限取決于進程的運行者的身份。
用戶和組的配置文件:
/etc/passwd:用戶及其屬性信息(名稱、UID、主組ID等)
/etc/group:組及其屬性信息
/etc/shadow:用戶密碼及其相關屬性
/etc/gshadow:組密碼及其相關屬性
passwd文件格式:
login name:登錄用名(wang) v
passwd:密碼 (x) v
UID:用戶身份編號 (1000) v
GID:登錄默認所在組編號 (1000) v
GECOS:用戶全名或注釋 v
home directory:用戶主目錄 (/home/wang) v
shell:用戶默認使用shell (/bin/bash)
chsh -s+路徑 改shell
linux通過UID來識別是管理員還是普通用戶。只認ID 不認人。
shadow文件格式
登錄用名 v
用戶密碼:一般用sha512加密 v($6)
從1970年1月1日起到密碼最近一次被更改的時間
密碼再過幾天可以被變更(0表示隨時可被變更)
密碼再過幾天必須被變更(99999表示永不過期)
密碼過期前幾天系統提醒用戶(默認為一周)
密碼過期幾天后帳號會被鎖定
從1970年1月1日算起,多少天后帳號失效。
group配置文件:
groups:查看某個用戶屬于哪個用戶組
id +用戶名:查看用戶的信息。
root:x:0:(組的成員) 0為組id。
默認情況下,創建一個文件的所有者和所屬組同名。
bin:::bin,daemon
第一個組名,第二個密碼,第三個放該組的管理員賬戶
newgrp:臨時性切換屬組。
vipw=vi /etc/passwd
vigr=vi /etc/group 具有語法檢查功能。
pwck:檢查語法
grpck:檢查語法
useradd:創建用戶
useradd [options] 用戶名
useradd -u 1234 zhang 指定UID
useradd -g wang li 指定組名或者GID
-o 配合-u 選項,不檢查UID的唯一性
-c "COMMENT":用戶的注釋信息 -d HOME_DIR: 以指定的路徑(不存在)為家目錄 -s SHELL: 指明用戶的默認shell程序 可用列表在/etc/shells文件中。
對于服務等系統應用,shell可以設置成為/sbin/nologin 同時加-r定義為系統用戶,這樣就不會自動創建家目錄。
-G GROUP1[,GROUP2,…]:為用戶指明附加組,組必須事先存在
-N 不創建私用組做主組,使用users組做主組
-r: 創建系統用戶 CentOS 6: ID<500,CentOS 7: ID<1000
家目錄模板文件夾:/etc/skel
cat /etc/default/useradd 添加用戶的配置文件
useradd -D 顯示useradd配置文件信息。
原創文章,作者:liuzhuo,如若轉載,請注明出處:http://www.www58058.com/30503