本文介紹了Linux中用戶的相關操作(用戶增、刪以及組增、刪等),附加了文件與目錄的許可權與許可權操作 ...
Linux入門之 用戶操作及許可權
在一個公司里,老闆與員工有上下級之分,員工與員工間也有上下級或同級之分。每個級別在公司的職責不同,許可權也不同。在Linux操作系統中也一樣,不同的用戶身份擁有著不同的功能與許可權。
Linux用戶的分類
超級管理員: UID為0 root用戶擁有至高無上的命令,root用戶不能改名
系統用戶:UID小於1000,用於管理服務,一般不允許登陸
普通用戶:UID大於或等於1000,許可權較小,允許登陸,只能使用bin下命令
1.用戶創建,刪除,修改
useradd命令
useradd - create a new user or update default new user information
-c, --comment 描述
-d, --home HOME_DIR 家目錄
-e, --expiredate EXPIRE_DATE 過期時間
-f, --inactive INACTIVE 是否啟用過期機制
-g, --gid GROUP 指定組ID號
-G, --groups GROUP1[,GROUP2,...[,GROUPN]]] 附加組
-m, --create-home 建立家目錄
-M, 不建立家目錄
Do not create the user′s home directory, even if the system wide
setting from /etc/login.defs (CREATE_HOME) is set to yes.
-N, --no-user-group 不指定用戶同名組
-r, --system 指定該帳號是系統帳號
-s, --shell SHELL 指定登錄shell
-u, --uid UID 指定用戶ID號
-U, --user-group 指定用戶創建用戶同名組
-o, --創建用戶是可以uid重覆
usermod命令
usermod - modify a user account
-a, --append
-L, --lock
-U, --unlock
-m, --move-home with -d
userdel命令
userdel - delete a user account and related files
-f, --force
-r, --remove 刪除主目錄及郵箱
change命令
chage
-h, --help display this help message and exit
-m, 密碼可更改的最小天數。為零時代表任何時候都可以更改密碼。
-M, 密碼保持有效的最大天數。
-W, 用戶密碼到期前,提前收到警告信息的天數。
-E, 帳號到期的日期。過了這天,此帳號將不可用。
-d, 上一次更改的日期 如果設置為0 用戶下次登錄必須改密碼
-i, 停滯時期。如果一個密碼已過期這些天,那麼此帳號將不可用
-l, 例出當前的設置。由非特權用戶來確定他們的密碼或帳號何時過期。
who命令
who命令將列出所有正在使用系統的用戶、所用終端名和註冊到系統的時間。而who am i 命令將列出使用該命令的當前用戶的相關信息。例如:
[root@localhost ~]# who
root :0 2019-10-10 07:59 (:0)
root pts/0 2019-10-10 07:59 (:0)
root pts/1 2019-10-10 07:59 (:0)
[root@localhost ~]# who am i
root pts/1 2019-10-10 07:59 (:0)
2.密碼設置及密碼文件
passwd命令
passwd - set user password
-l, lock
-u, unlock
-d, delete a passwd for an account
-S, This will output a short information about the status of the password for a given account.
--stdin,
echo linux |passwd --stdin vfast 1 > 0
密碼文件
/etc/passwd
User account information.
[用戶名]:[密碼]:[UID]:[GID]:[身份描述]:[主目錄]:[登錄shell]
/etc/shadow
Secure user account information.
用戶名:這是用戶登錄系統時使用的用戶名,它在系統中是惟一的
口令:此欄位存放加密的口令
最後一次修改的時間:標識從某一時刻起到用戶最後一次修改口令的天數
最小時間間隔:兩次修改口令之間的最小天數
最大時間間隔:口令保持有效的最多天數,即多少天後必須修改口令
警告時間:從系統開始警告到口令正式失效的天數
不活動時間:口令過期多少天後,該賬號被禁用
失效時間:指示口令失效的絕對天數(從1970年1月1日開始計算)
標誌:未使用
shadow文件
目前,大多數UNIX/Linux系統中,利用/etc/shadow文件存放用戶賬戶的加密密碼信息和密碼的有效期信息。
user01:!!:18173:0:99999:7:::
Linux系統的shadow文件中,為每個用戶提供一條記錄,各個欄位用“:”隔開,這9個欄位按先後順序分別是
註冊名:密文密碼:上次更改密碼時間距1970年1月1日的天數:密碼更改後不可以更改的天數:密碼更改後必須再次更改的天數(即密碼的有效期):密碼失效前警告用戶的天數:密碼失效後距離賬戶被查封的天數:賬戶被查封時間距1970年1月的天數;保留欄位
3.組的管理
groupadd
groupadd - create a new group
命令語法
groupadd [選項] 組名
命令選項
-g, --gid GID 指定GID
-r, --system 創建一個系統組
-o, --non-unique 此選項允許添加一個使用非唯一 GID 的組
註意:組名最長為 32 個字元
groupmod命令
groupmod - modify a group definition on the system
命令語法
groupmod [選項] 組名
命令選項
-g, --gid GID
-n, --new-name NEW_GROUP 給組改名
-o, --non-unique
例子
1、將組名為test3的名字改為baism
groupmod test3 -n baism
groupdel命令
groupdel - delete a group
4.組密碼及組配置文件
gpasswd命令
gpasswd - administer /etc/group and /etc/gshadow
-a, --add USER add USER to GROUP
-d, --delete USER remove USER from GROUP
-r, --remove-password remove the GROUP's password
-R, --restrict restrict access to GROUP to its members 限制用戶登錄該組,除了組成員。
-M, --members USER,... set the list of members of GROUP
-A, --administrators ADMIN,...
set the list of administrators for GROUP
案例:
設置組root密碼 #gpasswd root
用戶組身份切換為root $newgrp root
組管理員設置 #gpasswd test -A user3
限制陌生用戶切換到組 #gpasswd -R test
指定組的成員列表 # gpasswd test -M user3,user2
配置文件
/etc/group
Group account information.
[組名]:[密碼域]:[GID]:[組員列表]
/etc/gshadow
Secure group account information.
5.相關文件
/etc/passwd
用戶賬戶信息。
/etc/shadow
安全用戶賬戶信息。
/etc/group
組賬戶信息。
/etc/gshadow
安全組賬戶信息。
/etc/default/useradd
賬戶創建的預設值。
/etc/skel/
包含預設文件的目錄。
/etc/login.defs
Shadow 密碼套件配置。
6.身份切換
su 命令--用戶身份的切換
su [options...] [-] [user [args...]]
如:
su - root
su user01
在大多的linux的版本中,都可以使用"su"或者"su -",但是"su"和"su -"有何差別:
"su"只是切換了root身份,但Shell環境仍然是普通用戶的Shell;而"su -"連用戶和Shell環境一起切換成root身份了。只有切換了Shell環境才不會出現PATH環境變數錯誤。"su"切換成root用戶以後,"pwd"一下,發現工作目錄仍然是普通用戶的工作目錄;而用"su -"命令切換以後,工作目錄變成root的工作目錄了。用"echo $PATH"命令看一下"su"和"su -"以後的環境變數有何不同。以此類推,要從當前用戶切換到其它用戶也一樣,應該使用"su -"命令。
當一個用戶同時屬於多個組,如何切換組身份 ?
newgrp 命令
newgrp指令類似login指令,它是以相同的帳號,另一個群組名稱,再次登入系統。欲使用newgrp指令切換群組,您必須是該群組的用戶,若不指定群組名稱,則newgrp指令會登入該用戶名稱的預設群組。
附加知識:文件與文件夾許可權
Linux 基本許可權
linux基本許可權
使用ls -l filename 命令查看文件或文件夾詳細許可權
ls -l
-rw-r--rw- 1 root root 22 Jan 6 15:42 abc
- --- --- ---
第1個 - 文件類型
第2-4個 - 文件所有者的許可權 root rw- r 讀 w 寫 x 執行
第5-7個 - 文件所屬的組中的成員對其許可權 root r--
第8-10個 - 其他人 rw-
22 文件或文件夾的大小
Jan 6 15:42 創建日期
abc 文件名
chmod命令
chmod - 改變文件的訪問許可權
命令語法
chmod [options] mode file...
命令選項
-R 遞歸設置許可權,針對目錄有效
mode 誰給什麼許可權
u(所有者) g(所屬組) o(其他人) a(所有人)
+ - =
許可權 r 讀 w 寫 x 執行
數字許可權
r 讀 4
w 寫 2
x 執行 1
chmod 760 abc
chown命令
chown 修改文件或文件夾所有者命令
命令語法
chown [options] user [:group] file...
命令選項
-R, 遞歸設置,針對文件夾
chown 新所有者 文件名
chown 新的所有者.新的所屬組 文件名
-R, 遞歸修改
chgrp命令
chgrp 改變所屬的組
命令語法
chgrp [選項] 組文件...
命令選項
-R, 遞歸設置許可權,針對目錄有效
chgrp 新所有組 文件名
chown .新的所屬組 文件名
Linux特殊許可權
linux特殊許可權 7 777
suid 4 當一個二進位文件擁有SUID許可權後,當其他用戶執行該二進位文件的時候,該二進位文件就會以他所有者的許可權去執行
sgid 2
要求文件夾下的新建的子文件夾或者子文件繼承父文件夾的屬組
sticky bit 1
如果給文件夾 賦予粘連位 則該文件夾下的文件或文件夾只能由所有者及ROOT刪除
Linux隱藏許可權
chattr命令
chattr [+-=][ASacdistu] 文件或文件名
命令選項:
+ : 增加某個特殊參數,其他原本存在的參數不動。
- : 刪除某個特殊參數,其他原本存在的參數不動。
= : 設置一定,且僅有後面接的參數
A : 當設置了A屬性時,這個文件(或目錄)的存取時間atime(access)將不可被修改,可避免例如手提電腦有磁碟I/O錯誤的情況發生。
S : 這個功能有點類似sync。就是將數據同步寫入磁碟中。可以有效地避免數據流失。
a : 設置a之後,這個文件將只能增加數據,而不能刪除,只有root才能設置這個屬性。
c : 這個屬性設置之後,將會自動將此文件“壓縮”,在讀取的時候將會自動解壓縮,但在存儲的時候,將會先進行壓縮後再存儲(對於大文件有用)。
d : 當執行dump(備份)程式的時候,設置d屬性將可使該文件(或目錄)具有轉儲功效。
i : i的作用很大。它可以讓一個文件“不能被刪除、改名、設置連接,也無法寫入或新增數據”。對於系統安全性有相當大的幫助。
j : 當使用ext3文件系統格式時,設置j屬性將會使文件在寫入時先記錄在journal中。但是,當文件系統設置參數為data=journalled時,由於已經設置日誌了,所以這個屬性無效。
s : 當文件設置了s參數時,它將會從這個硬碟空間完全刪除。
u : 與s相反,當使用u來設置文件時,則數據內容其實還存在磁碟中,可以用來還原刪除.
註意:這個屬性設置上,比較常見的是a與i的設置值,而且很多設置值必須要root才能設置。
lsattr命令
lsattr 文件或文件名
查看文件或文件夾的隱藏許可權
Linux file ACL 許可權
setfacl命令
setfacl - set file access control lists
命令語法
setfacl [選項] file...
命令選項
-m, 修改acl
-x, 刪除acl
-b, 刪除所有acl
-k, 刪除預設的acl
-R, 遞歸
getfacl命令
getfacl 查看文件許可權
命令語法
getfacl file...