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=(你可以成為誰) 命令