linux(3)

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纔有權限操做!

相關文章
相關標籤/搜索