Linux是一个多用户系统,但是对于一个多用户共存的系统中,当然不能够出现用户相互越权等一系列的安全问题,所以如何正确的管理账户成为了Linux系统中至关重要的一环。
在Linux下,与用户账户有着紧密联系的文件又如下的几个:
/etc/passwd #管理用户的UID、GID等重要用户信息
/etc/shadow #管理用户密码的等重要信息
/etc/group #管理用户组
/etc/gpasswd #管理用户组密码
1./etc/passwd
虽说这个文件的文件名写着passwd,但是里面并没有存放密码(早起存放,后来为了安全将密码分离出来)
打开该文件,里面的内容大致如下:
root:x:0:0:root:/root:/bin/bash
bin:x:1:1:bin:/bin:/sbin/nologin
daemon:x:2:2:daemon:/sbin:/sbin/nologin
adm:x:3:4:adm:/var/adm:/sbin/nologin
...
上面的每一行代表了存在你系统中的一个用户。按照“:”来进行字段的划分,可以划分为7个字段,从左到右依次如下意义:
当然,如果记不住的话,可以使用finger命令与id命令,例如:
finger root
# 输出如下:
Login: root Name: root
Directory: /root Shell: /bin/bash
On since Fri Mar 9 19:10 (CST) on tty1 7 seconds idle
Mail last read Sat Mar 3 15:58 2018 (CST)
No Plan.
id root
# 输出如下:
uid=0(root) gid=0(root) groups=0(root)
输出内容不在解释,十分 -h 了。
2./etc/shadow
打开该文件,内容大致如下:
root:$6$tVBKdRxY$myJhWrhIwlXh42zNYLz1fmwu4ONQWP03O/5ccx1/34koU8GTn0M0ACx3xI4Bl.wPN3DPrrGbQX7vbPqqR//xv0:17593:0:99999:7:::
bin:*:17110:0:99999:7:::
daemon:*:17110:0:99999:7:::
adm:*:17110:0:99999:7:::
shadow文件夹自然也以“:”作为分隔符,这里一共有9个字段,从左到右依次具有如下意义:
3./etc/group
/etc/group文件中存放的是用户组的相关的信息,打开大致如下:
root:x:0:root
一共有四个字段:
4./etc/gpasswd
/etc/gpasswd文件中存放的是用户组没密码的相关信息,大致如下:
root:::root
同样有四个字段:
当然,对于一个用户来说,当然可以在多个组当中。但是,当我们使用一个账户进行某些操作时,系统如何判断我们当前属于哪个组呢?例如,当前有个文件属性如下:
----r----- root group1 x.txt
有一个用户名为user既属于group1又属于group2。那该用户到底能不能读取这个txt呢?
其实这就涉及到了一个有效用户组与初始用户组两个概念了。使用groups命令,可以看到类似如下的输出(这里模拟有groups1、2两个组):
groups
# 输出
groups1 groups2
第一个就是有效用户。有效用户组意味着目前你身份是user,现在属于group1。所以你是可以读取那个txt的。如何进行切换呢?使用newgrp命令
newgrp group2
groups
# 输出
group2 group1
此时尝试读取x.txt会提示权限不足。
那么初始用户组是什么呢?其实就是/etc/passwd中的GID对应的用户组,也是我们在登陆是的第一个用户组。