用户和组管理

3.1-3.9 用户配置文件和密码配置文件,用户组管理,用户管理,usermod,用户密码管理,mkpasswd,su,sudo,限制远程登录。

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

Linux在最出发发明时,是大型计算机,需要放在专门的建筑物中,使用者从外面用终端登录。这就涉及到了多用户使用同一台电脑时的文件安全和权限问题,于是用户与用户组的概念遍应运而生。今天的计算机已经演化成了个人计算机和微型计算机,但是Linux的用户和组的概念依然沿用至今。

user的信息存放在/etc/passwd文件中,具体的密码则存放在/etc/shadow文件中。

[root@centos-01 ~]# cat /etc/passwd
root:x:0:0:root:/root:/bin/bash

passwd文件里,每一行是一个用户,共有7个字段:

  • 第一个字段是用户名

  • 第二个字段是密码,但是出于安全考虑,在此文件中密码用x表示,真实的密码文件则存放在shadow文件中

  • 第3-4字段分别是uid和gid,gid在/etc/group文件中有对应的记录

  • 第五个字段为注释说明,没有实际意义。通常记录用户的一些基本信息,如姓名电话地址等。我们可以通过chfn命令进行修改

  • 第六个字段为用户的家目录。如果想修改用户的家目录,修改这个文件此处的配置即可

  • 最后一个字段是用户的shell。CentOS默认用户的shell是bash

shadow文件由9个字段组成:

[root@centos-01 ~]# cat /etc/shadow
root:$6$nYd7jCCd$7hyJSXMqwfLfDky0am5k2aqPe7fg4XuyNu2ZxW3dk1OMrRyG8A0Rf/e38szyjStN4C9oUJ3R2ak72B.mQ8gKt/:17463:0:99999:7:::
  • 第一个字段为用户名,与passwd文件对应

  • 第二个字段为密码,是该账号的真实密码,但是经过了加密

  • 第三个字段是上次更改密码的日期。这个数字是以距1970年1月1日的天数为基准计算的。

  • 第四个字段是要过多少天可以更改密码,默认为零,即不受限制

  • 第五个字段是密码多少天后到期,用户必须在到期时间之前修改密码。这里默认为99999,即永远不需要修改

  • 第六个字段是用户密码到期前的警告期限,默认为7天

  • 第七个字段为账号失效日期

  • 第八个字段是帐号的生命周期,即在这个日期前可以使用,这个日期之后则锁定作废。依然以距1970年1月1日的天数计算。

  • 最后一个字段为保留字段,没有意义

用户组管理,用户管理, usermod

groupadd, 通过添加-g参数可以指定gid编号

groupadd grptest1

groupadd -g 1008 grptest2

groupdel,用于删除组,但是仅限于删除空组

groupdel grptest1

useradd, -u表示自定义uid,-g表示自定义gid,-d表示自定义用户家目录,-M表示不建立家目录,-s表示自定义shell

useradd test1

useradd -u 1004 -g 1008 test2

userdel, 加上-r后会同时删除被删用户的家目录,如果不加-r则默认不删

userdel test1 //仅仅只删除用户test1,但是/home/test1目录依然存在

userdel -r test2 //此时不仅用户test2被删除,家目录/home/test2也一起被删除

usermod, 也可以通过选项命令 -u自定义uid,-g自定义gid,-d自定义用户家目录,-s自定义shell。除此之外-G可以给用户添加多个组,每一个用户只能有一个uid和一个gid,如果加入到多个组,多出来的组称为扩展组。示例如下:

[root@centos-01 ~]# id user3
uid=1001(user3) gid=1001(user3) 组=1001(user3)

[root@centos-01 ~]# usermod -G grptest1 user2
[root@centos-01 ~]# id user2
uid=1000(user2) gid=1000(user2) 组=1000(user2),1003(grptest1) //现在同时属于组user2和grptest1

但是新增扩展组时,命令中需要包含原有的扩展组,否则将会删掉原有扩展组

用户密码管理,mkpasswd

passwd
普通用户和root用户都可以通过passwd命令更改自己的密码

root用户也可以通过此命令修改其他用户的密码,命令为:

passwd username

mkpasswd用于生成密码,但是Centos默认没有这个命令,可以通过yum install -y expect 安装。

使用时可以通过-l指定长度,-s指定特殊字符的个数,-d指定数字的个数。

[root@centos-01 ~]# mkpasswd -l 12 -s 3 -d 3
z{@s408iL_mC
[root@centos-01 ~]# mkpasswd -l 7 -s 1 -d 1
~Y6nYxr
[root@centos-01 ~]# 

su,sudo,限制远程登录

su用于用户之间切换,如从root用户切换到普通用户,从普通用户切换到root用户。但是在使用命令时需要加上-号,这样才能让环境变量也一起切换。从root用户切换到普通用户不需要输入密码,但是从普通用户切换到root用户则需要输出密码。

使用方法为:

su - usr2 //从root切换到user2

su - root //从user2切换到root,但是需要输入root的密码

sudo 上面有提到从普通用户切换到root用户需要输入root用户的密码,那么存在密码泄露的可能。所以这时可以用sudo解决上述问题。

sudo的作用是让普通用户临时使用root所拥有的权限,但是需要在/etc/sudoers文件中进行配置才可以拥有这个权限。

例如如果想用user2用户cat 目录/root/会提示没有权限,但经过如下操作则可以

[root@centos-01 ~]# visudo -f /etc/sudoers  //打开配置文件

## Allow root to run any commands anywhere
root    ALL=(ALL)       ALL
user2   ALL=(ALL)       /usr/bin/cat   //添加用户名,权限,以及命令的绝对路径或者写ALL

su - user2  //切换到user2用户
sudo cat /root/  //现在即临时用sudo权限查看/root/文件

当面对批量处理添加sudo用户权限时,如果一个个的添加显得太麻烦,这时我们可以处理配置文件sudoers文件中的wheel组,然后把需要添加权限的用户添加到扩展组wheel中即可。

不允许root用户远程登录可以通过瞎改ssh的配置文件进行更改。路径为/etc/ssh/sshd_config,在其中查找#PermitRootLogin yes并修改为PermitRootLogin no(删掉最前面的#以让命令生效)

然后再使用命令重启sshd服务systemctl restart sshd.service

/sbin/nologin和/bin/false的区别
passwd文件中用户家目录为/sbin/nologin时,只是不允许用户登录shell,但是还可以使用ftp等服务。

但是/bin/false则禁止了shell登录以及ftp等一切服务。

两种方式下,用户登录失败时都没有提示信息。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值