第三章、用户和组管理

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登录密码,只改这里就可以了。注意,前面不能有空格。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: 《Linux+, 第七章: Linux 文件系统》是《Linux+认证教程》中的第七章,重点介绍了Linux操作系统中的文件系统。在这一章中,读者将了解到Linux文件系统的基本概念、常用的文件系统类型以及文件系统的管理和维护等内容。 首先,本章开始介绍了Linux文件系统的基本概念,包括文件和目录的概念以及在Linux中的表示方式。读者将学习到如何使用文件路径和文件名来访问文件和目录。同时,还介绍了Linux系统中的特殊目录,如根目录、用户主目录和共享目录等。 接着,本章继续讲解了常见的文件系统类型。Linux支持多种文件系统类型,如EXT4、XFS、Btrfs等。读者将了解到每种文件系统类型的特点和适用场景,并学习如何在Linux中创建和格式化不同类型的文件系统。 然后,本章讲解了文件系统的管理和维护。读者将学习如何使用命令行工具来管理和操作文件系统,如创建、删除、复制和移动文件等。同时,还介绍了文件系统的权限和属性配置,如设置文件的拥有者和权限等。 最后,本章还涉及了文件系统的备份和恢复。读者将学习如何使用备份工具来对文件系统进行备份,以及如何从备份中恢复数据。 通过学习本章内容,读者将深入了解Linux文件系统的原理和操作方法。这对于Linux系统管理员和开发人员来说非常重要,因为文件系统是Linux操作系统中最基础和核心的部分之一。掌握了文件系统的知识,读者将能够更好地管理和维护Linux系统,并解决文件系统相关的问题。 ### 回答2: 《Linux头歌》是一本关于Linux操作系统的技术书籍,第七章主要讲述了Linux文件系统的管理和操作。本章主要涵盖了以下几个方面的内容。 首先,本章介绍了Linux文件系统的基本概念和特点。Linux文件系统采用了类似于树状结构的层次目录结构,以根目录"/"为起点,通过不同的目录和文件来织和管理数据。同时,Linux文件系统还具有对文件和目录进行权限管理的功能,确保安全性。 接着,本章详细介绍了如何在Linux系统中创建、删除、复制和移动文件和目录。通过命令行工具或图形界面工具,用户可以轻松地对文件和目录进行操作,满足不同的需求。此外,还介绍了文件和目录的属性和权限设置,确保文件的安全性。 然后,本章讲解了Linux文件系统中的硬链接和软链接的概念和用法。硬链接是指多个文件指向同一个物理存储空间,而软链接是指一个文件指向另一个文件,类似于快捷方式。用户可以根据需要使用不同的链接方式,帮助管理织文件。 最后,本章还介绍了Linux文件系统的挂载和卸载操作。在Linux系统中,用户可以通过挂载操作将外部设备或远程文件系统与本地文件系统连接起来,以便访问和操作外部文件。同时,也可以通过卸载操作安全地断开与外部文件系统的连接。 总之,第七章《Linux头歌》详细介绍了Linux文件系统的管理和操作技巧,帮助读者更好地理解和掌握Linux操作系统的文件系统特性和使用方法。无论是初学者还是有一定经验的用户,都可以从中获得实用的知识和技能,提高对Linux系统的操作能力。 ### 回答3: 《Linux内核设计与实现》是一本经典的Linux内核相关书籍,其中第七章主要介绍了Linux内核的关键成部分——系统调用及库函数。系统调用是操作系统内核提供给用户程序的一接口,它们允许用户程序通过内核来访问底层系统资源和服务。这一章内容对于深入理解 Linux 内核的使用和开发具有重要意义。 首先,第七章详细介绍了系统调用的实现原理和机制。作者解析了系统调用表的结构和功能,并且详细说明了Linux内核是如何通过系统调用号来定位和调用相应的系统调用函数的。这些系统调用函数在内核空间中运行,并能够处理用户程序发起的请求,实现具体的功能。 其次,本章还介绍了用户空间和内核空间之间的切换机制。当用户程序发起系统调用的时候,会触发用户态和内核态之间的转换,在转换过程中,内核会根据系统调用号找到对应的系统调用函数,并执行相应的操作。这一章详细分析了切换过程的细节以及相关的数据结构。 此外,本章还对一些常用的系统调用进行了详细介绍,如文件操作相关的系统调用(如open、read、write等),进程管理相关的系统调用(如fork、execve、wait等),以及网络通信相关的系统调用(如socket、bind、connect等)。对于开发者来说,熟悉这些系统调用的使用方法和原理非常重要,能够帮助他们更好地设计和开发Linux内核的应用程序。 总之,第七章《Linux内核设计与实现》详细介绍了Linux内核的系统调用和库函数的实现原理和机制,以及常用系统调用的使用方法。通过学习这一章的内容,读者能够深入理解Linux内核的工作原理,对于使用和开发Linux内核应用程序具有指导意义。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值