8月3日課堂筆記

課堂筆記

linux用戶和組管理(非常非常重要)

   用戶管理和組管理各種相關的應用程序

   簡單的管理命令

安全上下文:

  每次對主機操作都是以發起一個進程來完成的,進程代表著人來執行操作,進程以其發起者的身份來運行;所以開機時有很多守護類的進程,我們應該以普通身份來運行,普通用戶通常都是系統用戶;從來不用登陸系統的;進程對文件的訪問權限,取決于發起此進程的用戶的權限;

    cat /etc/shadow 普通用戶不運行訪問這個文件

  系統用戶:為了能夠讓那后臺進程或服務類進程以非管理員的身份運行,通常需要為此創建多個普通用戶,這類用戶從不用登錄系統,僅僅是其他進程以他的身份來運行,從而能獲取普通權限的;

groupadd:創建一個組 。tail -f 跟蹤文件尾部并不退出

   groupadd [選項]  group_name(組名)

  -g GID:指定GID;不指定默認是上一個組的GID+1
  -r :創建系統組;系統組,運行很多進程,后臺的服務管理,有些進程是隨著開機啟動起來的,每一個進程在訪問資源時,一定是代表了某一個用戶,開機時自動啟動應該以普通用戶的身份運行。

groupmod命令:修改組屬性

   groupmod [選項] GROUP   
      -g GID      :修改GID,一定不能與某個組的id號相同
      -n  new_name :刪除組名

groupdel命令:刪除組, 注意:組里面有用戶的話就不能刪除 groupdel [選項] GROUP

useradd 命令;創建用戶或更新默認新用戶信息

創建一個用戶時,如果沒有指定組的話會自動創建一個與用戶同名的組作為用戶的私有組,

  useradd [選項] 登錄名
     -u, --uid UID:指定UID;
     -g, --gid GROUP :指定基本組ID,不創建與用戶名相同的私有組,注意此組必須事先存在,否則會出現錯誤;
     -G,--groups GROUP1,:指明用戶所屬的附加組,多個組之間用逗號分隔;
     -c,--comment COMMANT:指明注釋信息;

重要:-d,–home HOME_DIR:以指定的路徑為用戶的家目錄;通過復制/etc/skel/此目錄并重命名實現的,指定的家目錄路徑如果事先存在,則不會為用戶創建環境初始化配置文件;

(為了實現用戶環境初始化,系統一般家目錄的創建不是直接創建空目錄,而是復制一個目錄,并更名為用戶所指名的目錄)

     -s,--shell SHELL :指定用戶的默認shell,可用的所有shell列表為etc/shells文件中;
     -r,--system;創建系統用戶

   注意:創建用戶時的諸多默認設定配置文件為/etc/loogin.defs

        useradd -D :   顯示創建用戶的默認配置;
     useradd -D 選項:  修改默認選項的值;
               -s

       修改的結果保存于/etc/default/useradd文件中;

usermod命令:修改用戶屬性

      usermod [選項]  登錄
           -u,--uid UID:修改用戶的ID為此處指定的新UID;
           -g,--g GROUP:修改用戶所屬的基本組,這個組事先必須存在 :
           -G,修改用戶所屬的附加組,如果有附加組,  原來的附加組會被覆蓋,如果不想覆蓋,則與a一起使用;

           -a,--append:與G一同使用,用于為用戶追加新的附加組;
           -c,--comment COMMENT:修改注釋信息;

           -d,-home HOME_DIR:修改用戶的家目錄;用戶原有的文件不會被轉移至新位置;
           -m,--move -home只能與-d選項一同使用,用于將原來的家目錄移動為新的家目錄

           -l ,--login NEW_LOGIN:修改用戶名;
           -s,--shell SHELL :修改用戶的默認shell為此處用的shell;
           -L,--lock;鎖定用戶密碼;即在此用戶原來的密碼字符串之前添加一個“!”
           -U,--unlock:解鎖用戶的密碼;

userdel命令:刪除用戶

      userdel [選項] 登錄
        -r:刪除用戶時一并刪除其家目錄;

passwd命令:

  passwd [-k] [-l] [-u [-f]] [-d] [-e] [-n mindays]
   [-x maxdays] [-w warndays] [-i inactivedays] [-S]
   [--stdin] [username]

(1)passwd:修改用戶自己的密碼;只能是管理員用戶更改密碼 (2)passwd USERNAME :修改指定用戶的密碼,但僅root有此權限;

  -l,-u:鎖定和解鎖用戶
  -d:清除用戶密碼
  -e DAYS:過期期限,日期;
  -i DAYS:非活動期限;
  -n DAYS: 密碼的最短使用期限
  -x DAYS:密碼的最長使用期限
  -w DAYS:警告期限

