02、用户和权限

一、Linux用户管理

1.1 用户的作用

  • 每个运行的程序,都需要一个特定的用户来运行
  • 公司通常使用普通用户,root权限过大,容易产生故障

1.2 用户的分类

用户UID系统中约定的含义
0超级管理员用户
1~200系统用户,用来运行程序自带的进程,默认已创建
201-999系统用户,用来运行用户安装的程序,此类用户无需登录
1000+普通用户,正常可以登录系统的用户,权限较小,执行的任务有限
  • 补充:用户查询方法
[root@web01 linie]#id				#查询当前用户
uid=0(root) gid=0(root) groups=0(root)
[root@web01 linie]#id python		#查询指定用户
uid=1023(python) gid=1023(python) groups=1023(python)

1.3 用户相关文件

(1)/etc/passwd

  • 密码储存文件
[root@bgx ~]#head -1 /etc/passwd
root:x:0:0:root:/root:/bin/bash

图解

(2)/etc/shadow

  • 密码设置相关
[root@bgx ~]#head -1 /etc/shadow
bgx:!!:16312:0:999999:7:2:66275:

在这里插入图片描述

1.4 用户相关命令

(1)useradd-添加用户

  • 登录root用户,linux就可以添加用户了
参数:
	-u			指定创建用户的UID,不允许冲突
	-g			指定创建用户基本组
	-G			指定用户附加组,逗号隔开可写多个
	-d			指定要创建用户家目录
	-s			指定要创建用户的bash shell
	-c			指定要创建用户注释信息
	-M			创建的用户不创建家目录
	-r			创建系统账号,默认无家目录
	-s /sbin/nologin	创建的用户无法登录
  • 示例
#01、创建用户 linie 用户
	用户ID:6000
	基本组:ops,附加组dev
[root@web01~]#groupadd ops
[root@web01~]#groupadd dev
[root@web01~]#useradd -u6000 -g ops -G dev -c "添加注释" -s /bin/bash linie
[root@web01~]#id linie
uid=6000(linie) gid=1001(ops) groups=1001(ops),1002(dev)


#02、创建一个nice用户,该用户不需要家目录,该用户不需要登录系统
[root@web01~]#useradd -r nice -M -s /sbin/nologin
[root@web01~]#id nice
uid=997(nice) gid=994(nice) groups=994(nice)

(2)usermod-修改用户

命令作用:
	可以使用root账号修改普通用户
参数:
	-u			指定修改用户UID
	-g			指定要修改的基本组
	-G		指定附加组,逗号隔开可添加多个,默认覆盖原来的
	-d			指定用户家目录
	-s			指定bash shell
	-c			注释信息
	-l			执行要修改的登录名
	-L			指定要锁定的用户
	-U			指定要解锁的用户
  • 示例
#01、修改linie用户
	uid为5001
	基本组为network,附加组为ops,dev,sa
	注释信息为student,登录名为new_linie
[root@web01~]#groupadd network
[root@web01~]#groupadd ops
[root@web01~]#groupadd dev
[root@web01~]#groupadd sa
[root@web01~]#usermod linie -c "student" -g network -aG sa -l new_linie
[root@web01~]#id new_linie
uid=6000(new_linie) gid=1003(network) groups=1003(network),1002(dev),1004(sa)


#02、修改new_linie用户
	为new_linie设置密码
	锁定用户,解锁用户
[root@web01~]#echo "123" | passwd --stdin new_linie		#设置密码
Changing password for user new_linie.
passwd: all authentication tokens updated successfully.
[root@web01~]#usermod -L new_linie		#加锁,远程登录不上
[root@web01~]#usermod -U new_linie		#解锁

(3)userdel-删除用户

命令用途:
	使用root用户删除普通用户
参数:
	-r		连同家目录一起删除
  • 示例
userdel -r new_linie
  • 彻底删除用户的方法
/home目录下的文件
在/etc/passwd下的用户
在/etc/group下的用户组
在/var/spool/mail下的邮箱文件

(4)passwd-设置密码

  • 普通用户只能修改自己的密码,无法修改其他用户密码且密码必须为8位字符
  • 管理员用户允许修改任何人密码,密码长短不限

1️⃣交互式修改密码

passwd 			#给当前用户修改密码
passwd root		#给root用户修改密码
passwd linie	#给linie用户修改密码,普通用户只能修改自己的密码

2️⃣非交互式修改密码

#01、修改简单密码
[root@web01~]#echo "123"|passwd --stdin linie
Changing password for user linie.
passwd: all authentication tokens updated successfully.


#02、修改复杂密码
[root@web01~]#echo $(mkpasswd -l 10 -d 2 -c 2 -C 2 -s 4)|tee pass.txt|passwd --stdin linie
Changing password for user linie.
passwd: all authentication tokens updated successfully.
[root@web01~]#cat pass.txt 
vX+;9vK<'1

二、Linux用户组管理

  • 定义:多个用户为一组,对组操作就是对组中所有的用户进行操作

2.1 分类

  • 默认组:创建用户时不指定组,默认创建与用户名同名的组
  • 基本组:用户有且只能有一个基本组,创建时可通过-g指定
  • 附加组:用户可以有多个付家组,-G指定

2.2 相关配置文件

(1)/etc/group

[root@bgx ~]#head -1 /etc/group
root:x:0:

在这里插入图片描述

