1,了解/etc/passwd和/etc/shadow
在上图的代码中,head前面的符号|,我们成为管道符,它的作用是把前面的命令的输出再输入给后面的命令。
在上图的代码中,/etc/passwd:被分割为了7个字段
*第一个字段为用户名,代表的是用户账号的字符串
*第二个字段存放的是该账号的口令。也就是上图中的x,为什么是x呢?这是因为在 早期的Unix系统口令确实是存在这里的,但是,后来基于安全的因素,就将其存
放到/etc/shadow中了,因此呢,这里就只用一个x来替代了。
*第三个字段为一个数字,这个数字代表的是用户标识号,也成为uid.系统就是通过这个数字识别用户身份的。这里面的0,就是root,也就是说,我们可以修改test用户的uid为0,那么系统会认为root和test为同一个账户。uid的取值范围0~65535(但实际上已经可以支持到4294967294),0是超级用户(root)的标识号,Centos7的普通用户标识号从1000开始。如果我们自定义建立一个普通的用户,你就会看到该标识号是大于或等于1000的。
*第四个字段也是数字,表示的的是组标识号,也称为gid.它这里面对应的是/etc/group中的一条记录,其实/etc/group和/etc/passwd是相似的
*第5个字段为注释说明,没有实际意义。
*第6个字段为用户的家目录,党用户登录时,就处在这个目录下。root的家目录是/root,普通用户的家目录则为/home/username,用户的家目录是可以自定义的。
*第7个字段的用户为shell。用户登录后,要启动一个进程,用来将用户下达的指令传给内核,这就是shell.
/etc/shadow
/etc/shadow和/etc/passwd类似,就是分割为9个字段,我们这里只需要讲解前两个字段就🆗啦,剩余的大家私下自己了解,或者私信找我
*第1个字段为用户名,与/etc/passwd对应
*第二个字段为用户密码,是该账号的真正密码,这个密码是已经加了密的,但是有些黑客还是能够解密的。所以,将文件属性设置为000,但root账户是可以访问或者更改的,使用命令ls -l查看该文件的权限,示例命令如下:
2,groupad和useradd的命令用法
新增组的命令groupadd
命令groupadd的格式是groupadd [-g GID] groupname 实例命令如下
上图的代码中,如果不加 -g选项,则按照系统默认的gid创建组。跟uid一样,gid也是从1000开始的。当然,我们也可以加-g选项来自己定义gid
增加用户的命令useradd:
-u :表示自定义UID
-g:表示使新增用户属于已经存在的某个组,后面可以跟组id,也可以跟组名。
-d:表示自定义用户的家目录
-M:表示不建立家目录
-s:表示自定义shell
在上面的代码图中,如果useradd不加任何选项,直接跟用户名,机会创建一个跟用户名同名的组
上图代码中,如果-g选项后跟一个不存在的gid,则会报错,提示该组不存在,加上-M后,则不用建立家目录,但在/etc/passwd文件中仍有这个字段,但是如果你使用命令ls /home/user11插查看一下,则会提示该目录不存在。所以,-M选项的作用只是不创建那个目录。
3, 用户密码管理 passwd 和mkpasswd命令的应用
命令passwd 用户设置密码的时候,可以使用命令passwd,该命令后面若不加用户名字,则是为自己设定密码,具体情况如下图代码
如果你登录的是root账户,后面则可以跟普通账户的名字,意思是修改指定账户的密码,只有root才可以修改其它账户的密码,普通账户只能修改自己的密码
命令mkpasswd 用于生成密码,我们在安装Linux默认是没有这个命令的,需要安装一个expect软件包
![在这里插入图片描述](https://img-blog.csdnimg.cn/20200327052745263.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3dlaXh
pbl80NTMyMzQ3Ng==,size_16,color_FFFFFF,t_70)
上图代码中,-s指特殊字符的个数,-d指定数字的个数。
4,su和sudo命令的应用
命令su的格式为su [-] username,后面可以跟-,也可以不跟。普通用户的su命令不加username时,就是切换到root用户。当然,root用户同样可以使用su命令切换到普通用户。该命令加上-后,会初始化当前用户的各种环境变量。
由上图代码可知:如果不加-切换到root账户时,当前目录没有变化,而加上-切换到root账户时,当前目录为root账户的家目录。这跟直接登录root账户是一样的。当由root切换到普通用户时,是不需要输入密码的。
sudo命令是在su命令的基础上改进而来的,使用sudo命令执行一个只有root才能执行的命令是可以办到的,但是需要输入密码,但是,这个密码并不是root密码,而是用户自己的密码,默认情况下,只有root用户才能使用sudo命令,普通用户想要使用sudo,是需要root预先设定的。我们可以使用visudo命令编辑相关的配置文件/etc/sudoers.如果没有visudo这个命令,请使用yum install -y sudo安装
接下来验证login08账户的权限了
如果每增加一个用户就设置一行,这样子会不会太麻烦啦,所以,我们可以用下面的方法来设置:
把# %wheel ALL=(ALL) ALL前面的#去掉,让这一行生效。它的意思是,wheel这个组的所有用户都拥有sudo权利。接下来,只需要设置sudo权限的所有用户加入到wheel这个组中即可,
下面呢,给大家几行代码,把Linux服务器设置为只允许普通用户登录,而普通用户登陆后,我们可以不输入密码就能用sudo切换到root账户。具体步骤就是:visudo后,在文件的最后三行加入以下代码:看图
第一行设定了user别名,其实啊,这个USER_SU相当于是test,test1和aming三个账户,第二行设定了一个命令别名SU相当于/usr/bin/su;保存文件后,使用test,test1,aming这3个账户登录linux,执行命令sudo su -切换到root账户,获取root账户的所有权利,如下图所示:
*:最后呢,普通用户和root用户的shell提示符号有些区别的,root账户是#,普通用户是$。