重要:–stdin: echo "PASSWORD" | passwd –stdin USERNAME 讀密碼時標準輸入

gpasswd命令:

 組密碼文件

  用戶的組管理
    gpasswd [選項] group  
       -a USERNAME:向組中添加用戶
       -d USERNAME:從組中移除用戶

newgrp命令:臨時切換指定的組為基本組;

  -:模擬用戶重新登錄以實現重新初始化其工作環境;

chage命令:更改用戶密碼過期信息

   chage [選項] 登錄名

     -d
     -E
     -w
     -n
     -M

id命令:

  顯示用戶的實際和有效id

   id [option]...[USER]
          -u:僅顯示有效的UID
          -g:僅顯示用戶的基本組ID
          -G:僅顯示用戶的基本組ID
          -n:顯示名字而非ID

su命令:switch user

    登錄式切換:會通過讀取目標用戶的配置文件來重新初始化
     su - USERNAME

     su - l USERNAME
    非登錄式切換:不會讀取目標用戶的配置文件進行初始化
      su USERNAME

   注意:管理員可無密碼切換至其他任何用戶;

   -c 'COMMAND' :僅以指定用戶的身份運行此處指定的命令;

   su - 用戶名 -c '命令'
   在切換的用戶下執行一條命令,但不是真正切換用戶

其他幾個命令:chsh ,chfn,finger,whoami,pwck,

命令總結:groupadd,groupmod,groupdel,useradd,usermod,userdel

權限管理:

ls -l rwxrwxrwx: 左三位:定義user(owner)的權限 中三位:定義group的權限 右三位:定義other的權限

進程安全上下文:

    進程對文件的訪問權限應用模型:
       進程的屬主與文件的屬主是否相同;如果相同,則應用屬主權限;否則,則堅持進程的屬主是否屬于文件的屬組;如果是,則應用屬組權限;否則,就只能應用other的權限;

 權限:
    r:read,讀
    w:write,寫
    x:excute,執行

       文件:
          r:可獲取文件的數據;
          w:可修改文件的數據;
          x: 可將此文件運行為進程;

        目錄:
          r:可使用ls命令獲取其下的所有文件列表;
          w:可修改此目錄下的文件列表;即創建或刪除文件;
          x:可cd至此目錄中,并且可使用ls -l來獲取所有文件的詳細屬性信息;


         mode:rwxrwxrwx
         ownership:user,group


       權限組合機制:
         ---  000  0
         --x  001  1
         -w-  010  2
         -wx  011  3
         r--  100  4
         r-x  101  5
         rw-  110  6
         rwx  111  7

 練習:rw-rw-r--,rwxrwxr-x
       664         775

權限管理命令:

    chmod命令:改變文件權限的
       chmod [OPTION]... MODE[,MODE]... FILE...
       chmod [OPTION]... OCTAL-MODE FILE...
       chmod [OPTION]... --reference=RFILE FILE...

        三類用戶:
          u:屬主 
          g: 屬組
          o:其他
          a:所有


       (1)chmod [OPTION]... MODE[,MODE]... FILE...

           MODE標識法:
             賦權表示法:
                 賦權表示法:直接操作一類用戶的所有權限位rwx
                 u=,g=,o=
                 a=

                  chmod g=rw  文件名
                  chmod ug=r  文件名

             授權表示法:直接操作以類用戶的一個權限位r,w,x
                 u+,u-
                 g+,g-
                 o+,o-
                 a+,a-


        (2)chmod [OPTION]... OCTAL-MODE FILE...
             八進制
           chmod 660 文件名


       (3)chmod [OPTION]... --reference=RFILE FILE...
              chmod --reference=/var/log/message  文件名

       選項:
        -R,--recursive:遞歸,修改目錄下所有文件的權限,遞歸一般在授權表示法中用的比較多。

注意:用戶僅能修改屬主為自己的那些文件

從屬關系管理命令:chown,chgrp

  chown命令:改屬主,也可以改屬組
       chown [OPTION]... [OWNER][:[GROUP]] FILE...
       chown [OPTION]... --reference=RFILE FILE...

       選項:
         -R:遞歸修改
    chown -R group名 目錄/
    chown -R --reference =/tmp/moosefs /tmp/skel/

  chgrp命令:只能用來改組
      chgrp [OPTION]... GROUP FILE...
      chgrp [OPTION]... --reference=RFILE FILE...

注意:僅管理員可修改文件的屬主和屬組;

思考:用戶對目錄有寫權限,但對目錄下的文件沒有寫權限時,能否修改此文件內容?能否刪除此文件? 不能,能 如何驗證: mkdir /tmp/mytest cp /etc/fstab /tmp/mytest ls -l /tmp/mytest chown :distro /tmp/mytest ls -ld /tmp/mytest chmod g+w /tmp/mytest su – zhou cd /tmp/mytest echo asd >> fstab 提示權限不夠 rm fstab 可以刪除

