一、預備知識
1、shell的作用
2、常識
(1)Tab鍵自動補全
使用Terminal時,輸入命令的前幾個字母,敲tab會自動補全命令或文件名、目錄等。
好處:操作速度更快;不容易出錯;
(2)清屏命令
Ctrl + L 或 輸入命令clear
(3)命令歷史:
執行:history
清除歷史:history -c
技巧1:!num 命令直接打開歷史命令,num為history查看的序列
技巧2:!XX 命令查看歷史命令中最后一次以xx結尾的命令
技巧3:Ctrl + R ,然后輸入歷史命令的一部分,能快速搜索想要找的歷史操作全名
(4)命令別名:
使用頻率高的復雜命令,可以設置簡短的調用名稱,存放位置: ~/.bashrc
alias 別名=‘實際執行命令’
設置別名
unalias 別名
取消別名
alias [別名]
查看系統中的別名
注意:別名,重啟后消失,若經常使用,可以保存到bashrc文件中
(5)輸出重定向
1>相當於>正確重定向
2>錯誤重定向(將錯誤信息重定向到指定文件中)
將正確和錯誤的結果都重定向到文件中的方法:
命令 1> 文件 2>&1
命令 1>> 文件 2>&1
解釋:錯誤的信息也會通過通道1進入文件中。
管道操作符號“|”
練習示例:
[root@Salve scripts]# free -m | grep Mem Mem:980875105173569 [root@Salve scripts]# free -m | grep -i mem Mem:980875105173569 [root@Salve scripts]# free -m | grep -i mem | awk 'print $4' awk: print $4 awk:^ syntax error [root@Salve scripts]# free -m | grep -i mem | awk '{print $4}' [root@Salve scripts]# free -m | grep -i mem | awk '{print $2,$3,$4}' [root@Salve scripts]# free -m | grep -i mem | awk '{print $2"\n",$3,$4}' 875105 [root@Salve scripts]# free -m | grep -i mem | awk '{print $2"\n",$3"\n",$4"\n"}' 875 [root@Salve scripts]# free -m | grep -i mem | awk '{print "total:"$2"\n","used:"$3"\n","free:"$4"\n"}' total:980 used:875 free:104
(6)Linux系統的啟動級別
從0 到 6 共7個,比較重要的是0、3、5、6。
說明:
init 0 關機
init 3 字符模式模式(網絡功能齊全)
init 5 圖形界面
init 6 重啟
注:可在終端輸入init x進入到對應的狀態,如重啟:# init 6
二、認識權限和用戶管理
1、關於權限
權限類型:
1、r 讀
2、w 寫
3、x 可執行
Linux用戶
1、所有者(u)
2、所屬組(g) (所有者及所有者所在組的全部用戶)
3、其他用戶(o)(其他組的所有用戶(包括文件所有者))
4、所有用戶(a)
文件權限解讀
-rw-r--r--. 1 root root 44184 5月 22 00:28 install.log
- rw- r-- r-- root root 44184 insall.log
文件類型 所有者權限 所屬組權限 其他用戶權限 所有者 用戶所在的組 文件大小 創建時間 文件名
[root@Salve ~]# ll 總用量 100 -rw-------. 1 root root 1752 5月 22 00:29 anaconda-ks.cfg -rw-r--r--. 1 root root 44184 5月 22 00:28 install.log [root@Salve ~]# head -1 /etc/passwd root:x:0:0:root:/root:/bin/bash [root@Salve ~]# head -1 /etc/group root:x:0: [root@Salve ~]# cat /etc/group root:x:0: bin:x:1:bin,daemon
2、用戶與權限
2.1、用戶管理
(1)、用戶查看
id username
(2)、用戶添加
useradd username
創建用戶,同時會產生新的用戶組,並且用戶屬於該組
(3)、用戶刪除
userdel -r username
2.2、用戶組
用戶與組的關系:
(1)、把用戶加入組
[root@Salve ~]# id test2 uid=501(test2) gid=501(test2) 組=501(test2) [root@Salve ~]# gpasswd -a test2 root #把用戶test2加入到root組 Adding user test2 to group root [root@Salve ~]# id test2 uid=501(test2) gid=501(test2) 組=501(test2),0(root) #test2同時屬於兩個組
同時屬於兩個組后,兩個組的權限都具備,即兩個組權限之和
(2)、把組中用戶刪除
[root@Salve ~]# gpasswd -d test2 root
Removing user test2 from group root
3、權限分配
第一、二種修改用戶對文件的權限
3.1、chmod權限分配
3.1.1、字母權限分配
chmod u+x file
chmod u-x file
(對用戶單獨設置權限用此方式。)
3.1.2、數字權限
chmod 755 file
數字對應權限如下:
r 4
w 2
x 1
755 rwx r-x r-x
754 rwx r-x r--
默認644
(當所有用戶的權限都要修改時用詞方法)
缺點:不能對用戶的細化權限分配
3.2、acl權限分配
適用於對權限的細化需求,比如要求一些用戶對某個文件file的權限如下:
1、root file rw-
2、root file r--
3、other file r--
4、user1 file rw
5、user2 file rx
6、user3 file wx (不能查看,但是能寫入)
7、user4 file rwx (rwx只是對內容有權限,無法刪除)
acl權限分配:
(1)、setfacl設置文件權限
setfacl -m u:user1:rw file01.txt
setfacl -m u:user2:rx file01.txt
(2)、getfacl查看文件權限
getfacl file01.txt
(3)、刪除文件權限
setfacl -x user:user4 file01.txt
(4)、清空文件權限
setfacl -b file01.txt 擦除對文件所有的權限(恢復文件的原始狀態權限:644)
(5)、創建和刪除文件權限:
#需要對目錄設置acl權限即可
setfacl -m u:user4:rwx mnt/
注意:
dr-xr-xr-x. 2 root root 4096 5月 24 14:19 mnt
切換到目錄的一瞬間需要目錄的x權限,否則不能切換目錄。
setfacl -m u:user4:rwx -R /mnt/ R參數代表遞歸
(7)、目錄中后期添加的子目錄和文件如何繼承父目錄的權限
方法一: setfacl -m u:user4:rwx -R /mnt/ 繁瑣 (應用實例:網站文件管理)
方法二:setfacl -m d:u:user4:rwx -R /mnt/ d代表default權限,會繼承默認權限
用戶對程序、命令的權限
3.3、sudo權限設置
設置用戶對命令的執行權限-visodo:
(1)、設置:
# visudo
user4 localhost=/usr/sbin/useradd,/usr/sbin/userdel
(2)、使用有密碼的sudo授權命令
$ sudo /usr/sbin/useradd user5
$ sudo /usr/sbin/userdel -r user5
(3)、使用無密碼的sudo授權命令 (使用情境:在腳本里輸入命令)
$ sudo /usr/sbin/useradd user6
$ sudo /usr/sbin/userdel -r user6
設置形式:
user5 ALL=NOPASSWD: /usr/sbin/useradd,/usr/sbin/userdel
sudo ALL=NOPASSWD: /usr/sbin/userdel -r user4
三、Shell文件權限和腳本執行
1、Shell腳本簡介
(1)、用途:完成特定的、較復雜的系統管理任務
(2)、格式:集中保存多條Linux命令,普通文本文件
(3)、執行方式:按照預設的順序執行解釋執行
2、編寫可執行的Shell腳本
(1)、 建立包含執行語句的腳本文件
(2)、 #腳本文件中包含的內容
運行環境設置:#!/bin/bash
注釋信息:以#開始的說明性文字
可執行的Linux命令行
(3)、為腳本文件添加可執行權限
3、執行Shell腳本的方式:
(1)、bash test.sh #不需要寫解析器,並且不需要給腳本設置執行權限
(2)、./test.sh #需要寫解析器,需要給腳本設置執行權限
4、Shell腳本例子:
(1)簡單例子
#!/bin/bash #tesh.sh echo 'disk space:' echo df -Th echo echo 'free space:' free -m echo echo 'users:' for i in'ls /home' do id -u $i done
運行Shell腳本:
直接執行具有x權限的腳本文件:例如:./test.sh
使用指定的解釋器程序執行腳本內容:例如:bash test.sh 、sh test.sh
(2)實例練習:
每周五17:30清理FTP服務器的公共共享目錄
檢查/var/ftp/pub/目錄,將其所有子目錄及文件的詳細列表、當時的時間信息追加保存到/var/log/pubdir.log
文件中,然后清空該目錄
yum -y install vsftpd*
#!/bin/bash #ftp目錄統計 date >>/var/log/pubdir.log ls -lhR /var/ftp/pub >>/var/log/pubdir.log rm -rf /var/ftp/pub
crontab -e
查看任務計划:
crontab -l
