思考
使用useradd
在Linux下面創建一個用戶,默認情況下,會自動創建一個同名組,并且加入其中,那么是先創建用戶呢?還是先創建組呢?
很簡單,我們實踐一下不就知道了,如下所示,可以看到我們執行了useradd后,日志中先創建了一個組,其次才創建用戶,并且加入組。
[root@localhost ~]# useradd luobozi
[root@localhost ~]# cat /var/log/secure
Mar 7 10:50:56 localhost useradd[96767]: new group: name=luobozi, GID=1000
Mar 7 10:50:56 localhost useradd[96767]: new user: name=luobozi, UID=1000, GID=1000, home=/home/luobozi, shell=/bin/bash
如何手工創建一個用戶?
手工創建一個kotonghitoli
用戶,組bondband
,指定uid=3000,gid=3005,home=/home/gdyg,注釋=“jp girl”,shell=/bin/bash
echo "kotonghitoli:x:3000:3005:jp girl:/home/gdyg:/bin/bash" >> /etc/passwd
echo "kotonghitoli:!!:20154:0:99999:7:::" >> /etc/shadow
echo "bondband:x:3005:" >> /etc/group
mkdir /home/gdyg
cp -v /etc/skel/.bash* /home/gdyg
touch /var/spool/mail/kotonghitolichown kotonghitoli:bondband -R /home/gdyg
chown kotonghitoli:mail /var/spool/mail/kotonghitoli
chmod 700 /home/gdyg/
chmod 600 /var/spool/mail/kotonghitoli[root@localhost home]# su - kotonghitoli
Last login: Fri Mar 7 14:53:06 CST 2025 on pts/0
[kotonghitoli@localhost ~]$ id
uid=3000(kotonghitoli) gid=3005(bondband) groups=3005(bondband)
用戶(user)
用戶的分類
- 超級用戶:root uid=0
- 系統用戶:一般是啟動服務的用戶 uid=201-999
- 普通用戶:普通用戶 uid=1000-60000
[root@localhost ~]# cat /etc/login.defs |grep -A 10 UID_MIN
UID_MIN 1000
UID_MAX 60000
# System accounts
SYS_UID_MIN 201
SYS_UID_MAX 999#
# Min/max values for automatic gid selection in groupadd
#
GID_MIN 1000
GID_MAX 60000
# System accounts
SYS_GID_MIN 201
SYS_GID_MAX 999
命令介紹
useradd
id
w
userdel
passwd
chpasswd
su
usermod
last
lastlog
lastb
組(group)
命令
groupadd
groupdel
newgrp
groupmod
操作系統是如何區分不同用戶的?
首先我們知道每個文件都有其對應的所有者、所屬組、其它用戶
,這三個身份所能操作的權限rwx
如果我是luobozi用戶,我使用 cat 命令去查看/var/log/secure
文件,那么在操作系統底層發生了什么呢?
進程有pcb(進程控制塊)+程序代碼+產生的數據
進程控制塊:pcb process control block 里面有進程信息,例如:pid、uid、gid 、狀態、進程在內存里的地址等信息
用戶和組的相關文件
和用戶相關的文件
/etc/passwd 存放用戶信息
[root@localhost ~]# cat /etc/passwd
root:x:0:0:root:/root:/bin/bash
bin:x:1:1:bin:/bin:/sbin/nologin
字段1:用戶名
這是用戶的登錄名。例如,root 和 bin 都是用戶名。
字段2:密碼
通常是一個 x,表示密碼存儲在 /etc/shadow 文件中。如果這里是一個 * 或空,表示該用戶不能登錄。
字段3:用戶ID (UID)
這是用戶的唯一標識符。0 是 root 用戶的 UID,其他用戶的 UID 通常從 1000 開始。
字段4:組ID (GID)
這是用戶所屬的主組的唯一標識符。每個用戶至少屬于一個組。
字段5:用戶信息
這是用戶的描述信息,通常是用戶的全名或其他注釋信息。可以為空。
字段6:家目錄
這是用戶登錄后的默認工作目錄。例如,root 用戶的家目錄是 /root。
字段7:登錄Shell
這是用戶登錄時使用的默認 Shell。例如,/bin/bash 是常見的交互式 Shell,而 /sbin/nologin 表示該用戶不能登錄系統。
存放密碼信息
/etc/shadow
和組相關的文件
/etc/group
用戶家目錄
/home/
郵箱目錄
/var/spool/mail/
定義了創建用戶和組時的一些設置
/etc/login.defs