linux 文件系統管理,用戶管理

inode(index node)表中包含文件系統全部文件列表
一個節點(索引節點)是在一個表項,包含有關文件的信息(元數據),包括:
文件類型,權限,UID,GID,連接數(指向這個文件名路徑名稱個數),該文件的大小和不一樣的時間戳,指向磁盤上文件的數據塊指針,有關文件的其餘數據
文件引用一個是inode號,人是經過文件名來引用一個文件
一個目錄是目錄下的文件名和文件inode號之間的映射

CP的命令:
分配一個空閒的inode號,在inode表中生成新條目;在目錄中建立一個目錄項,將名稱與inode編號關聯;拷貝數據生成新的文件。
node

wKioL1ecUMGSzCDKAAAMkqbpfOM198.png-wh_50

rm命令:
連接數遞減,從而釋放的inode號能夠被再次利用;把數據塊放在空閒列表中;刪除目錄項,數據實際上不會立刻被刪除,但當另外一個文件使用數據塊時將被覆蓋。

mv命令:
1.若是mv命令的目標和源在相同的文件系統:
用新的文件名建立對應新的目錄項,刪除舊目錄條目對應的舊的文件名,不影響inode表(除時間戳)或磁盤上的數據位置。沒有數據被移動!
2.若是目標和源在一個不一樣的文件系統:
mv至關於cp和rm
wKioL1ecUO3w4wLiAAAn5lkC-O4418.png-wh_50硬連接
建立硬連接:
會增長額外的記錄項以引用文件,對應於同一文件系統上一個物理文件,每一個目錄引用相同的inode號,建立時連接數遞增
刪除文件時:
rm命令遞減計數的連接,文件要存在,至少有一個連接數,當連接數爲零時,該文件被刪除
不能跨越驅動器或分區,不能對目錄建立硬連接
語法: ln filename [linkname]

軟連接(符號連接)
一個符號連接指向另外一個文件,ls -l的顯示連接的名稱和引用的文件,一個符號連接的內容是它引用文件的名稱
能夠對目錄進行,能夠跨分區
指向的是另外一個文件的路徑;其大小爲指向的路徑字符串的長度;不增長或減小目標文件inode的引用計數;
語法:ln -s filename [linkname]文件能夠包含多種類型的數據
linux

wKioL1ecUSOiyKOWAAAfT4hqkm4426.png-wh_50

檢查文文件類型,而後肯定適當的開放命令或應用程序使用
file [options] <filename>...
Option:
-b列出文件辨識結果時,不顯示文件名稱。
-c詳細顯示指令執行過程,便於排錯或分析程序執行
-f列出文件中文件名的文件類型
-F使用指定分隔符號替換輸出文件名後默認的」:」分隔符
-i輸出mime類型的字符串
-L查看對應軟連接對應文件的文件類型
-z嘗試去解讀壓縮文件的內容
--help顯示命令在線幫助

數據流重定向
做用:把I/O頻道重定向入文件,使用管道連接命令
程序有指令數據組成
讀入數據:Input
輸出數據:Output
打開的文件都有一個fd: file descriptor (文件描述符)

wKioL1ecUUeBHpX1AAATVKzQOuQ455.png-wh_50Linux給程序提供三種I/O設備
標準輸入(STDIN)-0默認接受來自鍵盤的輸入
標準輸出(STDOUT)-1默認輸出到終端窗口
標準錯誤(STDERR)-2默認輸出到終端窗口
I/O重定向:改變默認位置
STDOUT和STDERR能夠被重定向到文件:
命令操做符號文件名

支持的操做符號包括:
> 把STDOUT重定向到文件
2>把STDERR重定向到文件
&>把全部輸出重定向到文件
> 文件內容會被覆蓋
set -C: 禁止將內容覆蓋已有文件,但可追加
強制覆蓋:>|
set +C: 容許覆蓋
(set -C 只對當前shell有效)
wKiom1ecUXXA_9OCAAAnGVf64no045.png-wh_50
算法

>> 原有內容基礎上,追加內容
2>: 覆蓋重定向錯誤輸出數據流;
2>>: 追加劇定向錯誤輸出數據流;

標準輸出和錯誤輸出各自定向至不一樣位置:
COMMAND > /path/to/file.out 2> /path/to/error.outshell

wKiom1ecUaDTnhp6AABAeecAPq4078.png-wh_50