所以,一個用戶對一個文件沒有寫權限,未必不能刪除,但一定不能往文件里面加東西,或者修改東西。一個用戶對于一個文件是否擁有寫權限,決定了是否能改內容,而對這個文件的目錄有權限,決定了能否對里面的文件刪除,所以對文件沒有寫權限不意味著不能刪除。

umask:文件的權限反向掩碼,遮罩碼;

文件:
  666-umask
目錄:
  777-umask

方法2:文件是rw-rw-rw- 去減 如027—-w-rwx 得:rw-r—–結果640 目錄的話就用rwxrwxrwx區減

dir:777-umask
file:666-umask 有奇數加1,偶數保留

umask -S:直接以模式方法來顯示 u=rwx,g=rx,o=rx umask -p:把umask值打上,并顯示umask值

 注意:之所以文件用666去減,表示文件默認不能擁有執行權限;如果減得的結果有執行權限,則需要將其加一
  umask:023
     666-023=644
     777-023=754

umask umask 027 touch mytast2 ll mytast2 -rw-r—– 1 root root 0 Jul 31 15:08 mytest2 mkdir mytast3 ll -d mytest3 drwxr-x— 2 root root 6 Jul 31 15:12 mytest3

 umask命令:
   umask:查看當前umask
    umask MASK: 設置umask 注意僅對當前shell有效

     用命令設定的,都是僅對當前shell有效。

linux中的三種特殊權限

 suid:s
 sgid:s
 sticky:t

前提:進程有屬主和屬組;文件有屬主和屬組 (1)任何一個可執行程序文件能不能啟動為進程:取決發起者對程序文件是否擁有執行權限 (2)啟動為進程之后,其進程的屬主為發起者;進程的屬組為發起者所屬的主組 (3)進程訪問文件時的權限,取決于進程的發起者 (a)進程的發起者,同文件的屬主:則應用文件屬主權限 (b)進程的發起者,屬于文件屬組:則應用文件屬組權限 (c)應用文件“其他”權限

suid:4suid (s) 作用在二進制程序 權限的效果:當一個用戶去運行程序的時候,他將繼承該程序所有者的權限,用戶去執行passwd,就繼承了passed程序的所有root權限,就可以執行passwd

sgid:2sgid (s) 作用在二進制程序 都用于root組的權限

sticky:(t)粘滯位 作用在目錄上 chmod o+t /textdir 用戶在這目錄下建的文件,別的用戶無法刪除,但是可以見用戶,可以刪除自己所見的文件。但root除外

sgid:作用在目錄上 gpasswd -a wangcai group1 把用戶旺財加入到group1組中 當一個目錄上面實施了sgid 權限,意味著該目錄創建的新文件或目錄將自動繼承該目錄的所屬組

練習:完成以下任務 1,新建系統組mariadb,新建系統用戶mariadb,屬于mariadb組,要求其沒有家目錄,且shell為/bin/nologin; 嘗試root切換至用戶,查看其命令提示符 2,新建GID為5000的組mageedu,新建用戶gentoo,要求其家目錄為/user/gentoo,密碼同用戶名; 3,新建用戶fedora,其家目錄為/users/fedora;密碼同用戶名 4,新建用戶www,其家目錄為/users/www;刪除www用戶,但保留其家目錄; 5,為用戶gentoo和fedora新增附加組mageedu; 6,復制目錄/var/log至/tmp/目錄,修改/tmp/log及內部的所有文件的屬組為mageedu,并讓屬組對目錄本身擁有寫權限;

install命令 復制文件,并能設置文件屬性

 單源復制:
   install [OPTION]... [-T] SOURCE DEST 
 多源復制:  
   install [OPTION]... SOURCE... DIRECTORY 
 多源復制到目錄:  
   install [OPTION]... -t DIRECTORY SOURCE...
 創建目錄: 
   install [OPTION]... -d DIRECTORY...

常用選項:
 -m ,--mode=MODE:設定目標文件權限,否則默認755

[root@localhost ~]# install -m 640 /etc/inittab  /root
[root@localhost ~]# ll inittab 
-rw-r----- 1 root root 511 Jul 31 15:59 inittab


 -o ,--owner=OWNER:設定目標文件屬主
install -o who -g distro -m 640 /etc/inittb  /tmp/inittab 


 -g,--group=GROUP :設定目標文件屬組


 -d,創建目錄
  install -d 目錄名

mktemp命令: mktemp -create a temporary file or directory

  mktemp [option]...[TEMPLATE]   

    常用選項:
       -d:創建臨時目錄

   注意:mktemp會將創建的臨時文件名直接返回,因此,可直接通過命令引用保存起來;

