1. 程式人生 > >Linux使用者許可權管理

Linux使用者許可權管理

使用者相關命令

useradd

-u uid

制定使用者的uid(數字  身份證號碼)

-s 指定使用者使用的shell

/bin/bash 預設

/sbin/nologin 手動新增一個傀儡使用者  虛擬使用者

-M標示不建立家目錄一般建立虛擬使用者使用

-g 指定 使用者屬於的組(組的名字)新增使用者的時候 預設建立一個與使用者名稱一樣的家庭

新增一個使用者lidao666指定uid為888禁止使用者登陸系統 不建立家目錄

新增一個uid是888的虛擬使用者alex999

userdel

刪除使用者

把這個使用者/etc/passwd中註釋

userdel預設不刪除使用者的家目錄和郵箱

-r 連窩端刪除與使用者有關的所有資訊(家目錄)

ussermod

修改使用者的資訊(這個使用者已經存在了)

-s 修改使用者使用的shell

-g 屬於的家庭 使用者組名字

主要組

-G屬於多個家庭

附加組

passwd

--stdin 從管道中獲取使用者的密碼(非互動式設定密碼)

企業場景:使用者及密碼管理

□密碼要複雜12位以上字母數字特殊符號

儲存密碼:

keepass

(軟體,密碼存放在本地,本地保險櫃)

lastpass

(線上版本,銀行的保險櫃)

大的企業使用者和密碼統一管理(相當於活動目錄(ad),openldap域)

動態密碼:動態口令,第三方提供自己開發也很簡單

企業面試題

批量新增10個使用者stu01,stu02……stu10,並設定8位隨機密碼(禁止使用for,while等迴圈)

chown

修改檔案或目錄所有者和屬於的使用者組

-R 遞迴修改檔案或目錄的所有者和使用者組

chown  oldboy oldboy.txt #只修改了檔案的所有者

chown  oldboy.oldboy oldboy.txt #修改了檔案的所有者和屬於的組

 

chmod

【功能說明】:修改檔案目錄的許可權

【語法格式】:chmod [數字或引數] [檔案路徑

]

【選項引數】:

引數

引數說明

其他說明

+

表示增加許可權

 

=

表示唯一設定許可權

 

-

表示取消許可權

 

u

在這裡改的前三位

 

g

在這裡改的中三位

 

o

在這裡該改的後三位

 

a

所有

 

例子:

chmod  u=w  /oldboy/test.sh

chmod 755 test.sh”。755表示“建立者擁有讀寫可執行許可權、同一組使用者以及其他使用者擁有讀和執行許可權”。

 

第1章 Linux使用者分類 

使用者分類

UID

user  ID  身份證號碼

 

GID

group ID  使用者組ID

 

root皇帝 UID:0

 

虛擬使用者 傀儡 UID:1-499(c6) /999(c7)

使用者的命令直譯器/sbin/nologin

每個程式、服務執行的時候都需要一個使用者

傀儡使用者不需要用來登陸系統

普通使用者 UID 500(c6)+1000(c7)

 

第2章 Linux使用者 

2.1 Linux啟動流程

CentOS 6        VS         CentOS 7  

序列                       並行 

Contos6:

第一步按下電源→開機自檢→MBR引導→GRUB選單→載入核心→執行INIT(第一個啟動的程序)→讀取/etc/inittab →讀取/etc/rc數字.sysinit(開機自啟動)→啟動mingetty顯示介面

 

2.2 #process 程序   

 ps  -ef   檢視系統程序

 

2.3 使用者與使用者組關係      

這個人屬於哪個(或者多少個)家庭

2.4 命令直譯器  shell 

echo  houstname通過管道給bash  替你執行!

     這叫命令直譯器

 

/bin/bash       系統預設的命令直譯器

/sbin/nologin    虛擬使用者的命令直譯器  

nologin不能登陸的login (虛擬使用者)   

 

 統計系統中 虛擬使用者數量

/sbin/nologin    檔案中一個( nologin ) 代表虛擬使用者

 

如和計算?

一兩種種方法不算方法,

Cat?grep,sed,awk

 

grep '/sbin/nologin'  /etc/passwd|wc -l  wc -l小寫(統計檔案中單詞數量顯示結果)

 

grep -c '/sbin/nologin'  /etc/passwd     

-c 統計包含 xxxx的有多少行  行數     count(計數)

 

awk  '/nologin/{i++}END{print i}' /etc/passwd   

 

find  查詢檔名或目錄

-maxdepth 最大深度

-type   型別

-name  名字

-iname  不區分大小寫

-size   大小

-mtime  時間

 

 

/etc/passwd內的每一列的含義

 

 

2.5 /etc/group使用者,使用者組資訊

 

2.6 /etc/shadow 密碼密碼資訊

 

2.7 與使用者有關目錄

2.7.1 /etc/skel  新使用者的家目錄的模板 (內有隱藏檔案)   

2.8 useradd 新增使用者