合併標準輸出和錯誤輸出爲同一個數據流進行重定向:
&>:覆蓋重定向
&>>:追加劇定向
COMMAND > /path/to/file.out 2>&1 (順序很重要)
COMMAND >> /path/to/file.out 2>>&1vim

wKioL1ecUdCQlr4ZAAA9CNUvU7k297.png-wh_50

find /etc -name passwd 2> /dev/null (將無用的錯誤信息丟棄)
():合併多個程序的STDOUT
(cal2007;cal2008)> all.txt
wKioL1ecUeiSpFToAAAN7dSQnVI310.png-wh_50
centos

Cat > filea < fileb
ctrl+d離開,可使用文件來代替鍵盤的輸入
使用「<<終止詞」命令從鍵盤把多行重導向給STDIN
直到終止詞位置的全部文本都發送給STDIN
有時被稱爲就地文本(heretext)


tr 轉換和刪除字符
tr[OPTION]... SET1 [SET2]
選項:
-c或——complerment:取字符集的補集
-d或——delete:刪除全部屬於第一字符集的字符;
-s或—squeeze-repeats:把連續重複的字符以單獨一個字符表示
-t或--truncate-set1:先刪除第一字符集較第二字符集多出的字符
使用<來重定向標準輸入
tr ‘a-z’ ‘A-Z’ < /etc/issue
該命令會把/etc/issue中的小寫字符都轉換成大寫字符
tr –d ‘abc’ < /etc/fstab 刪除fstab文件中的全部abc中任意字符安全

wKiom1ecUhqQStUeAABFfgYAfVw130.png-wh_50
管道(使用符號「|」表示)用來鏈接命令
命令1 | 命令2 | 命令3 | …
將命令1的STDOUT發送給命令2的STDIN,命令2的STDOUT發送到命令3的STDIN
STDERR默認不能經過管道轉發,可利用2>&1 或|& 實現
最後一個命令會在當前shell進程的子shell進程中執行用來
組合多種工具的功能
  ls | tr 'a-z' 'A-Z'less

wKioL1ecUjXAqDOqAAAJh-M_VIQ242.png-wh_50

less :一頁一頁地查看輸入:
  ls -l /etc | less
mail:經過電子郵件發送輸入:
  echo "testemail" | mail -s "test" user@example.com
lpr:把輸入發送給打印機
  echo "testprint" | lpr -P printer_name

雙重定向:命令1 | tee文件名| 命令2
把命令1的STDOUT保存在文件名中,而後管道輸入給命令2
使用:保存不一樣階段的輸出,複雜管道的故障排除,同時查看和記錄輸出。編輯器

wKiom1ecUlWh1PLVAAAQkbIibj4194.png-wh_50

一、將/etc/issue文件中的內容轉換爲大寫後保存至/tmp/issue.out文件中ide

wKiom1ecU0_yddkIAAAXS9wbZpU124.png-wh_50

二、將當前系統登陸用戶的信息轉換爲大寫後保存至/tmp/who.out文件中

wKiom1ee_EbRqJFXAAARtrFCYdQ932.png-wh_50

三、一個linux用戶給root發郵件,要求郵件標題爲」help」,郵件正文以下:
   Hello, I am 用戶名,the system version is here,pleasehelp me to check it ,thanks!
   操做系統版本信息

wKioL1efAmSSfpgsAABToYbSmUc076.png-wh_50

四、將/root/下文件列表,顯示成一行,並文件名之間用空格隔開。

wKioL1efAuCxKoI3AAAOABIe18Y423.png-wh_50

五、file1文件的內容爲:」1 2 3 4 5 6 7 8 9 10」 計算出全部數字的總和

wKioL1efAw2yC2RiAAAN0ifqFQE963.png-wh_50

六、刪除Windows文本文件中的'^M'字符

wKioL1efBRfTC8wqAAAPqCiUATA764.png-wh_50

七、處理字符串「xt.,l 1 jr#!$mn2 c*/fe3 uz4」,只保留其中的數字和空格
wKioL1efBVugvc7yAAAN0ifqFQE550.png-wh_50

八、將PATH變量每一個目錄顯示在獨立的一行

wKiom1efBrHiYrDmAAATRIBMThw448.png-wh_50

九、刪除指定文件的空行

wKiom1efB5vy0lEWAAAR8_zZHTo766.png-wh_50

十、將文件中每一個單詞(字母)顯示在獨立的一行,並沒有空行

wKiom1efB-qDavYIAAAMVq8g7IE163.png-wh_50

