第三章、用户和组管理

本文详细介绍了Linux系统中用户和组的管理,包括用户配置文件`/etc/passwd`和密码配置文件`/etc/shadow`的结构,用户组管理文件`/etc/group`的使用,以及如何通过`useradd`、`groupadd`、`usermod`等命令进行用户和组的创建、修改和删除。此外,还涵盖了用户密码管理、权限提升的`su`和`sudo`命令,以及如何限制root用户远程登录的方法。
摘要由CSDN通过智能技术生成

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

3.2 用户组管理

3.3 用户管理

3.4 usermod命令

3.5 用户密码管理

3.6 mkpasswd命令

3.7 su命令

3.8 sudo命令

3.9 限制root远程登录

 

  

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

 

1、用户配置文件(/etc/passwd)

第一行是root用户

添加的用户从最后一行开始

user1:x:1000:1000::/home/user1:/bin/bash

用户:密码:uid:gid:注释信息:家目录:shell(交互窗口)

ps:密码放在别的地方,所以统一为x

 

2、密码配置文件(/etc/shadow)(与用户配置文件一一对应)

/etc/passwd内容含义:

分为九段:

  1. 用户名

  2. 密码(经过加密)

  3. 上次更改密码距离格林乔治时间几天

  4. 多少天后可以更改密码

  5. 多少天后要改密码

  6. 密码到期前多少天提示

  7. 密码到期后,没改密码多少天账户失效

  8. 账号使用期限在格林乔治时间后多少天

# root(用户名):$6$dAG6/8RmAOv603Ln$eDc6vFHvGC4snH3YJPVJkIP3OC7qbl0ax069YxFTlRb9TRjb0VqSimxoK2Eva6NKkZkV1YWZsOrqgtInheaCD1(密码'加密过'):(上次更改密码距离'格林乔治时间'天数):0(多少天之后可再更改密码):99999(多少天之后要更改密码):7(密码到期前多少天提示):(密码到期后没修改密码多少天账号失效):(账号使用期限'格林乔治时间后多少天'):(略)

# longlong02(用户名):!!(密码'没密码是!!'):17387(上次更改密码距离):0(多少天之后可再更改密码):99999(多少天之后要更改密码):7(密码到期前多少天提示):(密码到期后没修改密码多少天账号失效):(账号使用期限'格林乔治时间后多少天'):(略)

# xxx:*(密码被锁定):17110:0:99999:7:::

即使密码设置的一样,但是加密的字符串是不一样的

head -n2 /etc/shadow; tail -n2  /etc/shadow

 

3.2 用户组管理

 

用户组管理文件(/etc/group)

#user3:x:1003:user3

#用户:密码:组ID:组成员

 

groupadd  组名                      #创建组

 

[root@localhost ~]# groupadd grp1

[root@localhost ~]# tail -n1 /etc/group

grp1:x:1002:

 

group  -g  1005 组名            #创建组,并将组gid设为1005

#组ID1000以内的都被系统预留了,要定义组ID,从1001开始

 

[root@localhost ~]# groupadd -g 1004 grp2

[root@localhost ~]# groupdel grp1

[root@localhost ~]# tail -n2 /etc/group

slocate:x:21:

grp2:x:1004:

 

groupdel   组名                      #删除组(组内要为空,无成员

 

[root@localhost ~]# groupdel grp1

[root@localhost ~]# tail -n2 /etc/group

slocate:x:21:

grp2:x:1004:

[root@localhost ~]# groupdel user1

groupdel:不能移除用户“user1”的主组

[root@localhost ~]# LANG=en

[root@localhost ~]# groupdel user1

groupdel: cannot remove the primary group of user 'user1'

 

 

3.3 用户管理

 

  1)useradd  用户名                #创建用户

-u   1003                                   #自定义uid=1003

-g     组名                                         #指定组

-d      目录                                        #自定义选择家目录

-s                                               #自定义选择shell

 

useradd -u 1004 -g grp2 -d /home/user3 -s /sbin/nologin user3

 

[root@localhost ~]# tail -n4 /etc/passwd

chrony:x:998:996::/var/lib/chrony:/sbin/nologin

xin:x:1000:1000::/home/xin:/bin/bash

user1:x:1001:1001::/home/user1:/bin/bash

user2:x:1002:1002::/home/user2:/bin/bash

[root@localhost ~]# useradd -u 1004 -g grp2 -d /home/user3 -s /sbin/nologin user3

[root@localhost ~]# tail -n4 /etc/passwd

xin:x:1000:1000::/home/xin:/bin/bash

user1:x:1001:1001::/home/user1:/bin/bash

user2:x:1002:1002::/home/user2:/bin/bash

user3:x:1004:1004::/home/user3:/sbin/nologin

 

-M    用户名                              #创建用户同时不创建家目录

 

userdel   用户名                  #删除用户(会保留该用户家目录)

 

userdel  -r   用户名             #删除用户同时删除家目录

 

#gid的数字不会根据gid自增,只会随着uid增加

 

ps:如果用户没有家目录怎么办?

/etc/skel/                           #系统家目录的模板目录地址

先退出,root用户再/home/m目录下创建user4的家目录,并将所有者和所属组改为user4,然后去/etc/skel/ 将模板目录的文件全部拷贝到/home/user4/,将所有文件的所有者和所属组改为user4,然后重新登录进去就可发现正常了

cp /etc/skel/.bash*   /home/user4

