Linux是一個多用戶、多任務的操作系統,具有很好的穩定性與安全性。文件的所有者、所屬組以及其他人可對文件進行的讀寫執行等操作,以及如何在Linux系統中添加、刪除、修改用戶賬戶信息,都離不開Linux中用戶身份與文件權限相關知識。
一、用戶身份與能力
Linux的設計初衷之一就是爲了滿足多個用戶同時操作的需求,因此Linux必須基本很好的安全性。
因此Linux系統中必須有一個root用戶(超級管理員)擁有最高的系統所有權,能夠管理系統的各項功能。
- 正是因爲root權限擁有整個系統中的最高權力 因此使用root權限進行操作如果執行了錯誤的命令,可能會直接毀掉整個系統。
- 在學習的過程中可以使用root權限進行學習,但是在真正工作和實踐的時候還是要區分用戶進行操作。
- Linux系統中的管理員就是root,其實說法不準確。用戶(root)是系統管理員,不是因爲它叫root而是因爲該用戶的身份碼(UID:User IDentification)的數值爲0。
說到多用戶與多任務(同時多個終端登錄操作系統並進行多任務操作),就不得不說一下linux操作系統和windows操作系統
windows | Linux | |
---|---|---|
是否多任務 | 是 | 是 |
是否多用戶 | 現在常用的Windows操作系統都是多用戶的操作系統: win7、win10;Windows XP的多用戶切換方式 |
是 |
在Linux中多個用戶同時登錄,cpu是根據不同用戶的優先級來分配CPU運算資源
1. useradd
useradd命令用於創建用戶,格式:useradd [options] username
- 使用useradd命令創建用戶,默認將用戶家目錄放在/home目錄中,默認使用的Shell解釋器爲/bin/bash
- 並且同時創建一個跟這個username同名的基本用戶組
參數 | 作用 |
---|---|
-d | 指定用戶的家目錄(默認爲/home/username) |
-e | 賬戶的到期時間,格式爲:YYYY-MM-DD |
-u | 指定賬戶的uid |
-g | 指定一個初始的用戶組(必須存在) |
-G | 指定一個或多個擴展用戶組 |
-N | 不創建和username同名的基本用戶組 |
-s | 指定該用戶默認的Shell解釋器 |
下面的一剛命令就是創建一個username爲testuser的用戶,該用戶的uid爲6666 指定路徑/home/testusername/、指定shell解釋器爲/sbin/nologin(被指定爲該解釋器的用戶無法登陸系統)
root@juzuo:/home useradd -d /home/testusername/ -u 6666 -s /sbin/nologin testuser
2. groupadd
groupadd命令用於創建用戶組, 格式:groupadd [options] groupname
- 用戶組的概念就是一組用戶,擁有相似會或者相同權限,或者相似作用。
- Linux中爲了更加高效的指派系統中各個用戶的權限,在工作中常常會把幾個用戶加入到用一個組裏,這樣可以方便針對同一類用戶統一安排權限。
這個命令用於創建一個用戶組,現在把剛剛創建的用戶testuser添加到這個用戶組
root@juzuodaliyu:/home groupadd test
root@juzuodaliyu:/home usermod -g test testuser
root@juzuodaliyu:/home id testuser
uid=6666(testuser) gid=6667(test) groups=6667(test)
這裏用到了命令usermod 意思是修改用戶屬性。具體用法和含義參照3
3. usermod
usermod命令用於修改用戶的屬性
格式usermod [options] 用戶名
- Linux系統中一切都是文件,因此在系統中創建用戶也就是修改配置文件的過程。
- 用戶的信息保存在 /etc/passwd文件,可以直接使用vim編輯器修改用戶屬性,也可以使用usermod修改用戶屬性
# 這條命令就是修改用戶testuser的用戶組屬性
root@juzuodaliyu:/home usermod -g test testuser
參數 | 作用 |
---|---|
-c | 填寫用戶的備註信息 |
-d -m | l兩個參數連用,可以重新指定用戶的家目錄並且自動把舊的數據轉移過去 |
-e | 賬戶的到期時間(同useradd) |
-g | 變更用戶所屬用戶組 |
-G | 變更擴展用戶組 |
-L | 鎖定用戶禁止其登錄 |
-U | 解鎖用戶,允許其登錄系統 |
-s | 變更默認終端 |
-u | 修改用戶的uid |
具體的用戶參照第2條,在自己的虛擬機或者是服務器上實驗吧。
4. passwd
- passwd命令用於修改用戶密碼(口令)、過期時間、認證信息等(這個“等”我一直沒有找到其他的用法,如果小夥伴有知道的請留言)
- 一般系統管理員用這個命令更多的是用來更改密碼,格式爲
passwd [-options] [username]
passwd username
# 然後根據提示修改密碼即可
參數 | 含義 |
---|---|
-l | 鎖定用戶,禁止登陸 |
-u | 解鎖用戶,允許登陸 |
– | 允許通過標準輸入修改用戶密碼,比如第一篇文章中用過的echo "newpassword" | passwd --stdin Username |
-d | 使該用戶可用密碼登錄系統 |
-e | 強制用戶在下次登錄時修改密碼 |
-S | 顯示用戶的密碼是否被鎖定,以及密碼鎖採用的加密算法名稱 |
5. userdel
- userdel命令用於刪除用戶。格式:
userdel [-options] Username
- 使用userdel刪除用戶的時候,用戶的家目錄是默認保存下來的,使用-r參數可以連帶一起刪除用戶的目錄
參數 | 作用 |
---|---|
-f | 強制刪除用戶 |
-r |
root@juzuodaliyun:/home userdel -r testuser
userdel: group testuser not removed because it is not the primary group of user testuser.
userdel: testuser mail spool (/var/mail/testuser) not found
userdel: /home/testusername/ not owned by testuser, not removing
# 查看是否刪除
root@juzuodaliyun:/home id testuser
id: ‘testuser’: no such user