我是靠谱客的博主 热情跳跳糖,最近开发中收集的这篇文章主要介绍用户管理什么是用户?为什么要有组?为什么要创建用户?我们怎么才能查看系统中所存在的用户?创建的用户会在系统中的哪个文件进行保存怎么创建用户?怎么修改用户?怎么删除用户?怎么给用户修改密码?用户创建流程组切换用户,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

什么是用户?

所谓用户,就是指能够正常登陆操作系统的账号。

为什么要有组?

我们可以为组设定相应的权限,然后把用户添加到该组,那么该组成员就能够继承组的权限。(便于管理用户)
一个用户可以拥有多个组。

为什么要创建用户?

  1. 通常在公司是使用普通用户管理服务器,因为root用户权限过大,容易造成故障。
  2. 系统上每一个进程都需要一个特定的用户来运行。

我们怎么才能查看系统中所存在的用户?

我们可以使用id命令来查看系统中所存在的用户。

创建的用户会在系统中的哪个文件进行保存

/etc/passwd

这个文件用于存放用户信息,我们使用cat命令后查看到的内容如下:
root:x:0:0:root:/root:/bin/bash
以:作为分隔符可分为7列,这7列存放的信息如下图所示:

在这里插入图片描述

/etc/shadow

这个文件用于存放用户的密码,我们使用cat命令查看文件内容以后显示如下:

bin:*:17834:0:99999:7:::

以:作为分隔符可分为9列,这9列存放的信息如下图所示:
在这里插入图片描述
系统对用户的uid有一个约定
0:超级管理员uid,表示最高权限
1-200:系统用户uid,用来运行系统自带的进程,默认已被创建
201-999:系统用户uid,用来运行用户安装的程序,此类用户无需登陆系统。
1000+:普通用户,权限较低

怎么创建用户?

useradd 用户名 选项 
	-u:指定用户的uid
	-g:用户默认组
	-G:用户的附加组
	-d:用户的家目录
	-s:用户的bash shell
	-r:创建系统用户,默认无家目录
	-M:不创建家目录
	-c:用户的注释信息

使用示例如下:

[root@oldboy ~]# useradd bgx -u5001 -g students -G sa -c "2019 new student" -s /bin/bash
# 创建一个用户bgx,指定uid5001,默认组是students,附加组是sa,注释信息为2019 new student ,登陆的shell为/bin/bash
[root@oldboy ~]# grep "bgx" /etc/passwd
bgx:x:5001:1003:2019 new student:/home/bgx:/bin/bash

如果没有指定基本组,那么系统会自动为你创建一个与用户名相同的基本组。

怎么修改用户?

usermod 要修改的用户名 要修改的内容
选项与useradd基本相同。
-l:修改登陆名
-L:锁定用户
-U:解锁用户
-a:在本来的基础上添加
使用示例如下:

[root@oldboy ~]# usermod bgx -g aaa
# 把bgx的基本组改为aaa
[root@oldboy ~]# usermod bgx -G aaa,bbb
# 把bgx的附加组改为aaa和bbb

怎么删除用户?

userdel 要删除的用户
	-r:可以把用户以及用户的家目录以及邮箱文件一起删除
		(注:邮箱目录默认在/var/spool/mail/
			在生产环境中尽量不要使用-r参数)

在删除用户时如果没有使用-r删除家目录的话,那么你就不能再去创建新的同名用户。

怎么给用户修改密码?

passwd 要修改密码的用户名
–stdin:表示非交互式改密码
注意:这里只有root可以修改其他用户的密码,且对密码的复杂度没有要求。否则每个用户只能修改自己的密码,并且普通用户修改的密码必须复杂。

使用系统内置的random设备来进行随机数生成配合passwd来设置复杂密码。
例:我们要使用8位数的随机密码命令如下:

[root@oldboy ~]# echo $RANDOM | md5sum | cut -c 1-8
# 生成随机密码,如果要使用只需要把这个结果用管道传递给passwd即可。
fd716389

使用mkpasswd也可以设置随机密码,相比较上面的方法用mkpasswd设置的密码更加复杂:
它的选项有:
-l : 密码长度
-d:数字
-c:小写字母
-C:大写字母
-s:特殊字符
示例如下:

