Linux操作系統中用戶有著不同功能的身份。
Linux系統中用戶的分類
1)超級用戶: root uid=0
2)系統用戶:不需要登錄系統,服務於應用程序,維護系統的運行,如 bin,nobody uid=1-499
3)普通用戶:可以登錄的用戶 uid>=500
UID:用戶標識
系統文件:
/etc/passwd:用戶信息
/etc/shadow:用戶密碼相關的信息
對用戶的操作:新增、刪除、修改、查看、設置密碼
1、查看用戶 id
# id //默認查看的是當前用戶的信息
uid=0(root) gid=0(root) groups=0(root)
# whoami //查看當前用戶是誰
root
# id lp //查看指定用戶的信息
uid=4(lp) gid=7(lp) groups=7(lp)
uid:用戶標識
gid:組標識,用戶的主組
groups:用戶所屬組信息
2、添加用戶 useradd
注意:添加用戶的操作只有 root 能操作
# useradd niulang
反例:
# su - niulang // switch user切換用戶
$ useradd zhinv
-bash: /usr/sbin/useradd: Permission denied 權限被拒絕,普通用戶是無法添加用戶的
$ exit
logout
# id niulang
uid=500(niulang) gid=500(niulang) groups=500(niulang)
添加用戶時,如果不指定用戶的組,那麼默認會創建一個與用戶名同名的組作為用戶的主要組。
1)添加用戶時指定選項 man useradd
-c:註釋性的描述信息
-d:指定用戶的家目錄
默認情況下:
root 的家目錄是 /root
普通用戶的家目錄是 /home
-g:指定用戶的主要組,前提是組必須存在
-G:指定用戶的附加組(附屬組),前提是組必須存在
-s:指定用戶的登錄 shell
-u:指定用戶的uid
# head -1 /etc/passwd
root:x:0:0:root:/root:/bin/bash
用戶名:密碼位:uid:gid:註釋性描述:用戶的家目錄:用戶的登錄shell
-u
-g
-c
-d
-s
# echo $SHELL //查看當前 shell,echo 可以用來打印變量
/bin/bash
要求區分的兩種 shell
/bin/bash:可登錄 shell,如果用戶的 shell 是這個,那麼該用戶可以登錄到系統中
/sbin/nologin:非登錄shell,如果用戶的 shell 是這個,那麼該用戶是不允許登錄到系統的
格式:useradd 選項 選項的參數 ... 用戶名
例子:
# useradd -u 600 -s /sbin/nologin zhinv
# id zhinv
uid=600(zhinv) gid=600(zhinv) groups=600(zhinv)
注意:添加用戶時,實際上執行了以下操作
1、修改了 /etc/paasswd 文件
2、修改了 /etc/shadow 文件
3、修改了 /etc/group 文件
4、修改了 /etc/gshadow 文件
5、創建了家目錄 /home
6、創建了郵箱帳號 /var/spool/mail/
# tail -1 /etc/passwd
zhinv:x:600:600::/home/zhinv:/sbin/nologin
# useradd -g 502 wangmu 錯的
useradd: group '502' does not exist
# useradd -g zhinv wangmu
# id wangmu
uid=601(wangmu) gid=600(zhinv) groups=600(zhinv)
同時添加多個用戶時,命令中間可以使用分號隔開
3、刪除用戶 userdel
# userdel wangmu //刪除的時候不會刪除用戶的家目錄和郵箱
# useradd wangmu //能添加,但是會有提示消息
useradd: warning: the home directory already exists.
Not copying any file from skel directory into it.
Creating mailbox file: File exists
-r: //可以乾淨的刪除一個用戶
# userdel -r wangmu
# cd /var/spool/mail/ //郵箱所在位置
4、給用戶設置密碼
passwd
超級用戶:既可以修改自己的密碼,又可以修改別人的密碼,無需提供當前密碼
普通用戶:只能修改自己的密碼,要求嚴格,並且需要提供當前密碼,而且密碼不能過於簡單
# passwd //默認修改當前用戶的密碼
Changing password for user root.
New password:
BAD PASSWORD: it is based on a dictionary word
BAD PASSWORD: is too simple
Retype new password:
passwd: all authentication tokens updated successfully.
# passwd niulang //修改指定用戶的密碼
Changing password for user niulang.
New password:
BAD PASSWORD: it is too short
BAD PASSWORD: is too simple
Retype new password:
passwd: all authentication tokens updated successfully.
反例:
# su - niulang
$ passwd zhinv
passwd: Only root can specify a user name.
普通用戶修改自己的密碼,需要當前密碼,而且長度最少6位,而且不能是字典單詞
$ passwd
Changing password for user niulang.
Changing password for niulang.
(current) UNIX password:
New password:
BAD PASSWORD: it is based on a dictionary word
New password:
Retype new password:
passwd: all authentication tokens updated successfully.
/etc/shadow:存放用戶密碼信息的文件
# head -1 /etc/shadow
root:$6$9AOmQbxm$3X1qbP0srKNql7jCXpmwhyNxGTHmIbT65zF.:16276:0:99999:7:::
用戶名:加密後的密碼:....
$6$:加密算法是sha512
$1$:加密算法是md5
-l 鎖定密碼 (實際是給密碼前加 !!)
-u 解鎖密碼 (取消密碼前的 !!)
5、修改用戶:不常用
usermod: //modify:修改
-G:修改用戶的附屬組,不管用戶原來的附屬組如何,直接覆蓋
-g:修改用戶的主要組
-a:一般和-G聯合使用,追加附屬組
-u:修改用戶的uid
-d:修改用戶的家目錄
-s:修改用戶的shell
-L : 鎖定賬戶 (實際是給賬戶密碼前加 !)
-U: 解鎖賬戶 (取消賬戶密碼前的 !)
# useradd -G niulang,zhinv sha
# id sha
uid=601(sha) gid=601(sha) groups=601(sha),500(niulang),600(zhinv)
# useradd sha2
# usermod -G sha2 sha
# id sha
uid=601(sha) gid=601(sha) groups=601(sha),602(sha2)
# usermod -a -G niulang sha
# id sha
uid=601(sha) gid=601(sha) groups=601(sha),500(niulang),602(sha2)
謝謝您的閱讀!
閱讀更多 飛哥有料 的文章