linux的文件系統
根文件系統(rootfs)
root filesystem
LSB, FHS:
/etc ,/usr, /var, /root, /home, /dev
/boot: 引導文件存放的目錄:操作系統首先啓動的內核文件(vmliuxz)、引導加載器(bootloader,grub)都存放在此目錄
/bin: 供所有用戶使用的基本命令: 不能關聯到獨立分區。os啓動即會用到的程序
/sbin(system binary): 管理類的基本命令,不能關聯到獨立分區。os啓動即會用到的程序
/lib:基本共享庫文件,系統啓動會用的庫文件,內核模塊文件(/lib/modules)32位程序依賴
/lib64: 64位程序依賴。輔助共享庫件存放的位置
/etc: 配置文件目錄(大多數是純文本文件),/etc/opt /etc/X11圖形界面的配置文件
/home/IUSERNAME: 普通用戶家目錄、
/root: 管理員的家目錄
/media:關聯便攜式移動設備 /usb /cdrom
/mnt:掛載臨時的文件系統或者關聯位置
/dev : 特殊文件(軟件)和設備文件存放位置 b:block device(可隨機訪問) c:character device(線性訪問,有訪問先後)
/opt: 第三方應用程序(輔件類)安裝位置。首次使用是空的
/srv:系統上運行的服務用的中間數據存放的位置
/tmp: 臨時文件。
/usr : 通常會關聯到獨立分區。
/usr/bin:保證系統擁有完整功能而提供的應用程序
/usr/sbin:管理員可以使用的命令.配置文件在/etc下
/usr/ib64
/usr/include:C程序的頭文件(header file)
/usr/:share:結構獨立化的數據。如:doc、man
/local: 第三方應用程序安裝位置 /bin /sbin /lib64 等
/var: 可變數據文件。
/cache : 應用程序緩存數據目錄
/lib: 應用程序狀態信息數據
/local: 專用天爲/usr/local下的應用程序存儲可變數據
/lock: 鎖文件
/log: 日誌目錄及文件
/opt: 專用於爲/opt下的應用程序存儲可變數據
/run: 與運行中的進程相關的數據(進程的PID文件)
/spool: 緩存池
/tmp: 系統再次重啓過程中產生的臨時文件
/proc: 僞文件系統。虛擬文件系統。用於輸出內核與進程信息相關的虛擬文件
/sys: 用於輸出當前系統上硬件設備相關信息的虛擬文件系統
/misc: 備用的雜項
/lost+found: 格式化後產生的
/selinux: selinux相關的安全信息策略等信息的存儲位置
Linux上的應用程序的組成部分
二進制:/bin, /sbin/ /usr/bin /usr/sbin /usr/local/bin /usr/lcoal/sbin
庫文件:/lib /lin64 、/usr/lib /usr/lib64 /usr/local/lib /usr/local/lib64
配置文件: /etc /etc/DIRECTORY /etc/local/etc
幫助文件: /etc/share/man /usr/share/doc /usr/lcal/share/man /usr/local/share/doc
Linux下的文件類型
-(file): 普通文件
-d(dir): 目錄文件
-b(block): 塊設備.
-c(charater): 字符設備
-l( symbol link): 軟件連接。符號連接
-p(pipe): 管道文件
-s(socket): 套接字文件,接口文件。
Linux系統管理命令
關機 halt reboot poweroff
-f 強制不調用shutdown
-p 切斷電源
shutdown -r重啓 -h關機後會切斷電源。 -c取消關機或重啓操作、 TIME: now 立刻 +num 從命令提交開始之後num時間之後。 hh:mm。絕對時間表示
Linux 用戶信息查詢命令
whoami: 顯示當前登錄的有效用戶 who:顯示當前所有的登錄會話 w:系統當前所有登錄會話及所做的操作。
目錄管理類命令:
命令行展開:
~: 展開爲用戶的主目錄
~USERNAME:展開爲指定用戶的主目錄
{}: 可承載一個以逗號分隔的列表,並將其展開爲多個路徑
/tmp/{a,b} = /tmp/a, /tmp/b
/tmp/{a,b}/jea = /tmp/a/jea, /tmp/b/jea
命令的執行結果:
0:成功
1-255:失敗
bash使用特殊變量$?保存最近一條執行狀態結果
命令的執行結果:命令的返回值。 命令的執行狀態
cd,pwd,ls,mkdir, rmdir 藍色表示目錄
mkdir 創建目錄
-p: 遞歸創建目錄。存在不報錯。
-v(verbose): 顯示創建詳細過程
-m mode: 創建目錄時直接指定權限
tree: 顯示目錄樹
-d :只顯示目錄
-l level: 指定顯示的層級數目
-P :只顯示匹配Pattern 的目錄
rmdir:刪除目錄(只能刪除空目錄)
-v : 顯示過程
-f : 強制刪除
桌面
文件查看類命令:
cat,tac
more, less , tail .head
head tail :獲取文件的前幾行 後幾行 (默認是10)
-c: 指定獲取前多少個字節
-n: 指定獲取前多少行
文件的時間戳管理工具:
touch
文件:metadata , data
查看文件的狀態:stat
三個時間戳:
access time: 訪問時間 atime , 讀取文件內容
modify time: 修改時間 mtime 改變文件內容
change time :改變時間 ctime 元數據發生改變
-a: 修改atime
-m:修改mtime
-c :如果不存在,則不創建
cp: 複製, 源, 目標
-i 交互式
-r 遞歸複製
-a: 歸檔複製
mv:移動
nano :全屏幕的文件編輯器
Bash的基礎特性:
1.命令別名(alias)(僅對當前shell有效,如果想要永久有效,僅對當前用戶: ~/.bashrc 對所有用戶:/etc/bashrc)
alias ls="ls -l" 取消別名:unalias ls
bash進程重新讀取配置文件 兩個種方式:source /path.to/config_file ./path/to/config_file
2.glob (globing)可在bash中實現文件名通配 例如:* (任意長度任意字符),?(任意單個字符), [](), ^(取反,如[^0-9] 所有非數字的)
bash的快捷鍵、
ctrl + l 相當於clear
ctrl + a 首部
ctrl + e 尾部
ctrl + w 按單詞刪除
ctrl +c 終止當前命令
ctrl +u 刪除命令行首到光標所在處的所有內容
ctrl + k 刪除光標所在處到尾部的內容
Bash中的I/O重定向及管理
程序:指令 + 數據
讀入數據:input
輸入數據: output
每一個打開的文件都有一個fd:文件描述符file descriptor
標準輸入:keyborad
標準輸出:monitor 顯示器 文件描述符爲1
標準錯誤:monitor 顯示器 文件描述符爲2
I/O重定向:改變標準位置
輸出重定向:command new_pos, command >> new_pos
set -C 禁止輸入重定向覆蓋輸入到文件
2>:覆蓋重定向錯誤輸出數據流 (將錯誤輸出輸出到文件)
標準輸出和標準錯誤輸出重定向
command >file 2>file_2
合併標準輸出和錯誤輸出爲同一個數據流進行重定向
&> file 把正確和錯誤都重定向到一個文件中
command >file 2>&1 把錯誤數據流重定向到第一個數據流之中
tr: 轉換或刪除字符 transport
tr abc ABC 輸入a123bc 輸出A123BC
tr -d 刪除指定字符 tr -d a 輸入abc 輸出bc tr 'a-z' 'A-Z' 轉換成大寫
<<此處文檔
例如 cat >> /tmp/test.out <<EOF 輸入:hello EOF結尾 輸出:hello
tee:一處輸入。兩處輸出。 tee /tmp/test
文本操作工具
wc:
-c:字節數
-l:行數
-w:僅僅靠空白字符分開的單詞
sort: 排序 -f 忽略大小寫 -r 逆序。 -k # :以指定字段爲標準進行排序 -u去重 -n按數據排序 -t:指定分隔符
cut:以指定字符對每一行進行切割。 cut -d: -f1,2 a.txt 輸出root:x (原來的:root:x:0:root)
-d: 指定分隔符。decriptor
-f: 第1個到第3個字段
uniq :去重
連續且完全一樣纔是重複
-c:顯示每行出現的次數
-d顯示重複的行
用戶和組管理
Linux用戶:Username/UID
管理員:root 0,
普通用戶:1-65535
系統用戶:1-499 守護進行獲取資源進行權限分配
登錄用戶:500+ 交互式登陸
Linux組: Group/GID
管理員組:root , 0
普通組:
系統組:1-499
普通組:500+
權限指派的一種方式。
Linux的安全上下文:
運行中的程序:進程(process)
以程序發起者的身份運行
root: cat
cwb:cat
Linux組的類別
用戶的基本組(主組):
組名同用戶名且僅包含一個用戶:私有組。一個用戶創建,系統自動給其分配私有組
cwb:x:1000:1000:cwb:/home/cwb:/bin/bash
用戶名:密碼(x:佔位符):用戶ID:組ID:主目錄:默認shell
用戶的附加組(額外組):
Linux用戶和組相關的配置文件:
/etc/passwd 用戶及其屬性信息(名稱。UID。基本組ID等)密碼佔位符
/etc/group 組及其屬性信息
/etc/shadow 用戶密碼及相關屬性
/etc/gshadow 組密碼及相關屬性
useradd 用戶名:創建用戶名
-u :指定UID
-g:基本組GID
-c “comment”:註釋內容
-d:指定家目錄 -d /path/to/home 用戶名
-s: 指定 shell文件的路徑,可能列表在/etc/shells文件
-G:指定用戶所屬的附加組。可以有多個附加組用戶‘,’隔開、組必須事先存在
-r:創建系統用戶 centos 6 ID<500 centos 7 ID<1000
例如:useradd gentoo -s /bin/csh -c "Gentoo Distribution" -G linux
組創建:groupadd
-g:指明GID。
-r:創建系統組 centos 6 ID<500 centos 7 ID<1000
查看用戶相關的ID信息:id
-u:UID
-g:GID
-G:groups
-n: Name
切換用戶或以其他用戶身份執行命令:su
su UserName: 非登陸式切換,即不會讀取目標用戶的配置文件
su - UserName: 登錄式切換。會讀取目標用戶的配置文件。完全切換
root su到其它用戶無須密碼, 非root用戶需要密碼
用戶屬性修改:usermod
-u:新的UID
-g:新的基本組GID
-G:groups新附加組,原來的附加組會被覆蓋,若保留原來的,需要使用-a選項。表示append
-l login:修改爲新的名字
-c :新的註釋
-d Home :新的家目錄
-L鎖定用戶。鎖定之後無法登陸, -U:解鎖用戶
-e YY-MM-DD:設定用戶過期日期
給用戶添加密碼:passwd
passwd UserName: 修改指定用戶的密碼。僅root可以
passwd :用戶修改自己的密碼
-l(小寫的): 鎖定用戶 -u:解鎖用戶
-n mindays :指定最短使用期限
-x maxdays:指定最大使用期限
-w warning:提前多少開始警告
--stdin : 從標準輸入接收用戶密碼 echo "PASSWORD" | passwd --stdin USERNAME(把PASSWORD當作密碼通過管道傳入passwd 中)
/dev/null: 數據黑洞。
/dev/zero:
刪除用戶:userdel:
-r: 刪除用戶家目錄
組屬性修改:groupmod
-n group_name:新的名字
-g GID:新的GID
組刪除:groupdel
組添加密碼:gpasswd 組名
-a user :將user添加到指定組中
-d user:刪除用戶user的以當前組名的附加組
-A user1,user2,user3: 設置有管理權限的用戶 gpasswd -A user1,user2,user3 root
newgrp :臨時切換基本組
如何用戶本不屬於此組,則需要密碼
修改用戶屬性:chage 更改用戶密碼過期信息
其它命令:chfn (finger顯示信息).chsh 修改shell.
權限管理:
ower 主u
group 組g
other 其它o
r:readable 可讀 可以使用文件查看類工具獲取其內容 4
w:writable 可寫 。 2
x:excutable 執行 1
修改權限:chmod
-R :遞歸修改權限。父目錄和子目錄、文件等權限都會被修改
直接指定:Mode u=rx g=r-x o= 或 ug=
chmod --reference=RFILE FILE 參考RFILE文件的權限,修改爲和RFILE權限一樣
chown:修改文件的屬主 chown cwb file
OWNER:GROUP
:GROUP
-R遞歸修改
修改文件的屬性:chgrp
文件或創建時的遮罩碼 :umask
FILE: 666-umask 如果某類的用戶的權限減得的結果中存在x權限,則將其權限+1
DIR : 777-umask
umask :查看 0022:第一個0不要看,創建的目錄權限都是666-022=644權限,如果有x行權限會+1、如果是目錄別不會+1、只有文件會+1.
umask # 設定