目錄:linux
-、linux用戶及組的管理算法
1.用戶和組的基本概念docker
1.1用戶類別及用戶標示shell
1.2組類別及組標識centos
1.3用戶認證信息及加密算法安全
2.用戶信息及用戶密碼相關文件app
2.1用戶的信息庫文件/etc/passwdless
2.2用戶的密碼庫文件/etc/shadowide
3.組信息及組密碼相關文件工具
3.1組的信息庫文件/etc/group
3.2組的密碼庫文件/etc/gshadow
4.用戶及組的相關管理命令
4.1用戶管理命令
4.2組管理命令
4.3密碼管理及其餘相關命令
2、linux文件權限管理
1.文件權限模型
1.1進程安全上下文及文件權限的表示
1.2文件和目錄的權限狀態
2.文件權限狀態及相關管理命令
2.1文件的八進制權限表示法
2.2權限管理命令chmod
3.文件從屬關係及相關管理命令
3.1屬主管理命令chown
3.2屬組管理命令chgrp
4.文件umask的特性及管理
4.1umask的做用
4.2umask的管理
linux用戶及組的管理:
1.用戶和組的基本概念
1.1用戶類別及用戶標示
用戶類別:管理員和普通用戶
管理員,即root用戶,能夠對系統進行一切操做;
普通用戶:分爲系統用戶和登陸用戶。
系統用戶:是爲了可以讓那些後臺進程或服務類進程以非管理員的身份運行,一般須要爲此建立多個普通用戶;這類用戶從不用登陸系統;
登陸用戶:是須要操做計算機的交互式登陸的用戶
用戶標示:
即UID,用做用戶名稱的轉換,用0-65535之間的二進制數字表示,默認60000後的UID用做保留
管理員的UID永遠爲0
普通用戶的UID則爲1-65535
系統用戶的UID在centos6裏爲1-499,在centos7裏爲1-999
登陸用戶的UID在centos裏爲500-60000,centos7裏爲1000-60000
1.2組類別及組標示
用戶組按類別可分爲三類:
第一種類別:管理員組和普通用戶組,普通用戶組裏又分爲了系統用戶組和登陸用戶組。
第二種類別:基本組和附加組
第三種類別:私有組和公共組
組標示:
即GID,用做組名稱的轉換,用0-65535之間的數字表示,默認60000後的GID用做保留
管理員組的GID永遠爲0
普通用戶組的GID則爲1-65535
系統用戶組的GID在centos6裏爲1-499,在centos7裏爲1-999
登陸用戶組的GID在centos裏爲500-60000,centos7裏爲1000-60000
1.3用戶認證信息及加密算法
用戶認證:
用戶登陸計算機時,計算機經過對比事先存儲的數據與登陸時提供的信息是否一致;即驗證用戶的密碼。
密碼的使用策略應遵循如下幾點:
1、使用隨機密碼;
2、最短長度不要低於8位;
3、應該使用大寫字母、小寫字母、數字和標點符號四類字符中至少三類;
4、按期更換
密碼文件裏存儲的密碼是加密的,而對密碼進行加密的方式在centos裏主要是單向加密,算法主要有md五、sha一、sha22四、sha25六、sha38四、sha512
對於單項加密這種機制而言,爲了不多個用戶的密碼相同,在計算之時加salt(隨機數,每一個用戶的salt都不同);加入的salt不一樣,加密後的結果相去甚遠,這樣即便兩個用戶的密碼相同,在用戶看來兩個加密後的密文字符串也不同,避免用戶密碼泄露
2.用戶信息及用戶密碼相關文件
2.1用戶的信息庫文件/etc/passwd
用戶的信息存儲在/etc/passwd文件中,以冒號分隔的每一個字段的含義爲
name:password:UID:GID:GECOS:directory:shell
name: 用戶名
password:密碼佔位符。實際密碼保存在/etc/shadow中
UID: 用戶的ID號
GID: 用戶所屬的基本組的ID號;
GECOS: 註釋信息。可選的,提供用戶的信息
directory:用戶的家目錄;用戶登陸系統後首先進入此目錄,root用戶默認是/root,普通用戶則是/home/用戶名
shell: 用戶的默認shell,定義用戶登陸系統後使用的shell程序;
2.2用戶的密碼庫文件/etc/shadow
早期的unix系統的密碼保存在/etc/passwd中,但passwd文件對全部用戶可讀,存在安全隱患,因此如今的linux使用shadow保存加密後的密碼,/etc/shadow文件只有管理員才能夠訪問
/etc/shadow文件中保存了用戶加密後的密碼及密碼的各類期限,以冒號爲分隔每段分別表示爲:
用戶名:加密的密碼:最近一次修改密碼的時間:最短使用期限:最長使用期限:警告期限:非活動期限:過時期限:保留字段
用戶名:即用戶的名稱,對應/etc/passwd中的用戶名
加密的密碼:
此段若是表示爲*,則表示禁止此用戶登陸;
若是加密的字符串前有!表示用戶被禁用,新建立的用戶尚未密碼時就是禁用狀態,使用!!表示;
若是此段是空的,表示用戶沒有密碼,登陸時不須要密碼;
第一段:加密算法,1-6分別表示md五、sha一、sha22四、sha25六、sha38四、sha512
第二段:用戶的salt隨機數
第三段:用戶加密後的密碼
最近一次修改密碼的時間:linux計算日期是以1970年 1月1號開始計算到修改密碼那一刻的時間天數
最短使用期限:表示多久後才能夠改密碼。0表示能夠隨時更改
最長使用期限:更改後的密碼最長可使用多少天
警告期限:密碼在到達最常使用期限前,系統會發出警告,提醒用戶密碼將過時請更新密碼,默認是7,表示密碼在到達最常使用期限前的7天會發出警告
非活動期限(過時期限):若是過了警告期沒有更有更改密碼,則在非活動期限內,必須更改密碼後才能夠登陸進系統
過時期限:帳戶過時時間,帳戶過時時,用戶將不被容許登陸
注意,帳戶過時不一樣於密碼過時。帳戶過時時,用戶將不被容許登陸;密碼過時時,用戶將不被容許使用其密碼登陸。
保留字段:此字段保留做未來使用
3.組信息及組密碼相關文件
3.1組的信息庫文件/etc/group
組的信息存儲在/etc/group文件中
每行以冒號爲分隔符分割成4段,依次表示 爲
group_name:password:GID:user_list
group_name:用戶組的名稱
password: 組密碼佔位符,實際密碼保存在/etc/shadow中
GID: 組的id號
user_list: 用戶列表,注意:該組的用戶成員是:以此組爲附加組的用戶的用戶列表;而用戶的基本組在/etc/passwd中記錄
3.2組的密碼庫文件/etc/gshadow
/etc/gshadow 文件中保存了用戶組加密後的密碼
分別爲:
組名:加密了的密碼:組管理員:組成員
4.用戶及組的相關管理命令
4.1用戶管理命令
useradd命令:建立用戶
useradd [選項] 登陸名
選項:
-u, --uid UID:指定UID;
-g, --gid GROUP:指定基本組ID,此組必須事先存在;
-G, --groups GROUP1[,GROUP2,...[,GROUPN]]]:指明用戶所屬的附加組,多個組之間用逗號分隔;
-c, --comment COMMENT:指明註釋信息;
-d, --home HOME_DIR:以指定的路徑做爲用戶的家目錄;經過複製/etc/skel此目錄並重命名實現;指定的家目錄路徑若是事先存在,則不會爲用戶複製環境配置文件;
-s, --shell SHELL:指定用戶的默認shell,可用的全部shell列表存儲在/etc/shells文件中;
-r, --system:建立系統用戶;
-M:不建立用戶主目錄,即便系統在/etc/login.defs 中的設置 (CREATE_HOME) 爲 yes
-f:用戶密碼過時後,帳戶被完全禁用以前的天數。0表示(到最長使用期限後)當即禁用,-1表示禁用這個功能(帳戶永不由用,改密碼後仍可使用)。
注意:建立用戶時的諸多默認設定配置文件爲/etc/login.defs
useradd-D:顯示建立用戶的默認配置;
useradd -D 選項: 修改默認選項的值;修改的結果保存於/etc/default/useradd文件中;
練習:將建立用戶時默認shell更改成/bin/csh
usermod命令:修改用戶屬性
usermod [選項] 登陸名
-u,--uid UID:修改用戶的ID爲此處指定的新UID;
-g, --gid GROUP:修改用戶所屬的基本組;注意,指定的組要事先存在
-G, --groupsGROUP1[,GROUP2,...[,GROUPN]]]:修改用戶所屬的附加組。注意:原來的附加組會被覆蓋;
-a, --append:與-G一同使用(-a -G NEW_GROUP),用於爲用戶追加新的附加組;
-c, --comment COMMENT:修改註釋信息;
-d, --home HOME_DIR:修改用戶的家目錄;用戶原有的文件不會被轉移至新位置;
-m, --move-home:只能與-d選項一同使用(-m -d NEW_HOMEDIR),用於將原來的家目錄移動爲新的家目錄;原有的文件都會保留
-l, --login NEW_LOGIN:修改用戶名;
-s, --shell SHELL:修改用戶的默認shell;
-L, --lock:鎖定用戶密碼;即在用戶原來的密碼字符串以前添加一個"!"禁止用戶登陸
-U, --unlock:解鎖用戶的密碼
userdel命令:刪除用戶,默認不刪除用戶的家目錄
userdel [選項] 登陸
-r:刪除用戶時一併刪除其家目錄
4.2組管理命令
groupadd命令:添加組
groupadd [選項] group_name
-g GID:指定GID;默認是上一個組的GID+1
-r: 建立系統組
groupmod命令:修改組屬性
groupmod [選項] GROUP
-g GID:修改GID
-n new_name:修改組名
groupdel命令:刪除組
groupdel [選項] GROUP
練習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;
4.3密碼管理及其餘相關命令
passwd命令:
passwd [-k] [-l] [-u [-f]] [-d] [-e] [-nmindays] [-x maxdays] [-w warndays] [-i inactivedays] [-S] [--stdin] [username]
(1) passwd:不帶任何選項,修改用戶本身的密碼;
(2) passwd USERNAME:修改指定用戶的密碼,但僅root有此權限;
-l, --lock 鎖定用戶,使其沒法登陸;
-u, --unlock 解鎖用戶;
-d, --delete 清除用戶密碼串;
-e, --expire 終止用戶密碼,使其當即過時,必須修改密碼方可登陸;
-i, --inactive DAYS 非活動期限;
-n, --minimum DAYS 密碼的最短使用期限;
-x, --maximum DAYS 密碼的最長使用期限;
-w, --warning DAYS 警告期限;
--stdin:
echo "PASSWORD" | passwd--stdin USERNAME
將管道前輸入的字符串內容做爲管道後用戶的密碼
練習:
將magedu做爲docker用戶的密碼,同時不顯示密碼更改信息
組密碼文件:
/etc/gshadow默認給組定義其組密碼,也能管理組中的用戶
組密碼做用:
須要臨時切換到某個組做爲其基本組的用戶,若是其附加組不包含此組,則必須輸入組密碼後才能切換到此組
gpasswd命令:
gpasswd [選項] GROUP_NAME
-a USERNAME:向組中添加用戶
練習:向mygrp組中添加docker用戶
-d USERNAME:從組中移除用戶
練習:將mygrp組中的archlinux用戶移除
newgrp命令:臨時切換指定的組爲基本組;
newgrp [-] [group] 切換後須要退出執行exit便可,
注意:
若是切換的組是用戶所屬的附加組,則能夠直接切換;不然切換到其餘組則須要輸入其組密碼才能夠切換到此組
-:-選項會模擬用戶從新登陸以實現從新初始化其工做環境;即登陸時的基本組就爲臨時切換的指定組
不加-則只表示臨時切換到新的基本組
chage命令:更改用戶密碼過時信息
chage [選項] 登陸名
-d 修改最近一次修改密碼的時間
-E 修改密碼過時時間
-I 非活動期限
-W 警告期限
-m 最短使用期限
-M 最長使用期限
linux文件權限管理:
1.文件權限模型
文件的權限模型大致分爲兩類:
1、mode:rwxrwxrwx 注意:權限當中的讀寫執行權限位置是固定的
2、ownership:從屬關係(user, group)
1.1進程安全上下文及文件權限的表示
進程安全上下文,進程對文件的訪問權限應用模型:
1、進程的屬主與文件的屬主是否相同;若是相同,則應用屬主權限;
2、不然,則檢查進程的屬主是否屬於文件的屬組;若是是,則應用屬組權限;
3、不然,就只能應用other的權限;
權限:
r:readable, 可讀的
w:writable, 可寫的
x:executable,可執行的
1.2文件和目錄的權限狀態
文件:
r:可以使用cat、less等工具獲取文件的數據
w:可修改文件的數據,包括改動原來的內容或新增內容
x:可將此文件運行爲進程;
對於文件來講,默認不該該有執行權限,應爲若是其擁有執行權限,則能夠將其運行爲一個進程,有可能發起危險操做
目錄(路徑映射):
r:可以使用ls命令獲取其下的全部文件列表;可是不包括查看詳細信息(ls -l)
w:可修改此目錄下的文件列表;即建立或刪除文件;
x:可cd至此目錄中,且可以使用ls -l來獲取全部文件的詳細屬性信息;
對於目錄來講,通常都會有讀取和執行權限,不然沒法查看目錄下的文件列表
2.文件權限狀態及相關管理命令
2.1文件的八進制權限表示法
ls-l
rwxrwxrwx:
左三位:定義user(owner)屬主的權限
中三位:定義group屬組的權限;
右三位:定義other其餘用戶的權限
權限組合機制:
---000 0
--x001 1
-w-010 2
-wx011 3
r--100 4
r-x101 5
rw-110 6
rwx111 7
練習:
rw-rw-r--(664),rwxrwxr-x(775),rwxr-x---(750),rw------(600),
rwxr-xr-x(755),664(rw-rw-r--),640(rwxr-----),600(rw-------),775(rwxrwxr-x)
2.2權限管理命令chmod
chmod命令:改變文件權限
chmod [OPTION]...MODE[,MODE]... FILE...
chmod [OPTION]... OCTAL-MODEFILE...
chmod [OPTION]...--reference=RFILE FILE...
三類用戶:
u:屬主 user
g:屬組 group
o:其它 other
a:全部 all
(1) chmod [OPTION]... MODE[,MODE]... FILE...
賦權表示法:直接操做一類用戶的全部權限位rwx;
u=
g=
o=
a=
例如:
chmodg=rw fstab
chmodug=r fstab
chmodu=rwx,g=rw,o= fstab
受權表示法:直接操做一類用戶的一個權限位r,w,x;
u+,u-
g+,g-
o+,o-
a+,a-
例如:
chmodu-x fstab
chmodo+r fstab
chmodug+x fstab
chmodg-wx fstab
chmod+x fstab
chmod-x fstab
chmodu+x,g+w fstab
(2) chmod [OPTION]... OCTAL-MODE FILE...
八進制權限位表示法:三個位置的權限都要寫上
例如:
chmod 660 fstab
(3)chmod [OPTION]... --reference=RFILE FILE...
參考其餘的文件權限並修改至與之同樣
例如:
chmod--reference=/var/log/messages fstab
將fstab的權限改至跟/var/log/messages同樣
選項:
-R,--recursive:遞歸修改
遞歸修改文件權限時,最好只用於受權表示法中,由於目錄有執行權限,遞歸修改文件後,全部文件也擁有了執行權限
例如:
chmod-R 700 skel/
chmod-R go= skel/
chmod-R u+r skel/
注意:用戶僅能修改屬主爲本身的那些文件的權限;
3.文件從屬關係及相關管理命令
3.1屬主管理命令chown
chown命令:既能夠修改屬主,也能夠修改屬組
chown [OPTION]... [OWNER][:[GROUP]] FILE...
chown [OPTION]... --reference=RFILE FILE...
選項:
-R:遞歸修改
例如:
chown -R docker skel/
chown:mygrp /tmp/mytest/ 冒號以前沒有內容,表示屬主不變
chown -R archlinux:mygrp skel/
chown -R archlinux.mygrp skel/
chown-R --reference=/tmp/moosefs/ /tmp/skel/
3.2屬組管理命令chgrp
chgrp命令:只能用來改屬組,通常不多用到(chown命令既能夠修改屬主,也能夠修改屬組)
chgrp [OPTION]... GROUP FILE...
chgrp [OPTION]... --reference=RFILE FILE...
注意:僅管理員可修改文件的屬主和屬組;
練習:
1、新建系統組mariadb, 新建系統用戶mariadb,屬於mariadb組,要求其沒有家目錄,且shell爲/sbin/nologin;嘗試root切換至用戶,查看其命令提示符;
2、新建GID爲6000的組mageedu,新建用戶gentoo,要求其家目錄爲/users/gentoo,密碼同用戶名;
3、新建用戶suse,其家目錄爲/users/suse,密碼同用戶名;
4、新建用戶www, 其家目錄爲/users/www;刪除www用戶,但保留其家目錄;
5、爲用戶gentoo和fedora新增附加組mageedu;
6、複製目錄/var/log至/tmp/目錄,修改/tmp/log及其內部的全部文件的屬組爲mageedu,並讓屬組對目錄自己擁有寫權限;
4.文件umask的特性及管理
4.1 umask的做用
umask:文件的權限反向掩碼,遮罩碼;
文件的默認權限:
666-umask (由於文件默認不該該擁有執行權限)
目錄的默認權限:
777-umask (目錄默認應該擁有執行權限)
注意:之因此文件用666去減,表示文件默認不能擁有執行權限;若是減得的結果中有執行權限,則須要將其加1;
umask: 023
666-023=644
777-023=754
4.2 umask的管理
umask命令:
umask:查看當前umask
umask MASK: 設置umask
注意:此類設定僅對當前shell進程有效;
練習:
設置umask爲023並建立/tmp/test文件 和/tmp/testdir目錄查看其權限