令牌token,identity
Linux用戶:Username/UID
管理員:root, 0
普通用戶:1-65535
系統用戶:1-499(CENTOS6), 1-999(CENTOS7)
登陸用戶:500+(CENTOS6), 1000+(CENTOS7)

Linux安全上下文
運行中的程序:進程(process)
以進程發起者的身份運行:
root: /bin/cat
user: /bin/cat
進程所可以訪問資源的權限取決於進程的運行者的身份

Linux組的類別:
主要組(主組):GID位於/etc/passwd中,用戶必須屬於一個且只有一個主組
私有組:組名同用戶名,且僅包含一個用戶,是默認的主組,能夠不存在
附加組(輔助組):一個用戶能夠屬於零個或多個輔助組

Linux用戶和組的主要配置文件:
/etc/passwd:用戶及其屬性信息(名稱、UID、主組ID等)
/etc/group:組及其屬性信息
/etc/shadow:用戶密碼及其相關屬性
/etc/gshadow:組密碼及其相關屬性

/etc/passwd文件結構
login name:用名名
passwd:密碼(x)
UID:用戶身份編號
GID:登陸默認所在組(主組)編號
GECOS:用戶全名或註釋
home directory:用戶主目錄
shell:用戶默認使用shell

/etc/shadow文件結構
用戶名
用戶密碼:通常用sha512加密
從1970年1月1日起到密碼最近一次被更改的時間
密碼再過幾天能夠被變動(0表示隨時可被變動)
密碼再過幾天必須被變動(99999表示永不過時)
密碼過時前幾天系統提醒用戶(默認爲一週)
密碼過時幾天後賬號會被鎖定
從1970年1月1日算起,多少天后賬號失效。

加密機制:
加密:明文--> 密文
解密:密文--> 明文
單向加密:哈希算法,原文不一樣,密文必不一樣
相同算法定長輸出,得到密文不可逆推出原始數據
雪崩效應:初始條件的微小改變,引發結果的巨大改變
md5: message digest, 128bits
sha1: secure hash algorithm, 160bits
sha224: 224bits
sha256: 256bits
sha384: 384bits
sha512: 512bits
更改加密算法authconfig--passalgo=sha256 --update
設置安全密碼方法:
使用數字、大寫字母、小寫字母及特殊字符中至少3種;足夠長;使用隨機密碼;按期更換;不要使用最近曾經使用過的密碼。

/etc/group文件結構
羣組名稱:就是羣組名稱
羣組密碼:一般不須要設定,密碼是被記錄在/etc/gshadow
GID:就是羣組的ID
以當前組爲附加組的用戶列
組管理員列表:組管理員的列表,更改組密碼和成員
以當前組爲附加組的用戶列表:(分隔符爲逗號)

wKiom1ecUuKSsBeqAAAjx_dq_DA408.png-wh_50vipw和vigr:調用vim編輯器修改/etc/passwd、/etc/group帶有語法檢查功能
pwck和grpck:對/etc/passwd、/etc/group語法進行檢查

添加新用戶
useradd[options] LOGIN
-u UID: [UID_MIN, UID_MAX]定義在/etc/login.defs
-o 配合-u 選項,不檢查UID的惟一性
-g GID:指明用戶所屬基本組,可爲組名,也能夠GID
-c "COMMENT":用戶的註釋信息
-d HOME_DIR:以指定的路徑(不存在)爲家目錄
-s SHELL: 指明用戶的默認shell程序
可用列表在/etc/shells文件中
-G GROUP1[,GROUP2,...]:爲用戶指明附加組,組必須事先存在
-N 不建立私用組作主組,使用users組作主組
-r: 建立系統用戶CentOS 6: ID<500,CentOS 7: ID<1000

默認值設定:/etc/default/useradd文件中
顯示或更改默認設置:
useradd-D
useradd–D -s SHELL
默認用戶家目錄參考文件
/etc/skel

一、建立用戶gentoo,附加組爲bin和root,默認shell爲/bin/csh,註釋信息爲"Gentoo Distribution"

wKioL1ee9BDQLT2AAAAXRXlADDQ389.png-wh_50

二、建立下面的用戶、組和組成員關係
名字爲admins 的組
用戶natasha,使用admins 做爲附屬組
用戶harry,也使用admins 做爲附屬組
用戶sarah,不可交互登陸系統,且不是admins 的成員,natasha,harry,sarah密碼都是centos

wKioL1ee9B_i-HiQAABWVhFnVjU722.png-wh_50

相關文章
相關標籤/搜索