1、用戶和組的管理
Linux/Unix是多用戶系統:
root是超級用戶,擁有最高權限。其它用戶及權限由root來管理。對比Windows系統:
控制面板 -> 管理工具 -> 計算機管理 -> 本地用戶和組
-> 右擊某用戶 -> 屬性 -> 隸屬於(哪一個組)
用戶和組是從屬關係shell
一、添加用戶:useradd 用戶名 (只能由root操做)
# id 爲root
# useradd xiaohong
規律:不寫組,會自動建立一個組,組名同於用戶名xiaohong;
建立用戶後,會在/home目錄下,自動生成一個目錄,就是該用戶的主目錄,目錄名也同於用戶名 xiaohong
# cd /home
# ls -l
屬主 屬組
drwx------ 2 xiaohong xiaohong 4096 4月 27 09:32 xiaohong 主目錄名vim
二、設置密碼:passwd 用戶名
# passwd xiaohong 輸入密碼:123 123bash
清密碼:passwd -d 用戶名
# passwd xiaohong 輸入密碼:123 123ssh
三、改變身份: su 用戶名
su 不寫用戶名,默認就是root
目的:獲取某用戶的權限進行管理
注意:從root切換到普通用戶不須要密碼,但從普通用戶切換到root或其餘用戶須要密碼。
練習:從root切換到xiaohong,從xiaohong切換到root
再返回身份 exit su也會啓動一個子進程
查看最初登陸身份:who am i
查看當前用戶名:whoami
查看當前用戶詳細身份:id (用戶id 用戶名 組id 組名)編輯器
2、案例:
一、添加boys組: groupadd 組名
# id 是root
# groupadd boys函數
二、添加girls組:
# groupadd girls工具
三、查看組信息: /etc/group 組管理配置文件
# cat /etc/group 重點查看組id和組名
每一行就是一個組的記錄,每一列就是不一樣的屬性ui
組名 組id(gid)
root:x:0:root
...
xiaohong:x:500:
boys:x:501:
girls:x:502:加密
四、添加用戶tom到boys組:useradd -g 組名 用戶名
# useradd -g boys tom
# passwd tom 密碼:1233d
五、同理,添加用戶alice和rose到girls組:
# useradd -g girls alice
# useradd -g girls rose
# passwd alice 密碼:123
# passwd rose 密碼:123
六、查看用戶帳戶信息: /etc/passwd
# cat /etc/passwd
每一行就是一條帳戶的信息,具備多個屬性:
用戶名:口令佔位符:uid:gid:描述:用戶主目錄:登陸shell
root:x:0:0:root:/root:/bin/bash
...
xiaohong:x:500:500::/home/xiaohong:/bin/bash
tom:x:501:501::/home/tom:/bin/bash
alice:x:502:502::/home/alice:/bin/bash
rose:x:503:502::/home/rose:/bin/bash
uid: 用戶id
gid: 組id
補充:用戶口令文件 /etc/shadow
分別使用root和xiaohong身份查看
$ cat /etc/shadow 權限不夠
# cat /etc/shadow 能夠查看,可是密碼都通過加密MD5
七、用alice的身份,在其主目錄下建立1.txt文件
# id 是root
# su alice 不用密碼
$ cd 回alice主目錄 /home/alice
$ pwd
$ ls
$ touch 1.txt 建立空文件
$ ls -l
-rw-r--r-- 1 alice girls 0 7月 12 10:39 1.txt
(編輯純文本)
八、使用vi編輯器,編輯1.txt文本 (vi基本使用)
1)vi 1.txt 啓動vi 編輯1.txt 純字符界面
默認處於:命令模式 可敲大量命令
2)敲i鍵,切換到:輸入模式 (左下角:插入 INSERT)
3)輸入 I am alice!
4)敲Esc鍵,由輸入模式 -> 命令模式
5)敲 : 鍵(Shift ;)-> 底行模式(冒號模式)
6)在冒號後輸入: wq 回車 保存並退出(Write Quit)
7)補充:若是保存時出現問題,能夠不存盤強制退出
Esc 冒號模式 shift ; q! 回車
九、嘗試讓tom進入alice主目錄中,查看並修改1.txt文件。
$ id 是xiaohong
$ su tom 密碼123
$ cd /home
$ cd alice 權限不夠
$ ls -l
drwx------ 2 alice girls 4096 4月 27 10:50 alice
drwx------ 2 rose girls 4096 4月 27 10:23 rose
drwx------ 2 tom boys 4096 4月 27 10:22 tom
3、文件/目錄的權限:
一、user 全部者(屬主 owner 文件的建立人) u
二、group 全部者所在的組 g
好比:root用戶 在 root組
xiaohong用戶 在 xiaohong組
tom用戶 在 boys組
alice和rose 在girls組
三、other 其餘 o 既不是本身的,也不是同組的
ls -l 開始的10個字符: d rwx --- ---
文件類型 文件/目錄的權限
- --- --- ---
- 文件 全部者 同組人 其餘人
d 目錄
四、三種訪問權限:可讀r 可寫w 可執行x
Read Write eXcute
rwx------ 出現的位置固定 rwx 缺失使用-代替
可讀r r--
可寫w -w-
可執行x --x
- rw- r-- r-- 普通文件:權限 644
本身:可讀、可寫 同組:只讀 其餘:只讀
d rwx r-x r-x 目錄:權限 755
本身:可讀、可寫、可執行
同組:可讀、可執行 其餘:可讀、可執行
- rwx rwx rwx 可執行文件:777
對全部人:可讀、可寫、可執行
權 權限數字表達法
421 (使用八進制)
000 0 ---
001 1 --x
010 2 -w-
011 3 -wx
100 4 r--
101 5 r-x
110 6 rw-
111 7 rwx
權
128 64 32 16 8 4 2 1
01100001
97 = 64 + 32 + 1
將十進制數97 -> 二進制數:01100001
-> 十六進制:0110 0001
61
-> 八進制:01 100 001
141
權
128 64 32 16 8 4 2 1
11101101
237 = 128 + 64 + 32 + 8 + 4 + 1
將十進制數237 -> 二進制數:11101101
十六進制:1110 1101
0~9 A B C D E F ED 程序猿更方便表示二進制
某文件具備以下權限,對於用戶本身擁有可讀、可寫、可執行,對於同組人可讀、可執行,對於其餘人可讀,請寫出該權限的八進制數形式____. 754
- rwx r-x r--
7 5 4
五、概括文件和目錄的各類權限的規律:
1)文件的權限:
r 可讀:可使用vi、cat等查看文件的內容 Disk I 輸入
w 可寫:能夠修改後保持磁盤 Disk O 輸出
x 可執行:能夠直接運行 命令就是可執行文件
2)目錄的權限:
r 可讀:經過ls 查看目錄下的內容
w 可寫:能夠改變目錄下的內容,好比新建、刪除資源
x 可執行:能夠cd進去
爲什麼tom沒法進入alice的主目錄?
$ ls -ld
drwx------ 2 alice girls 4096 4月 27 10:50 .
700
修改成:
drwx-----x
701
六、修改文件/目錄的權限:chmod 規則 文件/目錄名
規則:
角色:u 本身人 user
g 同組人 group
o 其餘人 other
a 全部人 all
操做:+ - 權限:r w x
數字:644 755 ...
舉例: rw- r-- r--
u g o
# chmod u+x 1.txt 針對本身增長可執行權限
# chmod u-x 1.txt 針對本身去除可執行權限
# chmod g+w 1.txt 針對同組人增長可寫權限
# chmod a+rx, g+w 1.txt
全部人均可讀,可執行;同組的可寫
# chmod 777 1.txt 數字表達法
# chmod 644 1.txt
前提:只有文件的擁有者、root用戶能夠修改權限
案例:由root或alice修改alice主目錄的權限,讓tom能進入其中,而且查看目錄下內容,查看1.txt的內容,修改1.txt內容。
由alice修改:讓tom能cd進入
$ id 是alice
$ cd 在主目錄中
$ ls -ld 權限 700 rwx --- ---
$ chmod o+x . 701 rwx --- --x
或 chmod 701 .
由alice修改:讓tom能查看其主目錄下內容
$ chmod o+r . 705 rwx --- r-x
或 chmod 705 .
$ ls -l
-rw-r--r-- 1 alice girls 12 4月 27 10:50 1.txt
644
目前tom可讀,但不可寫
-rw-r--rw-
646
由alice修改:讓tom能夠改寫1.txt
$ chmod o+w 1.txt
chmod 646 1.txt
練習:讓alice或root改變權限,讓tom和rose都能進入alice主目錄,查看目錄下內容,查看1.txt內容,修改1.txt
$ ls -ld drwx---r-x 705
drwxr-xr-x 755
$ chmod 755 .
或 chmod a+rx .
$ ls -l -rw-r--rw- 646
-rw-rw-rw- 666
$ chmod 666 1.txt
或 chmod a+rw 1.txt
準備一個可執行文件:f1 改成可執行,可直接運行
由alice操做:
$ id 是alice
$ pwd 在/home/alice
$ vi f1
編輯:date
sleep 10
cal
保存退出
$ f1 命令找不到 和PATH有關 沒有改命令所在路徑
$ /home/alice/f1
$ ./f1 權限不夠
-rw-r--r-- 644
-rwxr--r-- 744
-rwxr-xr-x 755
$ chmod u+x f1
$ chmod a+x f1
舉例:寫一個shell腳本,求出1~100的累加和
$ id 是alice
$ vi sum.sh
#!/bin/bash
sum=0
i=1
while (($i<=100))
do
sum=$(($sum +$i))
i=$(($i+1))
done
echo "Sum=$sum"
保存退出後
$ chmod a+x *.sh 針對全部.sh文件,針對全部用戶均可執行
4、查看文件內容的方式:cat more vi head tail
一、cat 適合看小文件,不可翻頁,不可編輯
能夠將多個文件合併成一個文件
$ date > t1
$ echo Hello > t2
$ cal > t3
$ cat t1 t2 t3 > newfile
二、more 適合看大文件,能夠翻頁,不可編輯
控制命令: 空格 -- 翻頁
回車 -- 跳行
b -- 向前一屏
f -- 向後
h -- 求助
q -- 退出
/ -- 查找
n -- 繼續查找
將/etc/passwd文件拷貝到alice的主目錄下:
$ id 是alice
$ cp /etc/passwd ~
$ cat passwd
$ more passwd
三、vi 功能強大文本編輯器(Unix/Linux) vim等都是對vi的增強版
關注三種模式:如何切換
回車 i a o O
底行模式 ----> 命令模式 ----> 輸入模式
<---- (初始模式) <----
: / ? Esc
經常使用的操做命令:
O
i 光標 a
o 變爲輸入模式,光標停留位置不一樣
向上 k
向下 j
向左 h
向右 l 用小鍵盤方向鍵也可
到行首 ^
到行尾 $
到第5行 5G
屏首 H
屏尾 L
屏中央 M
前翻頁 ctrl + b backward
後翻頁 ctrl + f forward
x 刪除一個字符
dw 刪除當前詞
3dw 刪除3個單詞
dd 刪除當前行
5dd 刪除5行 (當前行開始)
:5, 10d 冒號模式,刪除5~10行
r 替換一個字符
cw 替換一個單詞
cc 替換一行
C 替換從光標到行尾
yw 拷貝詞
yy 拷貝行 (Y) 5yy 拷貝5行
p 粘貼
:1,2co3 拷貝行1,行2到行3以後
:4,5m6 移動行4,行5到行6以後 剪切
:w 存盤 write (相似Windows中 ctrl + s)
:w 新文件名 另存爲新文件
:wq 存盤退出 或 ZZ (shift + z + z) 或:x
:q! 強制退出不存盤
其它命令:
~ 大小寫轉換
J 把當前行和下一行連起來
u 撤銷上一步 undo
:set number 顯示行號 :set nu
:set nonumber 取消行號 :set nonu
:21 光標跳到指定行
21G 到21行 G表示文件爲 1G第一行
/字符串 從當前行往下查找
?字符串 從當前行往上查找
n 繼續向下查找
N 反方向繼續查找
:r file2 在光標所在位置插入另外一個文件 (合併)
:1,$s/舊串/新串/g 替換全文
說明:s表示替換 g表示所有替換 global
將全部: 換成@
:1,$s/:/@/g
練習:將文本中全部home都替換成 192.168.0.2
:1,$s/home/192.168.0.2/g
四、head 和 tail
查看文件的頭幾行: head -3 文件名 頭3行
查看文件的後幾行: tail -5 文件名 後5行
技巧:使用tail -f 文件名 動態刷新實時監控文件
用途:經常使用於查看系統的日誌文件;
日誌文件常常被更新,追加新的內容,須要監控。
$ tail -f 1.txt
$ ctrl + c 結束監控進程
select * from emp
where id=1;
select 列名, 表達式, 函數, ... 列的投影
from 表名, ...
where 記錄的匹配條件 行的選擇
5、經常使用技巧
一、過濾:grep 過濾出n行
二、統計:wc 統計:行、單詞、字符 的數量
三、排序:sort
四、管道: |
管道符:用於鏈接兩個命令,前一個命令的輸出,做爲後一個命令的輸入。(前一個命令的輸出,做爲後一個命令傳入的參數)
例子1:將/etc/passwd的頭10行,寫入文件f2中
$ head -10 /etc/passwd > f2
例子2:將/etc/passwd的頭10行排序後,寫入文件f3中
$ head -10 /etc/passwd | sort > f3
例子3:將/etc/passwd排序後的頭10行,寫入文件f4中
$ sort /etc/passwd | head -10 > f4
五、常見用法
1)管道more: 分屏顯示
對比:ls -l /etc
ls -l /etc | more 空格 回車 q
2)管道grep: 過濾
對比:ls -l /etc
ls -l /etc | grep ssh 找到含有ssh的行
drwxr-xr-x 2 root root 4096 4月 25 11:20 ssh
練習:查找出tom的帳戶信息
cat /etc/passwd | grep tom
tom:x:501:501::/home/tom:/bin/bash
練習:找出girls組的全部用戶的帳戶信息,按照用戶名排序
/etc/group 組 girls:x:502:
/etc/passwd 用戶
cat /etc/passwd | grep 502 | sort
3)管道wc:統計
cat f1 | wc
3 行 4 單詞 18 字符
練習:統計出girls組有多少帳戶
cat /etc/passwd | grep 502 | wc 行數就是帳戶數
6、進程管理
一、查看當前全部進程 ps -ef
以全格式顯示當前系統全部進程
每一行就是一個進程的信息
-e 全部進程
-f 全格式
UID PID PPID C STIME TTY TIME CMD
root 1 0 0 09:07 ? 00:00:03 init
Uid: 用戶名 該進程由哪一個用戶發起的 (重要)
Pid: 進程id 進程的惟一標識 (重要)
PPid: 父進程id
C: cpu佔有率
Stime: 開始的時間 (重要)
TTY: 開始該進程的終端號
Time: 運行時間
CMD: 啓動該進程的命令名 (重要)
啓動sleep進程: sleep 3000
其它窗口:ps -ef | grep sleep
alice 3421 3212 0 17:49 pts/0 00:00:00 sleep 3000
進程id: 3421
二、根據pid殺進程:kill 進程id
前提:只有進程的發起者、root纔可殺進程
和權限有關
$ kill 3421 沒有權限
$ su 密碼:123456
# kill 3421
三、根據進程命令名批量殺進程:pkill 命令名
# pkill sleep
關機:halt halt: must be superuser. 重啓:reboot reboot: must be superuser. 必須是root纔有權限操做!