UID和GID
Linux系统采用一个32位的整数记录和区分不同的用户,这意味着系统可以记录多达40亿个不同的用户。这个用来区分不同用户的数字被称为User ID,简称UID。系统会自动记录“用户名”和UID的对应关系。Linux系统中的用户分为3类,即普通用户、根用户、系统用户。
- 普通用户是指所有使用Linux系统的真实用户,这类用户可以使用用户名及密码登录系统。
- 根用户也就是root用户,它的ID是0,也被称为超级用户,root账户拥有对系统的完全控制权:可以修改、删除任何文件,运行任何命令。
- 系统用户是指系统运行时必须有的用户,但并不是指真实的使用者。
ls-l查看文件时,第三列和第四列显示的是这个文件的所有者是用户root,所有组是root组,如果加上了-n参数,第三列和第四列则是用UID和GID来显示的。
ronie@ronie-virtual-machine:~/Desktop$ touch t1
ronie@ronie-virtual-machine:~/Desktop$ sudo su
root@ronie-virtual-machine:/home/ronie/Desktop# touch t2
root@ronie-virtual-machine:/home/ronie/Desktop# exit
exit
ronie@ronie-virtual-machine:~/Desktop$ ls -al
total 16
drwxr-xr-x 3 ronie ronie 4096 10月 10 13:09 .
drwxr-x--- 14 ronie ronie 4096 10月 9 17:20 ..
drwxrwxr-x 2 ronie ronie 4096 10月 7 23:00 docker
-rw-rw-r-- 1 ronie ronie 368 10月 7 18:38 docker-compose.yml
-rw-rw-r-- 1 ronie ronie 0 10月 10 13:08 t1
-rw-r--r-- 1 root root 0 10月 10 13:09 t2
ronie@ronie-virtual-machine:~/Desktop$ ls -anl
total 16
drwxr-xr-x 3 1000 1000 4096 10月 10 13:09 .
drwxr-x--- 14 1000 1000 4096 10月 9 17:20 ..
drwxrwxr-x 2 1000 1000 4096 10月 7 23:00 docker
-rw-rw-r-- 1 1000 1000 368 10月 7 18:38 docker-compose.yml
-rw-rw-r-- 1 1000 1000 0 10月 10 13:08 t1
-rw-r--r-- 1 0 0 0 10月 10 13:09 t2
要确认自己的UID,可以使用id命令来获得
ronie@ronie-virtual-machine:~/Desktop$ id
uid=1000(ronie) gid=1000(ronie) groups=1000(ronie),4(adm),24(cdrom),27(sudo),30(dip),46(plugdev),122(lpadmin),134(lxd),135(sambashare)
ronie@ronie-virtual-machine:~/Desktop$ sudo su
[sudo] password for ronie:
root@ronie-virtual-machine:/home/ronie/Desktop# id
uid=0(root) gid=0(root) groups=0(root)
要确认自己所属的用户组,可以使用groups命令来获得
ronie@ronie-virtual-machine:~/Desktop$ groups
ronie adm cdrom sudo dip plugdev lpadmin lxd sambashare
ronie@ronie-virtual-machine:~/Desktop$ sudo su
[sudo] password for ronie:
root@ronie-virtual-machine:/home/ronie/Desktop# groups
root
root@ronie-virtual-machine:/home/ronie/Desktop# exit
exit
ronie@ronie-virtual-machine:~/Desktop$
/etc/passwd和/etc/shadow:记录用户名、密码最重要的两个文件/etc/passwd和/etc/shadow。
/etc/passwd
:ronie@ronie-virtual-machine:~/Desktop$ cat /etc/passwd root:x:0:0:root:/root:/bin/bash ronie:x:1000:1000:ronie,,,:/home/ronie:/bin/bash mysql:x:128:136:MySQL Server,,,:/nonexistent:/bin/false
每行都是使用6个分隔号“:”隔开的7列字符串。
- 用户名:UID字符串标记方式,方便阅读
- 密码:在旧的Unix系统中,此字段放置加密后的密码,现在密码放在/etc/shadow中,现在此处用x代替。
- UID:区分不同用户的整数。
- GID:区分不同用户组的整数。
- 说明栏:相当于注释,现在不再使用。
- 家目录:用户登录后所处的目录。
- shell:用户登录后,所使用的shell。
/etc/shadow
:root@ronie-virtual-machine:/home/ronie/Desktop# cat /etc/shadow root:!:19272:0:99999:7::: ronie:$y$j9T$Pgcst9EyqxRRk.jN8INhk.$pEH0ZZqZdDZvJ8Nbcm.bKUhTM1VzVVF4M8edw1kZzP3:19272:0:99999:7:::
- 用户名:UID字符串标记方式。
- 密码:加密后的密码。
- 密码最近的修改日:从1970年1月1日至密码修改日的天数。
- 密码不可修改的天数:密码修改后,几天不能修改密码。
- 密码重新修改的天数:设置修改时间,到时间后提醒用户修改。
- 密码失效前的警告天数:密码到期前几天提醒用户修改密码。
- 密码失效的宽限天数:密码到期,过几天会失效。
- 账号失效日期。
- 保留字段。
新增和删除用户
新增用户:useradd,useradd命令用于添加新的用户。在执行的过程中:系统将用户信息记录在/etc/passwd中,一般会在/etc/passwd和/etc/shadow末尾追加一条记录,同时会分配给该用户一个UID。然后为该用户自动创建家目录,家目录以创建的用户名为目录名,创建的路径在/home目录中,再然后,复制/etc/skel下所有的文件至/home/kelly。
root@ronie-virtual-machine:/home/ronie/Desktop# useradd kelly root@ronie-virtual-machine:/home/ronie/Desktop# tail -n 3 /etc/passwd ronie:x:1000:1000:ronie,,,:/home/ronie:/bin/bash mysql:x:128:136:MySQL Server,,,:/nonexistent:/bin/false kelly:x:1001:1001::/home/kelly:/bin/sh root@ronie-virtual-machine:/home/ronie/Desktop# tail -n 3 /etc/shadow ronie:$y$j9T$Pgcst9EyqxRRk.jN8INhk.$pEH0ZZqZdDZvJ8Nbcm.bKUhTM1VzVVF4M8edw1kZzP3:19272:0:99999:7::: mysql:!:19272:0:99999:7::: kelly:!:19275:0:99999:7::: root@ronie-virtual-machine:/home/ronie/Desktop#
使用-g参数指定该用户的用户组,-d参数指定该用户的家目录
root@ronie-virtual-machine:/home/ronie/Desktop# useradd jack -g ronie -d /home/jack_home root@ronie-virtual-machine:/home/ronie/Desktop# tail -n 3 /etc/passwd mysql:x:128:136:MySQL Server,,,:/nonexistent:/bin/false kelly:x:1001:1001::/home/kelly:/bin/sh jack:x:1002:1000::/home/jack_home:/bin/sh root@ronie-virtual-machine:/home/ronie/Desktop# tail -n 3 /etc/shadow mysql:!:19272:0:99999:7::: kelly:!:19275:0:99999:7::: jack:!:19275:0:99999:7::: root@ronie-virtual-machine:/home/ronie/Desktop#
修改密码:passwd,创建用户后,用户还没有登录系统的权限,在不设置密码的情况下,在/etc/shadow中该用户记录中以冒号分隔的第二列将显示为两个感叹号“!!”,这说明不允许该用户登录系统。因此,需要同时设置用户的密码,设置命令的方式是passwd后接用户名。
root@ronie-virtual-machine:/home/ronie/Desktop# passwd kelly New password: BAD PASSWORD: The password is shorter than 8 characters Retype new password: passwd: password updated successfully
如果不输入密码而是直接按回车键两次,密码会设置失败,如果输入了太过简单的密码,系统将会显示“BAD PASSWORD: it is too simplistic/systematic”或“BAD PASSWORD: The password is shorter than 8 characters”。虽然系统会提示密码太过简单,但还是会接受其作为该用户的密码。普通用户也可以使用passwd来修改自己的密码,但是需要提供当前用户的密码,并且密码不能太过简单,因为系统会拒绝普通用户设置过于简单的密码。
ronie@ronie-virtual-machine:~/Desktop$ passwd Changing password for ronie. Current password: New password: BAD PASSWORD: The password is the same as the old one New password: BAD PASSWORD: The password is shorter than 8 characters New password: BAD PASSWORD: The password contains the user name in some form passwd: Have exhausted maximum number of retries for service passwd: password unchanged ronie@ronie-virtual-machine:~/Desktop$
修改用户:usermod,-d:创建新的家目录,-m:如果指定用户的家目录存在,就自动创建新目录,-L:冻结账户,-U:解锁账户。
root@ronie-virtual-machine:/home/ronie/Desktop# usermod -L kelly root@ronie-virtual-machine:/home/ronie/Desktop# tail -n 2 /etc/shadow kelly:!$y$j9T$6s1kd14hmnpd53Suu9DTK1$Gk.1cARug8136IiB2GdYfHLkCVDIFpp6XVjVWLg5dG4:19275:0:99999:7::: jack:!:19275:0:99999:7::: root@ronie-virtual-machine:/home/ronie/Desktop# usermod -U kelly root@ronie-virtual-machine:/home/ronie/Desktop# tail -n 2 /etc/shadow kelly:$y$j9T$6s1kd14hmnpd53Suu9DTK1$Gk.1cARug8136IiB2GdYfHLkCVDIFpp6XVjVWLg5dG4:19275:0:99999:7::: jack:!:19275:0:99999:7:::
删除用户:userdel,命令会将用户在/etc/passwd和/etc/shadow中的记录。
root@ronie-virtual-machine:/home/ronie/Desktop# userdel kelly root@ronie-virtual-machine:/home/ronie/Desktop# userdel jack root@ronie-virtual-machine:/home/ronie/Desktop# tail -n 2 /etc/shadow ronie:$y$j9T$Pgcst9EyqxRRk.jN8INhk.$pEH0ZZqZdDZvJ8Nbcm.bKUhTM1VzVVF4M8edw1kZzP3:19272:0:99999:7::: mysql:!:19272:0:99999:7::: root@ronie-virtual-machine:/home/ronie/Desktop# tail -n 2 /etc/passwd ronie:x:1000:1000:ronie,,,:/home/ronie:/bin/bash mysql:x:128:136:MySQL Server,,,:/nonexistent:/bin/false root@ronie-virtual-machine:/home/ronie/Desktop#
增加用户组:groupadd,删除用户组:groupdel
root@ronie-virtual-machine:/home/ronie/Desktop# tail -n 2 /etc/group docker:x:999: mysql:x:136: root@ronie-virtual-machine:/home/ronie/Desktop# addgroup mygroup Adding group `mygroup' (GID 1001) ... Done. root@ronie-virtual-machine:/home/ronie/Desktop# tail -n 2 /etc/group mysql:x:136: mygroup:x:1001: root@ronie-virtual-machine:/home/ronie/Desktop# delgroup mygroup Removing group `mygroup' ... Done. root@ronie-virtual-machine:/home/ronie/Desktop# tail -n 2 /etc/group docker:x:999: mysql:x:136: root@ronie-virtual-machine:/home/ronie/Desktop#
检查用户信息
查看用户:users,who,w
root@ronie-virtual-machine:/home/ronie/Desktop# users ronie ronie ronie root@ronie-virtual-machine:/home/ronie/Desktop# who ronie tty2 2022-10-10 10:24 (tty2) ronie pts/1 2022-10-10 15:18 ronie pts/3 2022-10-10 10:59 root@ronie-virtual-machine:/home/ronie/Desktop# w 15:43:15 up 5:18, 3 users, load average: 0.01, 0.06, 0.01 USER TTY FROM LOGIN@ IDLE JCPU PCPU WHAT ronie tty2 tty2 10:24 5:18m 0.08s 0.07s /usr/libexec/gnome-session-binary --session=ubuntu ronie pts/1 - 15:18 1.00s 0.04s 0.14s sudo su ronie pts/3 - 10:59 4:42m 0.01s 0.06s sudo mysql root@ronie-virtual-machine:/home/ronie/Desktop#
users命令可以查看当前系统有哪些用户。
who命令可以看出用户是通过哪个终端登录到系统中的。
w命令显示详细信息,w命令的第一行会显示当前时间,系统运行时间,已登录的用户数量和系统负载。
下面显示的信息分为8列- 第一列:登录用户的用户名。
- 第二列:用户登录终端。
- 第三列:如果用户从网络登录,则显示远程主机的主机名或IP地址。
- 第四列:用户登录时间。
- 第五列:用户闲置时间。
- 第六列:与终端相关的当前所有运行进程消耗的CPU时间总量。
- 第七列:当前WHAT列所对应的进程所消耗的CPU时间总量。
- 第八列:用户当前运行的进程。
调查用户:finger
finger命令在不加任何参数的情况下,会显示系统的登录用户,如果在finger后跟上某个用户名,则显示该用户更详细的信息。root@ronie-virtual-machine:/home/ronie/Desktop# finger Login Name Tty Idle Login Time Office Office Phone ronie ronie tty2 5:33 Oct 10 10:24 (tty2) ronie ronie pts/1 Oct 10 15:18 ronie ronie pts/3 4:57 Oct 10 10:59 root@ronie-virtual-machine:/home/ronie/Desktop# finger ronie Login: ronie Name: ronie Directory: /home/ronie Shell: /bin/bash On since Mon Oct 10 10:24 (CST) on tty2 from tty2 5 hours 33 minutes idle On since Mon Oct 10 15:18 (CST) on pts/1 5 seconds idle On since Mon Oct 10 10:59 (CST) on pts/3 4 hours 57 minutes idle No mail. No Plan. root@ronie-virtual-machine:/home/ronie/Desktop#
切换用户
切换成其他用户,su命令
ronie@ronie-virtual-machine:~/Desktop$ sudo su
[sudo] password for ronie:
root@ronie-virtual-machine:/home/ronie/Desktop# useradd kelly
root@ronie-virtual-machine:/home/ronie/Desktop# passwd kelly
New password:
BAD PASSWORD: The password is shorter than 8 characters
Retype new password:
passwd: password updated successfully
root@ronie-virtual-machine:/home/ronie/Desktop# su kelly
$ ls
docker docker-compose.yml
$ pwd
/home/ronie/Desktop
$ exit
root@ronie-virtual-machine:/home/ronie/Desktop# exit
exit
ronie@ronie-virtual-machine:~/Desktop$
Comments | NOTHING