用户管理
一、 用户的概念及分类
用户是系统对进程进行权限管控的依附,系统所执行的动作,无论是人的登录、指令,还是一些自动执行的操作;都是依赖于某一用户身份进行的,而用户身份则决定了这个操作在系统上能达到的权限。
1.1 用户的分类
系统账号举例说明:
Linux上,很多时候使用apache提供web服务,当这个服务启动和运行时,也是要依赖于用户,以便于系统进行权限控制。但它所使用的用户身份,通常不是我们所说的普通用户
(你创建的登录账号),而是系统用户
。
当apache初始启动是,使用root
账户权限,用来启动端口的监听等需要高等级权限的操作。当初步启动完成后,则会改为www-data
账户进行常态化运行,这个www-data
就是一个系统用户。当我们使用apache提供服务的web应用程序上传文件时,所上传的文件的创建者就是www-data
,与我们的登录账号不同。
- 下图中,第一个是通过一个运行在
apache
下的叫dvwa
web应用程序,上传的文件,它的创建者是www-data
- 第二个
ls
的文件,是登录账号主动创建的,也即kali
- 第三个
ls
则是通过sudo
权限创建的,所以创建者是root
不同Linux用户,都对应着一个ID
,系统就是靠着这个ID
去识别账号的,而不是你所看到的账号名称。这个ID
也有个规定
用户类型 | UID范围 |
---|---|
超级用户 | 0 |
系统用户 | 1 到 999 |
普通用户 | 1000 到 60000 |
账户的基本信息,存储在 /etc/passwd
文件中,我们修改一下UID
看一下效果
修改普通用户
的UID成一个系统中没有的UID
,带来的的结果如下:
- 由本普通用户创建的文件,查看其权限时,不再显示用户信息,只显示原来的数字ID
- 使用当前用户去做
sudo
操作时,会提示当前的账号在passwd
里不存在;是因为系统需要用1000
这个ID找账号,但是找不到。
1.2 用户和密码存储文件
上面刚才修改过的文件,/etc/passwd
,存储了账号的基本信息。里面的账号信息很多,我的登录账号是ubuntu
,我们只提取出其中的root
、www-data
和ubuntu
三个账号。
cat /etc/passwd | egrep '^root|^ubuntu|^www-data'
在这个文件中,密码是x
。
通过权限,可以看到,虽然/etc/passwd
只有root
账号有写入的权限,但是所有用户都可以读取的文件内容,而又存储了所有账号的信息,如果在这个文件中存储密码,则会有泄露的危险,虽然密码并不是明文存储,依然会面临破解的风险。
所以,密码是存储在另一个文件中的:/etc/shadow
可以看到,shadow
,只有root
组具有读的权限,其他账号没有任何权限。使用普通权限直接cat
文件,会提示权限不足,改用sudo
才可以读取到里面的数据。
关于账号到期时间
,也是一个关于天数的时间戳(1970-1-1);账号到期后,无论密码是否过期,都不能继续使用了。
二、 用户管理
2.1 添加账号
添加一个账号,并加入原来普通账号的组中
sudo useradd -g 1000 my_user_1
可以看到,shadow
中,密码项是!
,代表用户被锁定。设置密码后,就会解除锁定状态。
sudo passwd my_user_1
P
代表有密码,L
代表被锁定。
新建账号时,也可以直接指定密码
2.2 修改账号
修改账号,使用usermod
命令。
- 改名称
sudo usermod -l my_user my_user_3
- 锁定和解锁账号
sudo usermod -L my_user && sudo passwd -S my_user
- 删除账号
sudo userdel -r my_user