ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

用户提权

2022-04-09 20:33:01  阅读:277  来源: 互联网

标签:shell etc sudo 用户 su 提权 root


目录

用户命令提权

Linux系统中,有时候普通用户有些事情是没办法操作,除非是root管理员用户才能做到。这时就需要临时切换到root管理员身份来做事了。那么在学习如何切换用户之前,我们先来了解下用户工作环境。 如何在普通用户的情况下,完成日常工作?

1)su 切换用户,使用普通用户登录,然后使用su命令切换到root。

优点:简单,方便

缺点:需要知道root密码,不安全,切换到root没有日志审计功能

2)sudo 提权,当需要使用root权限时,进行提权,而无需切换至root用户。

优点:安全,方便

缺点:复杂

在使用su切换身份前,我们需要shell登录分类、环境变量配置文件加载顺序

1.shell的分类

交互式shell        shell等待你的输入,并且立即执行你提交的命令
非交互式shell      执行脚本,不需要进行交互

登录式shell        需要用户名、密码登录后才能进入的shell
非登录式shell      不需要输入用户名和密码即可打开的Shell

2.bash shell配置文件

个人配置文件: ~/.bash_profile ~/.bashrc
全局配置文件:/etc/profile /etc/profile.d/*.sh /etc/bashrc
 
profile类文件, 设定环境变量, 登陆前运行的脚本和命令
bashrc 类文件, 设定本地变量, 定义命令别名
 
全局配置和个人配置设置冲突, 优先使用个人配置

shell配置文件应用顺序:
登录式shell配置文件执行顺序
/etc/profile->/etc/profile.d/*.sh->~/.bash_profile->~/.bashrc->/etc/bashrc

非登陆式shell配置文件执行顺序
~/.bashrc->/etc/bashrc->/etc/profile.d/*.sh

su - username切换用户命令

su与环境变量的关系

 su - username 属于登录式shell
 su username 属于非登录式sheell
 
 # 区别在于加载的环境变量不一样,因此在切换用户时最好加-,否则将会少加载两个环境变量。

1.su - 命令

  1. 普通用户su -代表直接切换至root用户身份, 但需要输入root用户密码
  2. 超级管理员root用户使用su - username切换普通用户不需要输入任何密码

2.su -c username命令

以某个用户的身份执行某个服务,使用命令su -c username

sudo命令提权

sudo的执行原理: 普通用户执行命令时,首先检查/var/run/sudo/目录下是否有用户时间戳,centos检查/var/db/sudo/目录,并检查是否过期。如果时间戳过期,就需要输入当前用户的密码。输入后检查/etc/sudoers配置文件,查看用户是否有sudo权限,如果有执行sudo命令并返回结果,然后退出sudo返回到普通用户的shell环境。 而在/etc/sudoers中设置可执行sudo指令的用户。默认只有root。

sudo的配置

sudo的配置文件
[root@localhost ~]$ vim /etc/sudoer

 用户名       所有主机=(所有角色)        所有命令的执行权限
 root             ALL=(ALL)                   ALL
 lw               ALL=(ALL)                 /bin/cp
 
 lw              ALL=(ALL)                NOPASSWD:ALL
 
使用visudo -c检查配置文件
[root@localhost ~]$ visudo  -c
/etc/sudoers: parsed OK

推荐修改sudo的方式

[root@localhost ~]$ visudo
如果在/etc/sudoers中设置保存时则需要按:进入低行模式输入wq!进行强行保存。

sudo配置组


如果每增加一个用户需配置一行sudo,这样设置非常麻烦。所以可以进行如下设置
 
%lw  ALL=(ALL)     NOPASSWD:/bin/rm, /bin/cp  #新增组
lw这个组的所有用户都拥有sudo的权力。接下来只需要将用户加入该组即可。
 
创建用户加入该组
[root@localhost ~]$ groupadd lw
[root@localhost ~]$ useradd lw1 -g lw
[root@localhost ~]$ useradd lw2 -g lw

sudoers其他别名配置

1.命令别名
Cmnd_Alias SOFTWARE = /bin/rpm, /usr/bin/up2date, 
2.主机别名
User_Alias ADMINS = jsmith, mikem
3.角色别名
Host_Alias     MAILSERVERS = smtp, smtp2

## 报错[root@localhost ~]# sudo ll
sudo: ll: command not found
原因:ll是别名,不是系统命令,sudo不走别名,只认识系统命令

标签:shell,etc,sudo,用户,su,提权,root
来源: https://www.cnblogs.com/lwlw/p/16123316.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有