
3_4 Linux用戶及權限詳解
(相關資料圖)
用戶、組、權限
安全上下文(security context):
權限:r,w,x
文件:
r:可讀,可以使用類似cat等命令查看文件內容
w: 可寫,可以編輯或者刪除此文件
x: 可執行,eXacutable,可以命令提示符下當作命令提交給內核運行
目錄:
r: 可以對此目錄執行ls以列出內部所有文件
w: 可以在此目錄創建文件
x: 可以使用cd切換進此目錄,也可以使用ls -l 查看內部文件的詳細信息
rwx:
r--:只讀
r-x:讀和執行
---:無權限
0 000 ---:無權限
1 001 --x:執行
2 010 -w-:寫
3 011 -wx:寫和執行
4 100 r--:只讀
5 101 r-x:讀和執行
6 110 rw-:讀寫
7 111 rwx:讀寫執行
755:rwxr-xr-x
用戶:UID(id標識用戶)、/etc/passwd(用戶信息庫,存儲用戶對應id)
組:GID、/etc/group
解析:名稱解析
影子口令:
用戶:/etc/shadow (存放密碼)
組:/etc/gshadow
用戶類別:
管理員:id為0
普通用戶:1-65535
系統用戶:1-499,用來運行后臺進程,不允許登錄系統
一般用戶:500-60000
用戶類別:
管理員組:
普通組:
系統組:
一般組:
用戶類別(分法2):
基本組:
私有組:創建用戶時,如果沒有為其指定所屬的組,系統會自動為其創建一個與用戶名同名的組
附加組、額外組:默認組以外的其它組
查看passwd文件:
cat /etc/passwd
用whatis passwd可以查看passwd在man文檔有幾個章節
七個字段:
一:account,登錄名
二:password,密碼占位符
三:UID
四:GID
五:comment,用戶注釋信息
六:HOME DIR,家目錄
七:shell,用戶的默認shell
cat /etc/shells:查看用戶合法shell
cat /etc/shadow:查看shadow文件,可以用man 5 shadow
一:登錄名
二:encrypted password:加密的密碼。。兩個嘆號表示鎖定,不能登錄。。寫入文件前會加入隨機生成的雜質,再生成密文。防止密碼系統猜到密碼
三:密碼上次修改時間
四:密碼最少使用時間
五:密碼最長使用期限
六:還有多久過期
七:密碼過期延長時間,不改不讓使用。這幾天沒登陸,需要用管理員解鎖
八:密碼有效天數。過期無法登錄
九:保留字段
加密方法:
對稱加密:加密和解密使用同一個密碼
公鑰加密:每個密碼都成對出現,一個為私鑰(secret key),一個為公鑰(public key)。。時間比對稱慢三個數量級以上,多用于密鑰交換
單向加密,散列加密:也叫指紋加密,提取數據特征碼(每個數據有個唯一的特征碼,類似人的指紋,不可逆)。常用于數據完整性校驗
1、雪崩效應(初始輸入數據一點點改變,特征碼結果變化很大)
2、定長輸出
MD5:message Digest(5是版本號),128位定長輸出
SHA1:Secure Hash Algorithm,160位定長輸出。還有SHA1 256和512位定長輸出
添加用戶:useradd(用which useradd)。adduser,軟連接到useradd,本質上一樣
useradd USERNAME
管理員改其它用戶密碼:
passwd USERNAME
為什么添加用戶會主動添加一些屬性:
cd /etc/default 然后cat useradd
cat /etc/group
添加組:groupadd GROUPNAME
04_01用戶管理命令詳解
用戶管理命令:
useradd、userdel、usermod、passwd、chsh、chfn、finger、id、chage
useradd [options] USERNAME
-u UID(大于等于500,其它用戶未使用,默認/etc/passwd里最后一個用戶id號加一。。一般情況下與組id相同))
-g GID(基本組??捎媒M名或者組id,指定前組要先存在)
-G ,...(附加組)
-c “COMMENT” 注釋信息
-d /path/to/somedirectory 指定家目錄 如:useradd -c “Tony Blare” -d /home/blare user4
-s 指定shell(目錄。。。此shell一定存在于/etc/shells文件里)
-m -k 強行創建家目錄并復制skel文件
-M 不給用戶創建家目錄
-r:添加系統用戶
/etc/login.defs 設置用戶信息
/etc/shells:指定了當前系統可用的安全shell
環境變量:
PATH
HISTSIZE
SHELL
查看此用戶用什么shell:echo $SHELL
userdel
userdel [options] USERNAME (默認不刪除家目錄)
-r 同時刪除用戶的家目錄
id 查看用戶的賬號屬性信息
id [options] [USERNAME] 不加用戶,默認當前用戶
-u
-g
-G
-n
finger 查看用戶賬號信息
finger [options] USERNAME
修改用戶賬號信息:
usermod
-u 改用戶id
-g GID 改基本組
-G 改附加組。會覆蓋之前的附加組
-a -G 一起使用,追加附加組
-c 注釋信息
-d 改家目錄。改后無法訪問之前家目錄中的文件
-d -m 移動此前文件至新家目錄中
-s 改shell
-l 改用戶名
-L 鎖定賬號
-U 解鎖賬號
chsh 改用戶默認shell
chsh USERNAME
chfn 改注釋信息
chfn USERNAME
密碼管理
passwd [USERNAME] 管理員才可指定用戶
--stdin 從標準輸入讀取 如echo “Redhat” | passwd user --stdin
-l 鎖定賬號
-u 解鎖賬號
-d 刪除密碼。(紅帽禁止空密碼用戶登錄)
-n 密碼最短使用期限 -x -w -i
pwck 檢查用戶賬號完整性
chage
-d 最近一次的修改時間
-E 過期時間
-I 非活動時間
-m 最短使用期限
-M 最長使用期限
-w 警告時間
組管理命令:
groupadd、groupdel、groupmod、gpasswd
groupadd 創建組
-d 指定id。默認上一個組往下加一
-r 添加為系統組
groupmod 改組信息
-g GID
-n GRPNAME改組名
groupdel 刪除組
gpasswd 給組加密碼
newgrp 臨時登錄更改用戶基本組。可用exit退出
加用戶 可直接改passwd shadow group三個文件
權限管理:
chown、chgrp、chmod、umask
04_02權限及權限管理
權限管理
r:讀
w:寫
x:可執行
三類用戶:
u:屬主
g: 屬組
o: 其它用戶
chown:改變文件屬主。(只有管理員可以使用此命令)
# chown USERNAME file,...
-R 修改目錄及其內部文件的屬主
--reference=/path/to/somefile [-R] file,... 參考。把后面的文件的屬主屬組都 改為和第一個一樣
# chown [USERNAME] :GRPNAME 可用此命令同時改屬主數組。不加用戶時可只改屬組
chgrp:
#chgrp GRPNAME file,...
-R
--reference=/path/to/somefile
chmod 修改文件的權限
修改三類用戶觀的權限:
chmod MODE file,... 三位數字,少了默認前面補0
-R 修改目錄及其內部文件的權限
--reference=/path/to/somefile [-R]
修改某類用戶或某些類用戶權限:
u,g,o,a(all)
chmod 用戶類別=MODE chmod g=rw[-] 沒給出的可用省略
chmod go=r
chmod g=rx,o= file
修改某類用戶某位或某些位權限:
u,g,o,a(all)
chmod 用戶類別+|- MODE file,...
chmod u+x,g-x file
chmod [a]+wx file
練習:
1、新建一個沒有家目錄的用戶openstack
2、復制/etc/skel為/home/openstack
3、改變/home/openstack及其內部文件的屬主屬組均為openstack
4、/home/openstack及其內部文件,屬組和其它用戶沒有任何訪問權限
su - openstack
ls -l /etc/shadow
權限400 :
權限設置對管理員沒有用
普通用戶為啥能改密碼?ls -l `which passwd` 屬主有個s權限
bc:計算器 q退出
scal=2:保留兩位小數
openssl passwd 可用生成加密密碼
whatis passwd 查看有sslpasswd
man sslpasswd
openssl passwd -1(這是一) -salt "12345678’(八位)
umask :遮罩碼(一般用戶默認002,root022)
創建文件:666-umask 默認不能有執行權限,如果算得結果有執行權限,則將其權限加1:
創建目錄 777-umask
站在用戶登錄的加偶來說,shell的類型:
登錄式shell:
正常通過某終端登錄
su - USERNAME
su -l USERNAME
非登錄式shell:
su USERNAME
圖形終端下打開命令窗口
自動執行的shell腳本
bash的配置文件:
全局配置
/etc/profile,/etc/profile.d/*.sh,/etc/bashrc
個人配置
~/.bash_profile,~/.bashrc
profile類的文件:
設定環境變量(個人和全局沖突時,以個人為準)
運行命令或腳本
bashrc類的文件
設定本地變量
定義命令別名
登錄式shell如何讀取配置文件?
/etc/profile ——> /etc/profile.d/*.sh --> ~/.bash_profile --> ~/.bashrc--> /etc/bashrc
非登錄式shell如何讀取配置文件?
~/.bashrc--> /etc/bashrc --> /etc/profile.d/*.sh