linux之用户管理

2022-11-14 17:14:03 浏览数 (1)

用户和用户组

用户:简称UID(Users ID),linux下的用户可以分为三类,分别是普通用户、系统用户以及根用户。

用户组:简称GID(Group ID)。

普通用户

指使用linux系统中的真实用户,这类用户可以使用用户名和密码来登陆系统。普通用户只能在其家目录中操作,其用户的UID一般大于500。

根用户

根用户也就是root用户,ID是0,也称为超级用户。root用户对系统拥有绝对的控制权。其可以修改、删除任何文件,可以运行任何命令。

系统用户

系统用户是指运行系统必须有的用户,但不是指真实的使用者。例如需要运行MySQL数据库服务时,需要系统用户mysql来运行mysqld进程。系统用户ID的范围是1~499。

用户组

用户组跟用户类似,其每个用户均属于其一个用户组中。

查用户和用户组命令

用户查找用id命令来进行。

代码语言:javascript复制
swz@swz-ubuntu:~$ id
用户id=1000(swz) 组id=1000(swz) 组=1000(swz),4(adm),24(cdrom),27(sudo),30(dip),46(plugdev),122(lpadmin),133(lxd),134(sambashare)

用户组命令可以用groups来查找。

代码语言:javascript复制
swz@swz-ubuntu:~$ groups
swz adm cdrom sudo dip plugdev lpadmin lxd sambashare

用户名和用户密码配置文件

我们在登陆linux系统时,必须要输入用户和密码。而记录系统用户名和密码的两个重要文件为:/etc/passwd以及/etc/shadow。

代码语言:javascript复制
swz@swz-ubuntu:~$ cat /etc/passwd
root:x:0:0:root:/root:/bin/bash
daemon:x:1:1:daemon:/usr/sbin:/usr/sbin/nologin
bin:x:2:2:bin:/bin:/usr/sbin/nologin
sys:x:3:3:sys:/dev:/usr/sbin/nologin

上述配置文件都是使用6个冒号进行分隔的,隔开的七列字符串。其意义如下图。

列数

含义

说明

1

用户名

UID的字符串形式

2

密码

旧的系统,是加密的密码。新系统中,将密码放在/etc/shadow下,此时为x

3

UID

系统来区分不同用户的整数

4

GID

系统区分不同用户组的整数

5

说明栏

类似于注释

6

家目录

用户登录之后,其所处的目录就是家目录

7

登陆shell

用户登录时所用的shell

默认其他用户是不能查看密码的,只有根用户(root用户)才能查看密码。不过此密码是加密之后产生的,不是用户的登录密码。

代码语言:javascript复制
root@swz-ubuntu:/home/swz# cat /etc/shadow
root:$6$mGjGK2OhUsTtxXpE$HhuQ/FqGfHidpZVrN76jBywe8Hw3IV9NXUWaIIlpAoil99JEwlu9eODOYgMyPiMqe3pau9lmgbtZBo4Uao94Q1:19178:0:99999:7:::
daemon:*:18912:0:99999:7:::
bin:*:18912:0:99999:7:::
sys:*:18912:0:99999:7:::

例如上述

6

mGjGK2OhUsTtxXpE$HhuQ字符串就是其加密之后的密码。

/etc/shadow文件是由8个冒号分隔开的9列字符串,其意义如下图。

列数

含义

说明

1

用户名

是UID的字符串标记方式

2

密码

经过加密之后的密码

3

密码的最近修改时间

这个数字是从1970年以后修改日的天数

4

密码不可修改的天数

修改密码后,几天内不可以修改密码,如果是0,可以修改

5

密码重复修改的天数

考虑到密码使用一段时间后,可能会泄露。可以再设置一个修改时间,密码到期后系统会提醒用户修改密码。

6

密码失效前警告的天数

设定密码到期前几天开始提醒用户修改密码

7

密码失效宽限天数

如果密码到期,过了几天就会失效,无法登录到系统

8

账号失效日期

一般为空

9

保留字段

暂时没有使用

账号管理

账号管理涉及到账号的添加、删除、以及修改。

新增和删除账户

添加用户

useradd这个命令用来添加用户,使用方法,useradd 用户名。

具体的我就不演示了。其创建之后会创建根目录,一般是/home/用户名。

更改密码

用passwd更改密码,注意密码不能太简单。passwd后面不加用户名,默认修改当前用户的密码。一般用法为:passwd 用户名。

检查用户信息

常见命令一般有users、who、w。

users命令一般用来查看当前系统有哪些用户,默认在不同终端的登录同一个用户,系统会判定是两个用户。users查看的信息量比较少,可以使用who查看更多的信息。

代码语言:javascript复制
swz@swz-ubuntu:~$ users
swz
代码语言:javascript复制
swz@swz-ubuntu:~$ who
swz      pts/0        2022-07-09 09:05 (192.168.141.142)

明显使用who可以查看更多的信息,上述who中第二列是登录的终端,一般pts是远程登录的终端。后面是登录时间。

而w可以查看更多的信息,如下。

代码语言:javascript复制
swz@swz-ubuntu:~$ w
 09:53:21 up  1:07,  1 user,  load average: 0.01, 0.02, 0.00
USER     TTY      来自           LOGIN@   IDLE   JCPU   PCPU WHAT
swz      pts/0    192.168.141.142  09:05    1.00s  0.07s  0.00s w
调查用户

可以用finger查看登录用户的信息,加用户名可以看到登录用户的详细信息。

代码语言:javascript复制
swz@swz-ubuntu:~$ finger
Login     Name       Tty      Idle  Login Time   Office     Office Phone
swz       swz        pts/0          Jul  9 09:05 (192.168.141.142)
代码语言:javascript复制
swz@swz-ubuntu:~$ finger swz
Login: swz               Name: swz
Directory: /home/swz                 Shell: /bin/bash
On since Sat Jul  9 09:05 (CST) on pts/0 from 192.168.141.142
   5 seconds idle
No mail.
No Plan.
切换用户

可以使用su来切换用户,其目录会变,必须输入密码。

代码语言:javascript复制
swz@swz-ubuntu:~$ su root 
密码: 
root@swz-ubuntu:/home/swz# 

利用sudo,可以行使其他用户的权利,但不是真正切换到了用户。

代码语言:javascript复制
swz@swz-ubuntu:~$ sudo ls /root
snap
swz@swz-ubuntu:~$ pwd
/home/swz

0 人点赞