Linux用戶
超級用戶:root
普通用戶:由管理員創建
程序用戶:一般不允許登錄計算機
組賬號
基本組
附加組
(基本組和附加組不是絕對的,而是基於用戶而言)
UID:用戶標識號,root用戶恆爲0,程序用戶默認爲1~499,普通用戶默認爲500~6000
GID:組標識號,root組恆爲0,程序組默認爲1~499,普通組默認爲500~60000
( /etc/login.defs文件中定義了UID和GID範圍,可修改)
用戶帳號文件
/etc/passwd保存用戶帳號的信息,文件內容如下
包含7個字段,每個字段用 : 隔開,每個字段含義如下
第1個字段:用戶名
第2個字段:密碼佔位符x
第3個字段:用戶的UID
第4個字段:用戶所屬基本組的GID
第5個字段:用戶全名
第6個字段:用戶的宿主目錄
第7個字段:用戶登錄所使用的shell
/etc/shadow用戶的密碼信息,文件內容如下
包含9個字段,每個字段含義如下
第1個字段:用戶名
第2個字段:加密的密碼串,*或!!表示該用戶不能登錄
第3個字段:上次修改密碼的時間(從1970年1月1日算起)
第4個字段:密碼最短有效天數,默認爲0,表示不限制
第5個字段:密碼最長有效天數,默認爲99999,表示不限制
第6個字段:提前多少天提醒用戶,默認爲7天
第7個字段:密碼過期後禁用
第8個字段:帳號失效時間(從1970年1月1日算起)
第9個字段:保留字段
創建用戶
useradd
-u:指定用戶UID
-d:指定宿主目錄,默認會在/home目錄下創建一個和用戶同名的目錄,此目錄不能事先存在
-e:指定帳號失效時間
-g:指定用戶的基本組,默認爲同名組
-G:指定用戶的附加組
-M:不爲用戶建立並初始化宿主目錄
-s:指定用戶的登錄Shell
例:useradd -u 500 -d /tom tom
設置和修改密碼
passwd
-d:清空用戶密碼
-l:鎖定用戶
-S:查看用戶是否被鎖定
-u:解鎖用戶
修改賬號 (也可以修改/etc/passwd文件)
usermod
-l:更改用戶登錄名(家目錄不變)
-L:鎖定用戶
-U:解鎖用戶
(-u、-d、-e、-g、-G、-s 使用和useradd的用法一樣)
刪除用戶
userdel
-r:刪除用戶宿主目錄
用戶賬號的初始配置文件
創建用戶時,會在用戶宿主目錄下生成一些初始配置文件,這些文件來自於賬號模板目錄/etc/skel/,基本上是隱藏文件。這個目錄裏面所有的文件在每次創建用戶時都會拷貝一份到用戶的宿主目錄。
~/.bash_profile:用戶登錄時執行
~/.bashrc:用戶打開shell時執行
~/.bash_logout:用戶註銷時執行
~/.vimrc:用戶打開vim編輯器時執行,默認沒有創建
與上述對應的全局配置文件,針對所有用戶生效
/etc/profile:對應 ~/.bash_profile
/etc/bashrc:對應 ~/.bashrc
/etc/vimrc:對應 ~/.vimrc
組賬號文件
/etc/group保存用戶賬號信息,分爲4個字段
第1個字段:組名
第2個字段:組密碼佔位符x
第3個字段:組的GID
第4個字段:組成員(只顯示附加組成員)
/etc/gshadow保存組賬號密碼(現已無用處)
創建組
groupadd
-g:指定組的GID
例:groupadd-g500caiwu
修改組信息
gpasswd
-n:修改組名
-g:修改組的GID
-a:向組中添加用戶
-d:刪除組中成員
-M:定義組中成員
刪除組
groupdel
查詢賬號信息
id --查詢用戶身份標示
groups --查詢用戶所屬組
(上面兩項默認項默認查看當前用戶,可以在後面跟用戶名,查看指定用戶的信息)
finger --查詢用戶賬號的登錄屬性
w、who --查詢當前主機所有登錄的用戶
whoami --查詢當前用戶登錄的用戶
切換用戶
su
格式:su - tom(“-”表示使用目標用戶環境)
root用戶切換普通用戶時,不需要輸入密碼,普通用戶切換時需要輸入密碼,省略後面的用戶名時,默認切換到root用戶
-c:臨時切換,當臨時切換爲另一用戶執行一條命令時使用
例:su - -c 'ifconfig' root
文件及目錄權限
使用ls命令加-l選項查看目錄和文件時,會以長格式顯示文件和目錄的屬性,如下
其中文件類型及權限又分十個字段
類型:d(目錄)、b(塊設備文件)、c(字符設備文件)、-(普文件)、字母 l(鏈接文件)
u權限:文件屬主的權限
g權限:文件屬組的權限
o權限:其它權限
權限的格式固定爲:rwx
r、w、x對應的權限及數字表示
r | w | x | - |
4 | 2 | 1 | 0 |
讀取權限 | 寫入權限 | 執行權限 | 無權限 |
修改權限
chmod
u、g、o:分別代表屬主、屬組和其它
a:代表所有,例a+rw等同於ugo+rw
+:加入對應權限
-:刪除對應權限
=:定義u、g、o對應的權限,例如 o=rwx
(爲ugo同時設權限時,用逗號相隔)
例:chmod u=rx,go+r a.txt
爲目錄設置權時,可以使用-R選項遞歸式修改
數字方式修改
每組權限分別爲對應數字之和,組成了一個3位的8進制的數來表示3種權限
--x | -w- | -wx | r-- | r-x | rw- | rwx |
1 | 2 | 3 | 4 | 5 | 6 | 7 |
例:chmod 777 a.txt
等同於:chmod a=rwx a.txt
修改屬主和屬組
chown
-R:遞歸式修改目錄
root: root用戶
:root:root組
root:root:root用戶和root組
例:chown root:root a.txt
chgrp--修改屬組
-R :遞歸修改
例:chgrp root a.txt(等同於 chown:roota.txt)
默認權限
umask屬性--用來確定新建文件和目錄的默認權限
直接執行umask可以查看umask屬性,-S選項表示以文字方式來表示umask由4位數組成,第1位表示特殊權限,一般不用管,後面的3位分別代表ugo的umask屬性
使用滿權限減去umask得出默認權限,文件和目錄的滿權限分別是666和777;默認root用戶的umask屬性爲022,普通用戶的umask爲002
默認情況下的默認權限
文件 | 目錄 | |
root用戶 | 666-022=644 | 777-022=755 |
普通用戶 | 666-002=664 | 777-002=775 |
修改umask屬性
umask後面直接跟屬性值
例:umask 022
爲了安全一般把root用戶的umask屬性改爲077
特殊權限
suid | 執行文件時以文件所屬用戶身份執行 |
sgid | 在該目錄下新建文件和目錄繼承該目錄的屬組 |
sticky | 對目錄擁有寫權限的用戶無法刪其他用戶的文件 |
設置特殊權限
suid | chmodu+sa.txt |
sgid | chmodg+sa.txt |
sticky | chmodo+ta.txt |
通過數字設置
suid | sgid | sticky |
4 | 2 | 1 |
例:chmod 4755 a.txt
ACL訪問控制列表(分區要支持)
實現設置某個文件針對不同用戶的權限
默認安裝系統時創建的分區都支持ACl
tune2fs -l /dev/sdb1--查看分區是否支持
tune2fs -o acl /dev/sdb1--使分區支持acl
設置acl規則
setfacl [選項] u[g]:用戶或組名:權限 文件/目錄名
u和g:指定爲用戶還是組設
-m:設置權限
-x:刪除指定權限
-b:刪除所有權限
-d:設置默認權限,只能爲目錄設,設置之後,在此目錄下新建的文件/目錄會繼承此目錄的權限(設置時需結合-m選項,且-m選項需在-d選項之後)
例:setfacl -d -m u:root:rwx /root
查看acl規則
getfacl 目錄/文件名
也可以在掛載時添加acl支持,只對當前生效
mount -o acl /dev/sdb1 /mnt
注:如果ACL規則中用戶(組)被刪除,會保留該用戶(組)的UID (GID)