(2)/etc/gshadow

[root@bgx ~]#head -1 /etc/gshadow
root:::

在这里插入图片描述

2.3 用户组相关命令

(1)groupadd

定义:
	添加用户组
参数:
	-f		如果组存在,提示成功创建状态
	-g		为新组设置GID,若GID已存在会提示已存在
	-r		创建一个系统组
  • 创建一个系统组
[root@web01~]#groupadd linie -g 10000
[root@web01~]#cat /etc/group|grep linie
linie:x:10000:

(2)groupmod

定义:修改组
参数:
	-f		如果组已经存在,会提示成功创建的状态
	-g		为新组设置GID,若GID已经存在会提示GID已存在
	-r		创建一个系统组
	-n		该名为新的组
  • 该名为新的组
[root@web01~]#cat /etc/group|grep linie
linie:x:6003:
[root@web01~]#groupmod -n yangshi linie
[root@web01~]#cat /etc/group|grep yangshi
yangshi:x:6003:
  • 修改gid为6000
[root@web01~]#groupmod yangshi -g 6000
[root@web01~]#cat /etc/group|grep yangshi
yangshi:x:6000:

(3)groupdel

定义:删除组
  • 删除一个组
[root@web01~]#groupdel linie	
  • 删除一个有用户的组
[root@web01~]#groupadd linie
[root@web01~]#useradd tom -g linie
[root@web01~]#groupdel linie
groupdel: cannot remove the primary group of user 'tom'	#由于有用户在组中无法直接删除组
[root@web01~]#userdel -r tom
[root@web01~]#groupdel linie

2.4 普通用户提权方法

当我们登录的是普通用户怎么使用他来管理我们的服务器呢?我们下面介绍两种方法:
1、使用su命令进行身份切换
2、使用sudo来提高当前用户的权限

(1)su命令进行身份切换

1️⃣shell登录分类

  • 登录式shell:需要输入账号密码才能登录(su -)
  • 非登录shell:不需要输入账号密码就能进入(su)

2️⃣环境变量配置及启动顺序
我们使用su切换时会使用到su或者su - ,切换到另一个用户会加载环境变量;因此我们先来查看环境变量的相关内容

  • profile类文件:设定环境变量,登录前运行的脚本或命令
  • bashrc类文件:设定本地环境变量,定义命令别名
  • 用户配置文件
    • ~/.bash_profile:
    • ~/.bashrc
  • 全局环境变量
    • /etc/profile
    • /etc/profile.d/*.sh
    • /etc/bashrc

启动顺序:
su(非登录式shell):
/.bashrc–>/etc/bashrc–>/etc/profile.d/*.sh
su - (登录式shell):
/etc/profile–>/etc/profile.d/*.sh–>~/.bash_profile/ -->/.bashrc -->/etc/bashrc

3️⃣su与环境变量的关系

  • 普通用户su 切换到root,需要输入root超级管理员密码
  • root切换到普通用户不要要输入密码
  • 通过su可以指定用户执行命令或脚本
su - hr01 -c 'ip addr'	#使用hr01用户执行命令

(2)sudo命令提权

由于root知道的人多了会导致安全性的事故的发生,所以我们一般都使用sudo命令进行提权
1️⃣系统默认具有sudo权限的组wheel,加入wheel组就具有相应的权限

usermod linie -G wheel		#将普通用户linie赋予sudo权限
su - linie					#切换到普通用户
sudo rm -rf /opt			#使用普通用户删除/opt目录

2️⃣自定义sudo权限
第一步:visudo 添加权限设置

#1.使用sudo定义用户组中的用户,这个方法与group没什么关系

User_Alias OPS = oldxu,oldqiang
User_Alias DEV = oldli,oldguo


#2.定义可执行的命令组,便于后续调用

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

Cmnd_Alias GRANT = /bin/vim,/bin/su

#3.使用sudo开始分配权限

OPS ALL=(ALL) NETWORKING,SOFTWARE,SERVICES,STORAGE,DELEGATING,PROCESSES

DEV ALL=(ALL) SOFTWARE,PROCESSES,GRANT

第二步:visudo -c 语法检测

[root@doc01 04:50:23~]#visudo -c
/etc/sudoers: parsed OK

第三步:实验环境搭建

#01、添加用户
useradd linie
useradd fengbiao

#02、创建密码
echo "123" | passwd --stdin linie
echo "123" | passwd --stdin fengbiao

第四步:测试

#分别切换到各个用户查看用户自己的sudo权限

#01、检查linie的权限
[root@doc01 04:54:04~]#su - linie
[linie@doc01 04:54:10~]$sudo -l
User linie may run the following commands on doc01:
    (ALL) /sbin/ifconfig, /bin/ping, /bin/rpm, /usr/bin/yum, /sbin/service, /usr/bin/systemctl start, /bin/mount,
        /bin/umount, /bin/chown, /bin/chmod, /bin/chgrp, /bin/nice, /bin/kill, /usr/bin/kill, /usr/bin/killall
        
    
#02、查看fengbiao的权限
[fengbiao@doc01 04:56:29~]$sudo -l
User fengbiao may run the following commands on doc01:
    (ALL) /bin/rpm, /usr/bin/yum, /bin/nice, /bin/kill, /usr/bin/kill, /usr/bin/killall, /bin/vim, /bin/su
  • 3
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值