1# 建立家目錄 /home/oldfei

2# 把 /etc/skel 下面的所有內容 複製到 家目錄

3# 修改家目錄許可權和所有者  

 

 ll -a /etc/skel/

total 24 (總數)

 .bash_logout    #使用者退出系統的時候#執行裡面的命令

/etc/rc.d/rc.local     #使用者開機時執行裡面的內容

 .bash_profile   #/etc/profile  環境變數 別名

 .bashrc         #/etc/bashrc   別名

  

2.9 準備故障:

2.9.1 檢查環境 

grep PS1 /etc/profile

#export PS1='[\[email protected]\h \w]\$ '

2.9.2 新增使用者 

[[email protected] ~]# useradd alex

[[email protected] ~]# su - alex

[[email protected] ~]$ \rm -fr /*

                       刪根

2.9.3 退出使用者 重新登陸 

-bash-4.2$

版本

-bash-4.1$ 代表cenos6

-bash-4.2$ 代表cenos7

2.9.4 原因  

使用者家目錄 環境變數檔案 沒了

 

2.9.5 解決 

-bash-4.2$ ##方法1./etc/skel

-bash-4.2$ cp /etc/skel/.bash*   ~    複製

 

重新登陸 恢復

-bash-4.2$ logout

 切換使用者:su - alex

Last login: Fri Nov 16 11:18:54 CST 2018 on pts/0(顯示登陸資訊)

[[email protected] ~]$   (已登陸環境)

第3章  語法格式

3.1 新增一個UID是888的虛擬使用者

    useradd -u 888 -M -s /sbin/nologin  lg

指定UID為888+-u,不建立家目錄是大M,指定使用者使用的shell虛擬使用者 ,加上使用者名稱lg

顯示使用者的資訊叫id  亮哥  (id + 使用者名稱)

 

 

 

 

[[email protected] ~]# usermod -g alex  alex

[[email protected] ~]# id alex

uid=1003(alex) gid=1006(alex) groups=1006(alex)

 

#-G   讓使用者屬於多個組↓

[[email protected] ~]# usermod -G root,oldboy,lidao666  alex

[[email protected] ~]# id alex

uid=1003(alex) gid=1006(alex) groups=1006(alex),0(root),1000(oldboy),1007(lidao666)

清空之前設定的屬組↓

[[email protected] ~]# usermod -G ''  alex

[[email protected] ~]# id alex

uid=1003(alex) gid=1006(alex) groups=1006(alex)

 

passwd  更改密碼

stdin  (standard input 標準輸入 ) 從管道獲取密碼

 echo 123456 |passwd --stdin alex  結果如↓

Changing password for user alex. 更改使用者密碼

passwd: all authentication tokens updated successfully. 成功更新所有身份認證令牌

 

記錄密碼:

儘量複雜一點

 

history    檢視歷史命令

history -c  刪除歷史命令

 

第4章 使用者管理  

   使用者相關命令

4.1 useradd   增加使用者  

-u uid  指定使用者的uid(數字  身份證號碼)

    -s   指定使用者使用的shell

/bin/bash 預設

/sbin/nologin 手動新增一個傀儡使用者  虛擬使用者

-M標示不建立家目錄一般建立虛擬使用者使用

-g 指定 使用者屬於的組(組的名字)新增使用者的時候 預設建立一個與使用者名稱一樣的家庭

新增一個使用者lidao666指定uid為888禁止使用者登陸系統 不建立家目錄

新增一個uid是888的虛擬使用者alex999

4.2   userdel    刪除使用者  

userdel預設不刪除使用者的家目錄和郵箱

-r 連窩端刪除與使用者有關的所有資訊(家目錄)

           在/etc/passwd中註釋掉更安全方便點

4.3  usermod    修改使用者

修改使用者的資訊(這個使用者已經存在)

-s 修改使用者使用的shell

-g 屬於的家庭 使用者組名字

主要組

-G屬於多個家庭

附加組

4.4   passwd    更改密碼

--stdin 從管道中獲取使用者的密碼(非互動式設定密碼)

企業場景:使用者及密碼管理

□密碼要複雜12位以上字母數字特殊符號

儲存密碼:

4.4.1 keepass    密碼管理器

(軟體,密碼存放在本地,本地保險櫃)

4.4.2 lastpass

線上版本,銀行的保險櫃)

大的企業使用者和密碼統一管理(相當於活動目錄(ad),openldap域)

動態密碼:動態口令,第三方提供自己開發也很簡單

企業面試題

批量新增10個使用者stu01,stu02……stu10,並設定8位隨機密碼(禁止使用for,while等迴圈)

第5章 使用者組

5.1 chown     修改檔案或目錄所有者和屬於的使用者組

-R 遞迴修改檔案或目錄的所有者和使用者組

chown  oldboy oldboy.txt #只修改了檔案的所有者

chown  oldboy.oldboy oldboy.txt #修改了檔案的所有者和屬於的組

使用者相關組

5.2 groupadd   建立使用者組

-g指定使用者組的gid數字

新增一個虛擬使用者使用者 mysql 指定使用者的uid gid都是999

5.3 使用者查詢命令

id  檢視使用者的資訊

一個使用者是否存在

查詢使用者的uid  gid

屬於哪個使用者組

w 顯示系統中已經遠端登陸的使用者  幹啥

https://www.processon.com/view/link/59ffcfe6e4b06bed41ccb8d6

 

last  哪個使用者在什麼時候 從哪裡 遠端登陸你的系統  使用者登陸的資訊

lastlog 顯示linux中所有使用者最近一次遠端登陸的資訊

第6章 許可權體系  

6.1 Linux許可權體系  rwx 讀寫執行 permission 許可權denied 拒絕

6.2 chown  使用者管理命令更改檔案的屬主,屬組,原有的主,組改為另一個指定的使用者或組  

引數   -R  遞迴更改該目錄下所有檔案

 

6.3  chown  oldboy . oldboy   ld.txt 

   使這個檔案的屬主屬組更改為oldboy

 

6.4 #新增一個虛擬使用者 mysql 指定使用者的uid gid都是999  

useradd  -u 999 -g 999 -s /sbin/nologin  -M  mysql (mysql=使用者名稱)

            -s           -M 不建立家目錄              

 id mysql  檢視這個使用者

uid=999(mysql) gid=999(mysql) groups=999 (mysql)

 

-g 指定使用者組名字 或者指定一個已經存在的使用者組的gid

groupadd     -g 996       lidao996

 

建立組,-g指定使用者組名  使用者名稱

useradd   -u 996  -g lidao996   -s /sbin/nologin -M  lidao996

新增使用者  -u      -g          -s            -M

 

 

第7章 如何讓系統變得更安全

7.1 連線到任何伺服器需要做:

1.ip地址   

2.埠     sshd 22 (52113)

3.使用者名稱   root    #禁止root使用者遠端登入

4.密碼

5.登陸情況放在這個日誌裡面: /var/log/secure  Failed password  

 

7.2 建立指紋

72.1 直接建立 

md5sum  /oldboy/oldboy.txt >/oldboy/l/123.txt

         把oldboy.txt做一個指紋到這個指紋資料庫

7.2.2 把一個目錄下的檔案全部過濾到指紋資料庫備份

找出/oldboy下面 檔案 並製作指紋資訊 存放在/oldboy/l/123.txt

find /oldboy/ -type f |xargs md5sum >/oldboy/l/123.txt

  在這  /oldboy/l/123.txt 即指紋資料庫

 

7.2.3 自動比對  

命令+引數+指紋檔案庫  自動對比

 

這樣更容易做比較

md5sum  -c /oldboy/l/123.txt |column -t     對齊的引數

 

7.2.4 被動和沒被動的區別 

/oldboy/l/123.txt:       FAILED     被動了

/oldboy/l/1:           OK      沒被動

/oldboy/pipeima.md5:   OK

/oldboy/oldboy.txt:     OK

第8章 給予使用者許可權

8.1    visudo  ==== vi /etc/sudoers 

visudo  自帶檢查功能

 

8.2 sudo  給普通使用者臨時成為root 提供機會    普通使用者可以臨時以root身份執行某個命令 

檢視自己的許可權: sudo -l

 

8.3  Root使用者編輯 visudo  進入授權模式

8.3.1 如何進行授權

給oldboy使用者 授權兩個命令 ls touch

#oldboy  ALL=(ALL)  /bin/ls, /bin/touch

$1是給哪個使用者許可權,$2是全部的意思,$3是把這個命令的絕對路徑加上

 

    secure_path=/sbin\:/bin\:/usr/sbin\:/usr/bin

  使用者oldboy可以在oldboyedu-lnb上執行以下命令: (ALL) /bin/ls, /bin/touch

如果沒有許可權的使用者被授予許可權使用命令前不加sudo則無效,許可權被拒絕

 

8.3.2  sudo -l  #檢視自己有的sudo許可權 

sudo ls /root

8.3.3 給oldboy使用者授予許可權/bin 下所有命令  

oldboy  ALL=(ALL)       /bin/*  不安全怎麼辦?

 

 

8.3.4 給oldboy使用者授予許可權/bin 下所有命令  排除某個命令或引數 

[[email protected] ~]# grep oldboy /etc/sudoers  

oldboy  ALL=(ALL)       /bin/*, !/bin/su

             排除su 切換使用者命令

#需要什麼 給什麼命令 這樣安全                                

 

8.4 運維人員自己用 全部使用者並且不需要輸入當前使用者密碼

[[email protected] ~]# grep oldboy /etc/sudoers  

oldboy  ALL=(ALL)       ALL

 

 

[[email protected] ~]# grep oldboy /etc/sudoers  

oldboy                 ALL=(ALL)                     NOPASSWD: ALL

使用者   可以在所有伺服器使用sudo=(你可以成為誰)         命令