Linux是一個Multi-tasks(多任務)、 Multi-Users(多用戶)的系統linux
每個登錄者或使用者都有用戶標識、密碼(所謂3A)算法
所謂的3A:docker
Authentication(驗證機制)shell
Authorization(受權機制)centos
Audition(審計)bash
組的概念:用戶組,用戶容器;是爲了便於用戶權限分配app
用戶類別:
ide
管理員:rootui
普通用戶:加密
系統用戶
登陸用戶
在linux系統中用戶標識UserID,簡稱UID
用戶標識使用的範圍:
16bits二進制數字:0-65535(默認16位,可擴展32位)
管理員:0
普通用戶:1-65535
系統用戶:1-499(Cenots6),1-999(Centos7)
登陸用戶:500-60000(Centos6),1000-60000(Centos7)
名稱解析:
每個用戶名都對應一個UID號碼,根據名稱解析庫進行解析:/etc/passwd
組:
組類別1:
管理員組
普通用戶組:
系統組
登陸組
組標識:GroupID, GID
管理員組:0
普通用戶組:1-65635
系統用戶組:1-499(CentOS6), 1-999(CentOS7)
登陸用戶組:500-60000(CentOS6), 1000-60000(CentOS7)
名稱解析:groupname <--> gid;解析庫:/etc/group
組類別2:
用戶的基本組:每一個用戶都有本身的組
用戶的附加組:加入另外組中
組類別3:
私有組:組名同用戶名,且只包含一個用戶;
公共組:組內包含了多個用戶;
認證信息:
經過比對事先存儲的,與登陸時提供的信息是否一致;
密碼存放文件位置:
用戶:/etc/shadow
組:/etc/gshadow
密碼的使用策略:
一、使用隨機密碼;
二、最短長度不要低於8位;
三、應該使用大寫字母、小寫字母、數字和標點符號四類字符中至少三類;
四、按期更換;
加密算法:
對稱加密:加密和解密使用同一個密碼;
非對稱加密:加密和解密使用的一對兒密鑰;
密鑰對兒:
公鑰:public key
私鑰: private key
非對稱加密是一對的,使用公鑰加密,須要使用與之對應私鑰解密;其可與之起返
單向加密:只能加密,不能解密;提取數據特徵碼;(定長輸出)
算法:
md5: message digest, 128bits
sha:secure hash algorithm, 160bits
sha224
sha256
sha384
sha512(512是長度)
示例:
[root@centos7 ~]# echo "nihao" | md5sum
0a34a9366d438e6ac5ae3480d024c4ef -
[root@centos7 ~]# echo "abcdefg" | sha512sum
9ab216d2cf3d89df5ba18cd3e3eb390d4ed30a9a0349b71680cc244c7e22cdddabb5a042481b2c6c8d6fabee4f3cb280f02c0c3f27ee66929aa2342f2142750c -
/etc/passwd:用戶的信息庫
name:password:UID:GID:GECOS:directory:shell
解釋:
name: 用戶名
password:能夠是加密的密碼,也但是佔位符x;
UID:用戶ID號
GID:用戶所屬的主組的ID號;
GECOS:註釋信息
directory:用戶的家目錄;
shell:用戶的默認shell,登陸時默認shell程序;
/etc/shadow:用戶密碼(gshadow也是同樣)
用戶名:加密的密碼:最近一次修改密碼的時間:最短使用期限:最長使用期限:警告期段:過時期限:保留字段
/etc/group:組的信息庫
group_name:password:GID:user_list
user_list:該組的用戶成員;以此組爲附加組的用戶的用戶列表;
相關命令:useradd, userdel, usermod, passwd, groupadd, groupdel, groupmod, gpasswd, chage, chsh, id, su
useradd命令:建立用戶
[root@centos7 ~]# useradd test
useradd [選項] 登陸名
-u, --uid UID:指定UID;
[root@centos7 ~]# useradd -u 1500 docker
docker:x:1500:1500::/home/docker:/bin/bash
-g, --gid GROUP:指定基本組ID,此組必需要存在,不然報錯;
[root@centos7 ~]# useradd -g yunwei test2
-G, --groups GROUP1[,GROUP2,...[,GROUPN]]]:指明用戶所屬的附加組,多個組之間用逗號分隔;
[root@centos7 ~]# useradd -G docker test
docker:x:1500:test
-c, --comment COMMENT:指明註釋信息;
-d, --home HOME_DIR:以指定的路徑爲用戶的家目錄;經過複製/etc/skel此目錄並重命名實現;指定的家目錄路徑若是事先存在,則不會爲用戶複製環境配置文件;
[root@centos7 sh]# useradd -d /sh/test2 test2
test2:x:1502:1502::/sh/test2:/bin/bash
-s, --shell SHELL:指定用戶的默認shell,可用的全部shell列表存儲在/etc/shells文件中;
[root@centos7 sh]# useradd -s /bin/sh test2
test2:x:1502:1502::/home/test2:/bin/sh
-r, --system:建立系統用戶;
-M:不建立用戶家目錄
-f:非活動期限(密碼過時後,用戶完全禁用時間)
注意:建立用戶時的默認設定配置文件爲/etc/login.defs (全局配置)
useradd -D:顯示建立用戶的默認配置;
[root@centos7 ~]# useradd -D
GROUP=100
HOME=/home
INACTIVE=-1
EXPIRE=
SHELL=/bin/bash
SKEL=/etc/skel
CREATE_MAIL_SPOOL=yes
useradd -D 選項: 修改默認選項的值;
[root@centos7 ~]# useradd -D -s /bin/sh
SHELL=/bin/sh
修改的結果保存於/etc/default/useradd文件中;
usermod命令:修改用戶屬性
usermod - modify a user account
格式:
usermod [options] 用戶名
usermod [選項] 登陸
-u, --uid UID:修改用戶的ID爲此處指定的新UID;
-g, --gid GROUP:修改用戶所屬的基本組(此處組必須先存在);
-G, --groups GROUP1[,GROUP2,...[,GROUPN]]]:修改用戶所屬的附加組;原來的附加組會被覆蓋;
-a, --append:只能與-G一同使用,用於爲用戶追加新的附加組;
-c, --comment COMMENT:修改註釋信息;
-d, --home HOME_DIR:修改用戶的家目錄;用戶原有的文件不會被轉移至新位置;
-m, --move-home:只能與-d選項一同使用,用於將原來的家目錄移動爲新的家目錄;
[root@centos7 sh]# usermod -m -d /sh/test6 -u 10005 test6
注:要加-u選項,後跟UID和用戶名,不然會報錯
-l, --login NEW_LOGIN:修改用戶名;
-s, --shell SHELL:修改用戶的默認shell;
-L, --lock:鎖定用戶密碼;即在用戶原來的密碼字符串以前添加一個"!";
-U, --unlock:解鎖用戶的密碼;
userdel命令:刪除用戶
userdel [選項] 登陸
-r:刪除用戶時一併刪除其家目錄;
groupadd命令:添加組
groupadd [選項] group_name
[root@centos7 ~]# groupadd mylist
-g GID:指定GID;默認是上一個組的GID+1;
[root@centos7 ~]# groupadd -g 10000 kklist
-r: 建立系統組;
groupmod命令:修改組屬性
groupmod [選項] GROUP
-g GID:修改GID;
[root@centos7 ~]# groupmod -g 10010 kklist
-n new_name:修改組名;
[root@centos7 ~]# groupmod -n kwlist kklist
groupdel命令:刪除組
groupdel [選項] GROUP
[root@centos7 ~]# groupdel mylist
passwd命令:
實現功能:
(1) passwd:修改用戶本身的密碼;
(2) passwd USERNAME:修改指定用戶的密碼,但僅root有此權限;
選項:
-l, -u:鎖定和解鎖用戶;
-d:清除用戶密碼串;
[root@centos7 ~]# passwd -d kwang
-e DATE: 過時期限,日期;
-i DAYS:非活動期限;
-n DAYS:密碼的最短使用期限;
-x DAYS:密碼的最長使用期限;
-w DAYS:警告期限;
--stdin:(一般腳本使用)
echo "PASSWORD" | passwd --stdin USERNAME
gpasswd命令:
組密碼文件:/etc/gshadow
設置組密碼:
[root@test1 ~]# gpasswd 組名稱
gpasswd [選項] group
-a USERNAME:向組中添加用戶
[root@centos7 sh]# gpasswd -a test1 mylist
-d USERNAME:從組中移除用戶
[root@centos7 sh]# gpasswd -d test1 mylist
newgrp命令:臨時切換指定的組爲基本組;
newgrp [-] [group]
-: 會模擬用戶從新登陸以實現從新初始化其工做環境;
不加入"-"只是臨時切換到指定組
示例:
[root@centos7 sh]# gpasswd -a test1 mylist
[root@centos7 sh]# su - test1
[test1@centos7 mylist]$ newgrp mylist
[test1@centos7 mylist]$ touch 2
-rw-r--r-- 1 test1 mylist 0 Mar 20 14:27 2
chage命令:更改用戶密碼過時信息
chage - change user password expiry information
格式:
chage [選項] 登陸名
選項:
-d:上一次更改的日期;0表示第一次登錄強制修改密碼
[root@centos7 home]# chage -d 0 kwang
-E:帳號到期的日期;0表示當即過時,-1表示永不過時
[root@centos7 home]# chage -E 0 kwang
[root@centos7 home]# chage -E -1 kwang
-l:列出用戶密碼有效期限信息
[root@centos7 home]# chage -l kwang
-m:密碼可更改的最小天數,零表明任什麼時候候均可以更改密碼
[root@centos7 home]# chage -m 1 kwang
Minimum number of days between password change : 1
-M:密碼保持有效的最大天數
[root@centos7 home]# chage -M 7 kwang
Maximum number of days between password change : 7
-W:用戶密碼到期前,提早收到警告信息的天數
[root@centos7 home]# chage -W 5 kwang
Number of days of warning before password expires : 5
-I:密碼失效時間後,鎖定帳號的天數
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':僅以指定用戶的身份運行此處指定的命令;
[root@test1 ~]# su - test -c 'ls -l /etc/passwd'
練習1:建立用戶gentoo,UID爲4001,基本組爲gentoo,附加組爲distro(GID爲5000)和peguin(GID爲5001);
練習2:建立用戶fedora,其註釋信息爲"Fedora Core",默認shell爲/bin/tcsh;
練習3:修改gentoo用戶的家目錄爲/var/tmp/gentoo;要求其原有文件仍能被用戶訪問;
練習4:爲gentoo新增附加組netadmin;
解答1:
[root@centos7 ~]# groupadd -g 5000 distro
[root@centos7 ~]# groupadd -g 5001 peguin
[root@centos7 ~]# useradd -G distro,peguin -u 4001 gentoo