chown  user4:user4  !$

cp /etc/skel/.bash* /home/user4

chown -R user4:user4 !$

 

操作失误问题

创建新用户出错Creating mailbox file:File exists的问题

在Linux环境下安装oracle时需要创建oracle用户,提示上面这个错误;原因是没有正确删除用户

解决方法:

重新创建oracle用户:

useradd -oracle                  #创建oracle用户

userdel   -r oracle               #删除用户

然后创建别的用户就不会出错了

 

3.4 usermod命令

 

usermod(更改用户属性

-u  1002        用户名                 #改uid

-g  gid/组名      用户名            #改gid

-d   目录    用户名                   # 改家目录 

-s    /sbin/nologin  用户名    #改shell

 

-G  组名      用户名            #替换一个扩展组

 

-G  组名,组名      用户名        #可以替换多个组,中间用“,”隔开(g不行,只有大G才行)

 

id       用户名       #查看用户uid,gid,扩展组

 

 

3.5 用户密码管理

 

passswd                 #什么不加就是改root密码,加username改用户密码

 

/etc/shadow文件里密码那一段显示“!!”表示密码为空或者“*”都表示密码被锁定   (都不能够登陆)

 

passwd   -l   username           #锁定用户(!!)

passwd  -u    username          # 解锁用户

 

usermod  -L    username         #锁定用户(!)

usermod  -U    username          # 解锁用户

 

passwd     --stdin    username        #更改密码,只用一次修改,且密码明文显示

 

echo “1234”|passwd --stdin user1

 

echo  -e "1234\n1234" |passwd user1         

 

echo  -e  "123\n123"           echo  -e  "123\t123"        

               #\n是换行符 ,\t是table键(空格)

 

锁定密码:usermod -L 与passwd -l的区别

/etc/shadow文件密码那里:

usermod -L 会产生1个!号

passwd -l    会产生2个!号

#usermod和passwd的解锁、锁定可以互用

 

 

3.6mkpasswd 命令(密码生成器(生成随机字符))

  • -l(长度) 默认16位

  • -s(字符) 默认1

  • -C(大写) 默认4

  • -c(小写)默认3

  • -d(数字)默认2

yum install -y expect      #安装    

mkpasswd   -l      #指定长度

mkpasswd   -s     #指定特殊符号

 

[root@localhost ~]# mkpasswd -l 9  -s 2

m8Fd&(2Gt

[root@localhost ~]#

 

 

3.7 su命令

#普通用户显示为$符号,root用户显示为#符号。    

 

echo  $?       #检查上条命令的执行结果是否成功   (常用于脚本)   

# 输出为0表示执行成功

 

pwd    #查看当前位置

 

su    username          #切换用户,但是位置在root目录下

su  - username          #位置在用户家目录

 

su  -  -c “touch /tmp/user1.111”user1    

#在root用户下创建文件将文件所属者给user1

 

 

3.8 sudo命令

#让用户临时拥有root的权限

 

visudo    #打开sudo配置文件编辑  注意别用vi编辑,语法错了不会提示

visudo所在位置:/etc/sudoers.tmp

 

第一种设置方式

这是用户权限设置 

 

例:user1   ALL=(ALL)  (NOPASSWD:)/usr/bin/ls,/usr/bin/mv,/usr/bin/cat

#命令需要用绝对路径;输入括号里的NOPASSWD:, (冒号后面要加空格)则可避免第一次sudo登录输入密码

 

第一次sudo时需要输入用户密码

sudo   命令/绝对路径   文件/目录 

sudo /usr/bin/ls   /root/            或sudo  ls   /root/ 

sudo /usr/bin/cat  /root/3.txt

 

第二种设置方式

通过命名别名

 

这是用户组权限设置(设置类似用户上面设置)

 

 

3.9 限制root远程登录

 

思路:通过visudo,将选择的普通用户可以实现免密登录root用户,然后通过/etc/ssh/sshd_config 将root远程登录禁掉;使用选择免密登录root的普通用户登录,然后直接sudo su - 切换到root用户

 

visudo                                  # 开sudo配置文件编辑     

 

遇到问题

[root@localhost ~]# visudo

visudo: /etc/sudoers 忙,请稍后重试

 

#应该还运行过一个visudo没有退出来。

ps aux |grep visudo 看下是否有进程。 如果有用这个命令停掉

killall visudo

yum  install psmisc       #安装kill命令

 

visudo                        开sudo配置文件编辑

 

User_Alias XINS = xin,user1,user2,user3

 

XINS    ALL=(ALL)       NOPASSWD: /usr/bin/su

 

实现普通用户免密登录root用户

 

vi /etc/ssh/sshd_config                        #通过修改文件限制root远程登录

将root远程服务改为no(一开始文件默认为yes),并将#去掉

systemctl restart sshd.service             #重启sshd服务

[root@localhost ~]# systemctl restart sshd.service

[root@localhost ~]#

通过xshellroot登录不了

 

通过putty登录普通用户user1,然后sudo ,就进入root用户了

 

一个防止root远程登录软件,别人猜密码时,在猜错3次后,这个连接的IP断30分钟(时间可以自定议)

安装fail2ban前需要安装epel-release扩展源

yum install  -y epel-release

 

yum install -y fail2ban

 

#fail2ban的主配置文件:/etc/fail2ban/jail.conf  

防猜sshd登录密码,只改这里就可以了。注意,前面不能有空格。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值