[root@oldboy ~]# mkpasswd -l 8 
C{n6yi6M

用户创建流程

用户创建时系统会查看/etc/login.defs和/etc/default/useradd这两个文件的内容,如果我们不加任何参数,那么系统就会按照这两个文件中的配置信息为我们所创建的用户添加属性。
这两个文件中的内容注释如下:
在这里插入图片描述

是逻辑层面的定义,逻辑上讲多个用户归纳位一个组,我们对组操作相当于对所有用户进行操作。

组的分类

组分为基本组、附加组和私有组。
基本组:创建时指定的组,就是基本组,只能有一个。
私有组:创建时没有指定组默认创建与用户同名的组,只能有一个。
附加组:可以有多个。
注意:首先要有组,才能把用户加入该组。

组的信息保存位置:

/etc/group

[root@oldboy ~]# cat /etc/group
root:x:0:

可以看到,以:作为分割符可以分为四个部分,意思分别是:
在这里插入图片描述
/etc/gshadow

[root@oldboy ~]# cat /etc/gshadow
root:::

可以看到,以:作为分割符可以分为四个部分,意思分别是:
在这里插入图片描述

对组进行的操作

创建组

groupadd 组名
	-g: 可以指定组的gid

修改组

groupmod 组名
-g:修改组的gid
-n:修改组的名字

删除组

groupdel 组名
删除组必须先把以该组为主组的用户全部删干净才能删除组;
但是删除私有组的话只需要删除组下用户,那么组也会被删除。

切换用户

shell的分类

交互式shell:
等待用户输入执行的命令,会不断提示用户。
非交互式shell:
执行shell脚本,不会提示用户,脚本执行结束后shell会自动退出。
登陆式shell:
需要输入用户名以及密码才能进入shell(最常见)
非登陆式shell:
无需输入用户名和密码就能进入的shell,比如bash shell。

bash shell配置文件有:

个人配置文件:
~./bash_profile
~/.bashrc
全局配置文件:
/etc/profile
/etc/profile.d/*.sh
/etc/bashrc

登陆系统后,环境变量配置文件的应用程序是?

  1. 登录式shell
    /etc/profile --> /etc/profile.d/*.sh–>./bash_profile–>/.bashrc–>/etc/bashrc
  2. 非登录式shell
    ~/.bashrc --> /etc/bashrc --> /etc/profile.d/*.sh

su

常用于切换用户。
	- username : 切换到某用户
	-c : 以某个用户的身份执行某个命令

注:不加用户名表示切换到root用户;
普通用户使用su切换到其他用户需要输入对应的密码;
root用户切换到其他用户,无需输入密码。
su - 加载登录式shell。
su 表示加载非登录式shell。

sudo

用于提权。
在我们对用户进行提权以后,在命令前面加上sudo后就可以执行本来自己的权限不能执行的命令。

在/var/log/secure可以查看用户执行的操作的记录。

怎么快速提权呢?

我们把用户添加到wheel组中,便可以快速提权。wheel组默认拥有所有权限。

编辑sudo配置

我们可以使用visudo来编辑sudo的配置。其实就是使用sudo定义分组,给它添加sudo里的别名分组即可,和用户组不同。
在我们使用visudo时里面会有如下这些配置信息,这里是系统给我们提供的常用的命令集,如果我们想自定义的话,只需要像系统定义的命令集那样去自定义即可。

  1. 在visudo中定义一个虚拟组,把用户添加进去。
  2. 定义用户可用的指令集。
  3. 把指令集赋予给对应的虚拟组。
Cmnd_Alias NETWORKING = /sbin/route, /sbin/ifconfig, /bin/ping, /sbin/dhclient, /usr/bin/net, /sbin/iptables, /usr/bin/rfcomm, /usr/bin/wvdial, /sbin/iwconfig, /sbin/mii-tool

 Installation and management of software
Cmnd_Alias SOFTWARE = /bin/rpm, /usr/bin/up2date, /usr/bin/yum

Services
Cmnd_Alias SERVICES = /sbin/service, /sbin/chkconfig, /usr/bin/systemctl start, /usr/bin/systemctl stop, /usr/bin/systemctl reload, /usr/bin/systemctl restart, /usr/bin/systemctl status, /usr/bin/systemctl enable, /usr/bin/systemctl disable

Updating the locate database
Cmnd_Alias LOCATE = /usr/bin/updatedb

Storage
Cmnd_Alias STORAGE = /sbin/fdisk, /sbin/sfdisk, /sbin/parted, /sbin/partprobe, /bin/mount, /bin/umount

Delegating permissions
Cmnd_Alias DELEGATING = /usr/sbin/visudo, /bin/chown, /bin/chmod, /bin/chgrp

Processes
Cmnd_Alias PROCESSES = /bin/nice, /bin/kill, /usr/bin/kill, /usr/bin/killall

Drivers
Cmnd_Alias DRIVERS = /sbin/modprobe

# 例:

User_Alias OPS = u1,u2
	# 把OPS组中所能执行的命令赋予u1,u2

Cmnd_Alias NETWORKING = /sbin/ifconfig, /bin/ping
Cmnd_Alias SOFTWARE = /bin/rpm, /usr/bin/yum
Cmnd_Alias SERVICES = /sbin/service, /usr/bin/systemctl start
Cmnd_Alias STORAGE = /bin/mount, /bin/umount
Cmnd_Alias DELEGATING = /bin/chown, /bin/chmod, /bin/chgrp
Cmnd_Alias PROCESSES = /bin/nice, /bin/kill, /usr/bin/kill, /usr/bin/killall
	# 自定义命令集
OPS ALL=(ALL) NETWORKING,SOFTWARE,SERVICES
DBA ALL=(ALL) NETWORKING

	# 把ALL后面的命令集赋予给OPS组
## 注意:这里的组是虚拟组,不是系统中真实存在的组。
# 

或者我们也可以把用户添加到相应的组中,然后再把用户加入到对应的组中,也会拥有对应的权限。
示例:

%OPS ALL=(ALL) SOFTWARE

# 给真实的OPS组中的成员赋予SOFTWARE中的命令执行权限

上面示例中的%表示后面组名的实际系统中的组名。

最后

以上就是热情跳跳糖为你收集整理的用户管理什么是用户?为什么要有组?为什么要创建用户?我们怎么才能查看系统中所存在的用户?创建的用户会在系统中的哪个文件进行保存怎么创建用户?怎么修改用户?怎么删除用户?怎么给用户修改密码?用户创建流程组切换用户的全部内容,希望文章能够帮你解决用户管理什么是用户?为什么要有组?为什么要创建用户?我们怎么才能查看系统中所存在的用户?创建的用户会在系统中的哪个文件进行保存怎么创建用户?怎么修改用户?怎么删除用户?怎么给用户修改密码?用户创建流程组切换用户所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(42)

评论列表共有 0 条评论

立即
投稿
返回
顶部