設定文件特定屬性 chattr +i 不能刪除,改名,更名 chattr +a 只能增加 lsattr 顯示特定屬性

訪問控制列表 ACL:Access Control List ,實現靈活的權限管理 作用:針對文件權限控制誰能訪問誰不能訪問

setfacl -m(修改) u:用戶名:權限 文件名 設置用戶

getfacl 文件名 查看ACL權限

setfacl -m g:組名:權限 文件名 設置組

setfacl -x u:用戶名 文件名 刪除用戶權限

setfacl -b 文件名 清空所有的ACL信息

nano acl。txt u:wang:0 u:wangcai:rw g:ti:r

setfacl -M acl。txt 文件名 直接改文件名,就能重復調用。

nano acl2.txt u:wang u:wangcai

setfacl -X acl2.txt 文件名

強調:當你添加ACL權限以后,所屬組的權限就不是所屬組的權限,而變成mask

mask,除了所有者和other,別的用戶(組和自己添加的ACL用戶)的權限不能超過mask。 setfacl -m::rm 文件名

setfacl -m(修改) d:u:用戶名:權限 文件名 在目錄上設置了默認的ACL權限,將來在目錄里新建的文件就也有這個權限

setfacl -k 文件名 刪除默認ACL權限

setfacl -b 文件名 清除所有的ACL權限

getfacl file1 | setfacl –set-file = – file2 復制file1的ACL權限給file2

setfacl -R -b *:清除所有的ACL權限

setfacl -R --set-file=/root/acl.bak * 能讓權限恢復gid

原創文章,作者:15152188070,如若轉載,請注明出處:http://www.www58058.com/28922

(0)
1515218807015152188070
上一篇 2016-08-04 21:40
下一篇 2016-08-04 21:45

相關推薦

  • N26-第四周作業

    1、復制/etc/skel目錄為/home/tuser1,要求/home/tuser1及其內部文件的屬組和其它用戶均沒有任何訪問權限。 [root@localhost ~]# cp -rfp /etc/skel/ /home/tuser1[root@localhost ~]# chmod 700 /home/tuser1 2、編輯/etc/group文件,添…

    Linux干貨 2017-02-25
  • linux 系統啟動流程

    假設以個人架設的linux主機為例:當你按下電源鍵之后,計算機硬件會主動讀取BIOS來加載硬件信息及進行硬件系統的自我測試,之后系統會主動讀取系統第一個可啟動的設備,此時就可以讀入引導裝載程序了。 引導程序可以指定使用哪個內核文件來啟動,并實際加載內核到內存中解壓縮與執行,此時內核就能夠開始在內存內活動,并檢測所有硬件信息,與加載適當的驅動程序來使這部主機開…

    Linux干貨 2016-09-12
  • date 命令練習

    一、課外資料補充: 1.命令格式: date[參數]…[+格式] 2.命令功能: date可以用來顯示或設定系統的日期與時間。 3.命令參數: 必要參數: %H小時(以00-23來表示)。 %I小時(以01-12來表示)。 %K小時(以0-23來表示)。 %l小時(以0-12來表示)。 %M分鐘(以00-59來表示)。 %P AM或PM…

    Linux干貨 2016-08-05
  • ansible

    ansible 安裝ansible 查看當前的系統版本 yum install redhat-lsb-core -y [root@localhost httpd]# lsb_release -a LSB Version: :core-4.1-amd64:core-4.1-noarch Distributor ID: CentOS Description: C…

    Linux干貨 2017-07-09
  • M22 程序員偷懶戰法

    前段時間有個外國的程序猿走紅網絡,這個哥們可以說是懶到了極點,上班請假給領導發短信寫腳本,下班晚回家給老婆發短信寫腳本,甚至于接個咖啡也要寫腳本。這個哥們離職之后,他的同事在他的辦公電腦上發現了這些腳本,并公布到了網上,引起眾程序猿紛紛膜拜。最近我剛好學到shell腳本部分,就讓我分析其中的一個跟領導請假的腳本吧。 #!/bin/sh -e # Exit e…

    Linux干貨 2017-04-06
  • 分區工具fdisk和gdisk、同步分區表(到內存)

    fdisk  創建MBR分區 gdisk  創建GPT分區 parted  高級分區操作(創建、復制、調整大小等)  centos7:手動創建分區20g,30g,40g(易區分) lsblk cat  /proc/partitions ls  -l  /dev/sd* 以上三個命令是查看內…

    2017-06-15

評論列表(2條)

  • 馬哥教育
    馬哥教育 2016-08-07 23:09

    文章整體架構清晰,對命令的語法和常用選項有了很好的總結,但是練習題怎么完成呢?

    • 15152188070
      15152188070 2016-08-08 08:24

      @馬哥教育哥,練習題在另一篇博客上了

欧美性久久久久