一、用戶管理命令
1、用戶、用戶組、權限管理:
Multi-tasks Multi-Users 多用戶、多任務
1)每個使用者:用戶ID、密碼
Authentication 認證機制
Authorization 授權機制 3A機制
Audition 審計機制
組:用戶組,用戶容器
2)用戶類別:
管理:
普通用戶: 系統用戶 登錄用戶
用戶表示: UserID UID
16bits 二級制數字:0-65535
管理員: 0
普通用戶:1-65635
系統用戶:1-499(CentOS6) 1-999(CentOS7)
登錄用戶:500-60000(CentOS6) 1000-60000(CentOS7)
名稱解析:名稱轉換的過程
Username<-->UID
根據名稱解析庫進行: /etc/passwd
3)組:
組類別(1):
管理員組
普通用戶組:
系統組
登錄組
組標識: GroupID GID
管理員: 0
普通用戶:1-65635
系統用戶:1-499(CentOS6) 1-999(CentOS7)
登錄用戶:500-60000(CentOS6) 1000-60000(CentOS7)
名稱解析: /etc/group
組類別(2):
用戶的基本組
用戶的附加組
組類別(3):
用戶的私有組:組名同用戶名,且只包含一個用戶
用戶的公共組:組內包含多個用戶
4)認證信息:
通過比對事先存儲的,與登錄時提供的信息是否一致
password:
/etc/shadow /etc/gshadow 數據密碼庫
密碼的使用策略:
1、使用隨機密碼
2、最短長度不要低於8位
3、應該使用大寫字母、小寫字母、數字和標點符號之中的至少三類
4、定期更換
加密算法:
1、對稱加密:加密和解密使用同一個密碼
2、非對稱加密:加密和解密使用的一對密鑰
密鑰對兒: 公鑰 私鑰
3、單向加密: 只能加密,不能解密,提取數據特徵碼
定長輸出 /]# echo "abcABC1" | md5sum
雪崩效應
算法: md5 message digest ,128bits
sha secure hash algorithm 160bits 哈希算法
sha1sum sha224sum sha256sum sha384sum sha512sum
1: md5 2: sha1 3: sha224 4:sha256 5:sha384 6: sha512
在計算之時加salt ,添加的隨機數:
/etc/passwd:用戶的信息庫
ntp:x:38:38::/etc/ntp:/sbin/nologin
name:password:UID:GID:GECOS:directory:shell
GID:用戶所屬的主組ID
GECOS:用戶的註釋信息
directory:用戶的home路徑
shell:用戶登錄時默認的shell路徑
/etc/shdow:用戶的密碼庫
root:$6$kAccl0KZ74DBvwrJ$OsVHXkxJw1IDRxwzzzZ7m71u3.eFZsAcM1Hsw1SjTTp5u70ldBqkufb9uKuqVruw8E0qQKQgg7pp7DSQJNE1G.:17454:0:99999:7:::
解析: $6$ 代表 sha512
第三個$後纔是真的密碼串
用戶:密碼:最後一次更改密碼的天數(從1970.01.01開始到今天):密碼的最短使用期限: 密碼的最長使用期限:密碼警告期段:密碼有效期間:賬戶過期日期:保留字段
/etc/group :
root:x:0:
group_name:password:GID:user_list
user_list:該組的用戶成員,以此組爲附加組的用戶的用戶列表
2、用戶管理命令
進程以其發起者的身份運行,進程對文件的訪問權限,取決於發起此進程的用戶的權限;
系統用戶:爲了能夠讓那些後臺進程或服務類進程以非管理員身份運行,通常需要爲此創建多個普通用戶,該類系統從不登錄系統
1)groupadd命令:添加組
groupadd [選項] group
-g, --gid GID 手動指定GID,默認爲上個組的GID+1
-r, --system 創建系統組,隨機器開啓的進程爲後臺進程
groupmod命令:修改組
groupmod [選項] GROUP
-g, --gid GID 修改GID
-n, --new-name NEW_GROUP 修改組名
groupdel命令: 刪除組
groupdel [選項] GROUP
2)useradd命令: 創建用戶 (創建新用戶若沒指定組,則創建和用戶名一樣的組)
useradd [選項] 登錄
useradd -D
useradd -D [選項]
-u, --uid UID 指定UID,默認爲上個組的UID+1
-g,--gid GROUP 指定基本組ID,此組必須事先存在
-c, --comment COMMENT 指定註釋信息
-G, --groups GROUPS 指明用戶所屬的附加組,多個組之間用逗號分隔
-d, --home-dir HOME_DIR 以指定的路徑爲用戶的家目錄,通過複製/etc/skel此目錄並重命名實現的,指定的家目錄路徑如果事先存在,則不會爲用戶複製配置環境配置文件(隱藏文件)。
-s, --shell SHELL 指定用戶的默認shell,可用的所有shell列表存儲在e/etc/shells文件
-r, --system 創建系統用戶
-M, --no-create-home 不創建用戶的主目錄
-f, --inactive INACTIVE 密碼過期後,賬號被徹底禁用之前的天數, 0表示立即禁用,-1表示禁用這個功能
-D, --defaults 顯示或更改默認的 useradd 配置
useradd -D 顯示創建用戶的默認配置,修改的結果保存於/etc/default/useradd文件中
注意:創建用戶時的諸多默認設定配置文件爲/etc/logic.defs
usermod命令:修改用戶屬性
usermod [選項] 登錄
-u, --uid UID 修改用戶的ID號
-g, --gid GROUP 修改用戶的基本組,原本的組必須存在
-G, --groups GROUPS 修改用戶的所屬的附加組,原來的附加組會被覆蓋
-a, --append GROUP 與-G一同使用,用於添加多個附加組
-c, --comment 修改註釋信息
-d, --home HOME_DIR 修改用戶的家目錄,用戶的原來家目錄的信息不會被複制到新的家目錄
-m, --move-home 只能與-d一同使用,用於將原來的家目錄文件一起移動至新的家目錄
-l, --login LOGIN 修改用戶名
-s, --shell SHELL 修改用戶的默認shell
-L, --lock 鎖定用戶的密碼(禁止用戶登錄),即在用戶原來的密碼串之前添加一個“!”
-U, --unlock 解鎖用戶的密碼,刪除之前密碼串的“!”
userdel命令:刪除用戶的命令
userdel [選項] 登錄
-r:刪除用戶時一併刪除其家目錄
3)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, --lock 鎖定指名帳戶的密碼(僅限 root 用戶)
-u, --unlock 解鎖指名賬戶的密碼(僅限 root 用戶)
-d, --delete 刪除已命名帳號的密碼(只有根用戶才能進行此操作)
-e, --expire 過期期限,表示日期
-i, --inactive=DAYS 當密碼過期後經過多少天該帳號會被禁用(只有根用戶才能進行此操作)
-x, --maximum=DAYS 密碼的最長有效時限(只有根用戶才能進行此操作)
-n, --minimum=DAYS 密碼的最短有效時限(只有根用戶才能進行此操作)
-w, --warning=DAYS 在密碼過期前多少天開始提醒用戶(只有根用戶才能進行此操作) 警告期限
--stdin 從標準輸入讀取令牌(只有根用戶才能進行此操 用法: echo "PASSWIRD" | passwd --stadin USERNAME
4)gpasswd命令:默認給組定義密碼
組密碼路徑 /etc/gshadow
gpasswd [選項] group
-a, --add USER 向組中添加用戶
-d, --delete USER 從組中移除用戶
5)newgrp命令:臨時切換指定的組爲基本組
newgrp [-] [group]
- 會模擬用戶重新登錄以實現重新初始化其工作環境
6)chage命令:更改用戶密碼過期信息
chage [選項] 登錄名
-d, --lastday 最近日期 將最近一次密碼設置時間設爲“最近日期”
-E, --expiredate 過期日期 將帳戶過期時間設爲“過期日期”
-W, --warndays 警告天數 將過期警告天數設爲“警告天數”
-m, --mindays 最小天數 將兩次改變密碼之間相距的最小天數設爲“最小天數”
-M, --maxdays 最大天數 將兩次改變密碼之間相距的最大天數設爲“最大天數”
7)id命令: 顯示實際和有效的ID
id [OPTION]... [USER]
-u, --user 僅顯示有效的UID
-g, --group 僅顯示用戶基本組的ID
-G, --groups 僅顯示用戶所屬的所有組的ID
-n, --name 顯示名稱而非ID
8)su命令 :用戶切換命令
登錄式切換 :會通過讀取用戶的shell配置文件,重新初始化
su - USERNAME 或者 su -l USERMANE
非登錄式切換 :不會讀取目標配置文件,進行初始化
su USERNAME
注意: 管理員可無密碼切換至其他用戶,其他用戶切換至任何用戶都需要提供密碼
-c 'COMMAND' 僅以指定用戶的身份運行此處指定的命令
練習:
1)創建組distro,其GID爲2016
[root@localhost ~]# groupadd -g 2016 distro
[root@localhost ~]# cat /etc/group /*查看組*/
2)創建用戶mandriva, 其ID號爲1005;基本組爲distro;
[root@localhost ~]# useradd -u 1005 -g distro mandriva
[root@localhost ~]# cat /etc/passwd | grep mandriva
mandriva:x:1005:2017::/home/mandriva:/bin/bash
3)創建用戶mageia,其ID號爲1100,家目錄爲/home/linux;
[root@localhost ~]# useradd -u 1100 -d /home/linux mageia
[root@localhost ~]# cat /etc/passwd | grep mageia
mageia:x:1100:1100::/home/linux:/bin/bash
4)給用戶mageia添加密碼,密碼爲mageedu;
[root@localhost ~]# passwd mageia
更改用戶 mageia 的密碼 。
新的 密碼:
5)刪除mandriva,但保留其家目錄;
[root@localhost ~]# userdel mandriva
6)創建用戶slackware,其ID號爲2002,基本組爲distro,附加組peguin;
[root@localhost ~]# useradd -u 2002 -g distro -G pegion slackware
[root@localhost ~]# cat /etc/passwd | grep slackware
slackware:x:2002:2017::/home/slackware:/bin/bash
7)修改slackware的默認shell爲/bin/tcsh
[root@localhost ~]# usermod -s /bin/tcsh slackware
[root@localhost ~]# cat /etc/passwd | grep slackware
slackware:x:2002:2017::/home/slackware:/bin/tcsh
8)爲用戶slackware新增附加組admins
[root@localhost ~]# usermod -G admins -a slackware
[root@localhost ~]# cat /etc/passwd | grep slackware
slackware:x:2002:2017::/home/slackware:/bin/tcsh
二、文件權限管理
1、文件權限管理:
進程安全上下文:
/]#ls -l ---> rwx rwx rwx
左三位:定義屬主 user的權限
中三位:定義屬組 group權限
右三位:定義其他 other的權限
進程對文件的訪問權限應用模型:
進程的屬主與文件的屬主是否相同,如果相同則應用屬主權限,否則檢查進程的屬主是否屬於文件的屬組,如果屬於則應用屬組權限,否則應用其他權限。
權限:
r :read 讀 w:wirte 寫 x:excute 執行
文件:
r:可獲得文件的數據 4
w:可修改文件的數據 2
x:可將此文件執行爲進程 1
目錄:
r:可使用Ls命令來獲取其下的所有文件列表
w:可修改此目錄下的文件列表,即創建或者刪除文件
x:可cd到此目錄中,可使用ls -l 來獲取文件詳細述屬性信息
mode: rwxrwxrwx
ownership:user group
權限組合機制:
--- 0 --x 1 -w- 2 -wx 3 r-- 4 r-x 5 rw- 6 rwx 7
2、文件權限命令:
1)chmod命令:
說明 : Linux/Unix 的檔案存取權限分爲三級 : 檔案擁有者、羣組、其他。利用 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...
chmod [選項]... 模式[,模式]... 文件...
MODE表示法:
賦權表示法:直接操作一類用戶所有權限位rwx
u= g= o= a=
授權表示法: 直接操作一類用戶的一個權限位r w x
u-x g-r o-r o+rwx u+rwx ug+r 之類
(2) chmod [OPTION]... OCTAL-MODE FILE...
chmod [選項]... 八進制模式 文件...
(3) chmod [OPTION]... --reference=RFILE FILE...
chmod [選項]... --reference=參考文件 文件...
選項:
-R, --recursive 遞歸修改,對一個目錄下所有文件進行修改
2)從屬關係管理命令:
1、chown命令:
說明:Linux/Unix 是多人多工作業系統,所有的檔案皆有擁有者。利用 chown 可以將檔案的擁有者加以改變。一般來說,這個指令只有是由系統管理者(root)所使用,一般使用者沒有權限可以改變別人的檔案擁有者,也沒有權限可以自己的檔案擁有者改設爲別人。只有系統管理者(root)纔有這樣的權限。
chown [選項]... [所有者][:[組]] 文件...
chown [選項]... --reference=參考文件 文件...
選項: -R 遞歸修改
chgrp命令:
2、umask:文件的權限反向掩碼,遮罩碼
文件: 666 ---umask
目錄:777 ----umask
注意:之所以文件用666去減,拜師文件默認不能擁有執行權限,如果減的結果中有執行權限,則加1 比如 666-023=644
umask命令:查看當前umask
umask MASK :設置umask
注意:此類設定只對當前shell進程有效
3、install命令:
install [OPTION]... [-T] SOURCE DEST 單源複製
install [OPTION]... SOURCE... DIRECTORY 多源複製
install [OPTION]... -t DIRECTORY SOURCE... 多源複製
install [OPTION]... -d DIRECTORY... 創建目錄
選項:
-m --mode=MODE 設定目標文件權限,默認爲755
-o --owner=OWNER 設定目標文件屬主
-g --group=GROUP 設定目標文件屬組
4、mktemp命令: 創建臨時文件(變量賦值)通常在tmp目錄下創建,會自動刪除
mktemp [選項]... [TEMPLATE]
eg: mktemp /tmp/aba.xxx---> /tmp/aba.agag 隨機生成文件
-d 創建臨時目錄 xxx
-u 測試是否可以創建文件,文件並不存在
注意: mktemp會將創建的臨時文件直接返回,可直接通過命令引用保存起來。
3)chown與chmod命令的區別
(1)chown 修改文件和文件夾的用戶和用戶組屬性
1、要修改文件hh.c的所有者.修改爲sakia的這個用戶所有
chown sakia hh.c
這樣就把hh.c的用戶訪問權限應用到sakia作爲所有者
2、將目錄 /tmp/sco 這個目錄的所有者和組改爲sakia和組net
chown -R sakia:net /tmp/sco
(2)chmod 修改文件和文件夾讀寫執行屬性
1、把hh.c文件修改爲可寫可讀可執行
chmod 777 hh.c
要修改某目錄下所有的文件屬性爲可寫可讀可執行
chmod 777 *.*
把文件夾名稱與後綴名用*來代替就可以了。同理若是要修改所有htm文件的屬性
chmod 777 *.htm
2、把目錄 /tmp/sco修改爲可寫可讀可執行
chmod 777 /tmp/sco
要修改某目錄下所有的文件夾屬性爲可寫可讀可執行
chmod 777 *
把文件夾名稱用*來代替就可以了
要修改/tmp/sco下所有的文件和文件夾及其子文件夾屬性爲可寫可讀可執行
chmod -R 777 /tmp/sco