天天看點

學習筆記(六)——使用者,使用者組,切換登入使用者

1.使用者管理:

相關的兩個配置檔案: /etc/passwd   /etc/shadow

     /etc/passwd  儲存使用者詳細資訊(掌握每一列代表的含義)

     第一列    使用者名

     第二列    密碼控位符,以 x 表示

     第三列  uid

     第四列  gid

     第五列    使用者的描述資訊(姓名、辦公室、手機号等資訊)

     第六列    使用者家目錄

     第七列 使用者 shell,兩種 /bin/bash 使用者可登入    /sbin/nologin 使用者不可登入

    /etc/shadow    儲存使用者密碼資訊(了解每一列代表的含義)

     第一列       使用者名

     第二列       加密後的密碼,三種加密格式:

      $1  開頭 MD5加密

      $5  開頭 SHA-256加密

      $6  開頭 SHA-512加密

      !!   表示使用者還未被設定密碼

      *   表示使用者被鎖定

     第三列       密碼更改時距1970年1月1日有多少天

     第四列       表示要過多久才能修改密碼,0表示随時可以修改

     第五列       密碼失效的時間預設 99999

     第六列       密碼到期前提醒的時間

     第七列       密碼到期後的鎖定時間,預設為空

     第八列       賬号的生命周期,預設為空

     第九列       保留字段

     常用指令: useradd usermod  userdel   passwd

     useradd lucy           //添加 lucy 使用者

     useradd –u 666 lucy    //添加 lucy 使用者,并手動指定uid

     useradd –g 666 lucy    //添加 lucy 使用者,并手動指定 gid,前提是該 gid 已存在

     useradd –G 667,668 lucy     //手動指定附屬組,即将 lucy加入多個組中

     useradd –d /home/lily lucy   //手動指定使用者家目錄

     useradd –M lucy        //添加使用者 lucy,不建立其家目錄,此時在 /etc/passwd 中第六列仍有内容,但 /home 下不存在 lucy/目錄

     如果此時 su – lucy ,可以成功切換,但會警告無法切換到使用者家目錄:

     -bash-4.1$ 為其 shell 形式,而非 [lucy@localhost ~]$

    如何解決這個問題:

     [root@localhost ~]# mkdir /home/lucy

     [root@localhost ~]# cp /etc/skel/.b*

     [root@localhost~]# chown –R songwei:songwei /home/songwei

    注: /etc/skel 目錄下為使用者登入初始化所需要的檔案,如 .bashrc 、 .bash_profile 和 .bash_logout。

    useradd –s /sbin/nologinlucy       //手動指定使用者 shell

    usermod 修改使用者配置資訊,參數與添加使用者時的絕大多數相同,注意兩個有差別的參數:

    usermod –L lucy  //鎖定 lucy 使用者,使其不能登入

    usermod –U lucy  //解鎖 lucy 使用者

    鎖定/解鎖使用者還有一種方式:

    pass -l lucy    //鎖定 lucy 使用者,使其不能登入

    passwd -u lucy    //解鎖 lucy 使用者

    chfn lucy      //修改使用者的描述資訊

    passwd lucy    //修改 lucy 使用者的密碼,需要重複輸入以确認

    注:useradd 後的使用者在設定密碼前不能登入,即空密碼使用者不能登入,但可以在其他使用者登入以後使用 su 切換來登入。

    如果在使用 passwd 指令設定密碼時不想重複輸入兩次,有如下幾種方法:

    passwd --stdin lucy                                               //或者

    echo "shiyanmima" | passwd –stdin lucy               //或者

    echo –e "shiyanmima\nshiyanmima\n" | passwd lucy  // \n 為Linux中的換行符, echo –e 參數可以解

                                 //析特殊字元

    passwd -d lucy       //使用 -d 參數,删除 lucy 使用者的密碼

    userdel 删除使用者,想要在删除使用者的同時删除使用者家目錄及郵箱位址,需要使用 –r 參數:

    userdel lucy //删除使用者,不會删除使用者家目錄和郵箱位址(位于 /var/spool/mail下)

    userdel –r lucy  //删除使用者及其家目錄和郵箱位址

2.使用者組管理:

常用的兩個配置檔案: /etc/group /etc/gshadow

     /etc/group   使用者組資訊

     第一列       使用者組名稱

     第二列       組密碼控位符

     第三列       gid

     第四列       附屬組

     /etc/gshadow  使用者組密碼資訊,一般不去操作,作為了解

     常用指令: groupadd groupdel  groupmod

     groupadd songwei    //添加 songwei 組

     groupadd –g 1000 songwei  //添加 songwei 組,并手動指定gid

     groupdel songwei  //删除 songwei 組,如果其中有使用者,必須先清空,否則删除失敗

3. 切換登入使用者:

    3.1 su 指令:

      用于切換目前登入的使用者,直接使用不會切換到使用者家目錄,PATH變量也不會改變:

      [root@localhost ~]# susongwei

      [songwei@localhost root]#

      如果想要徹底切換,添加 – 參數:

      [root@localhost ~]# su – songwei

      [songwei@localhost ~]#

      使用–c 參數,可以以特定使用者的身份執行指令:(常用于腳本中)

      // 以 songwei 使用者的身份執行 touch 指令

      [root@localhost ~]# su –c “touch/tmp/songwei.log” songwei

      [root@localhost ~]# ll /tmp/songwei.log

      -rw-r--r--. 1 songwei songwei 0 Mar 2223:00 /tmp/songwei.log

    3.2 sudo 指令:

    sudo 的作用是讓一個使用者擁有其他使用者的權限(一般用于讓普通使用者擁有 root 權限)去執行一些指令,如何授予這種權限:

      [root@localhost ~]# visudo

      ## Allow root to run anycommandsanywhere

     root ALL=(ALL)       ALL

     songwei  ALL=(root)   NOPASSWD: /bin/ls   //新添加的一行

     解釋一下新添加的這一行的作用,第一列為指定的使用者,如果有多個使用者,以逗号隔開,ALL 代表以所有IP登入的使用者均可享受權限,=(root)代表執行指令時擁有哪個使用者的權限, /bin/ls 為執行的具體指令,如果有多條,以逗号隔開(這裡的指令必須寫絕對路徑)。其中,使用 NOPASSWD:可以讓使用者在執行 sudo ls 時不用輸入自己的密碼。

    不僅可以為一個或多個使用者配置設定權限,也可以同時為一組使用者配置設定權限,組名前加 %:

     %aming  ALL=(root) /bin/ls

     這樣就可以為使用者組為 aming 的使用者授予權限。

執行個體:

     公司為安全起見,不允許遠端登入 root 使用者,即便輸入的 root 密碼是正确的,現在需要授予 songwei 和aming 兩個使用者可以在登入後切換到 root 使用者使用 root 權限,該如何做呢?

    [root@localhost ~]# visudo

    songwei, aming  ALL=(root)  NOPASSWD:   /bin/su

    [root@localhost ~]# su – songwei

    [songwei@localhost ~]# sudo su –

    [root@localhost ~]#

    如此即可完美解決該問題。那麼,如何禁止 root 使用者遠端登入:

    [root@localhost ~]# vim /etc/ssh/sshd_config

    PermitRootLogin no   //由 yes 修改為 no

    儲存退出後,重新開機 sshd 服務即可:

    service sshd restart

補充:

繼續閱讀