Shell文件權限和腳本執行


一、預備知識

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
View Code

(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權限,否則不能切換目錄。
 
(6)、如何對目錄及子目錄和文件設置acl權限
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
View Code
運行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

 

 
 
 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM