飞道的博客

linux中用户提权su和sudo的理解和用法

946人阅读  评论(0)

一、概述

众所周知,在Linux下对很多文件进行修改都需要有root权限,比如创建、删除用户等操作,但是很多情况下我们仅仅只是以普通用户的身份登录到系统的,因为安全性考虑往往不会让除网络管理员之外的人员用root的身份登录,那么我们要完成一些特定的临时任务怎么办呢?

方法有2个:

  • 用su切换到root用户登陆系统,进行管理操作,但必须要知道root密码,而且因为身份切换过来了他就可以进行任何root可以的操作,这也是非常不安全的
  • 在执行的命令前面加上sudo进行部分操作,这个相对于su灵活,允许哪些用户,执行哪些命令都可以配置

二、永久提权su



su root也可以切换到root,虽然是root的身份,但是环境变量不变,如图:



三、临时提权sudo

1、编辑配置

sudo的配置文件是 /etc/sudoers ,我们可以用他的专用工具visudo编辑,此工具的好处是在添加规则不太准确时,保存退出时会提示给我们错误信息,配置好后,可以通过sudo -l 来查看哪些命令是可以执行或禁止的

2、格式

格式:用户/组 主机名 命令(默认每一行代表一个规则)

  • 用户/组:组前面要加%号,比如%wheel ,中间不能有空格,用户不需要
  • 主机:使用sudo的主机名,localhost或者是实际主机名
  • 命令:需要完整路径,多个命令之间用逗号隔开





wheel组相当于Windows系统中的administrators组,在linux中具有特权的组



3、记录日志

默认情况下,通过sudo方式执行的操作是不记录的,若要启用sudo日志以备管理员查看,应在/etc/sudoers文件中增加“Defaults logfile”设置


四、PAM安全认证

1、概念

PAM(Pluggable Authentication Modules)是linux系统可插拔认证模块。

2、作用

  • PAM是一种高效而且灵活便利的用户级别认证方式,它也是当前linux服务器普遍使用的认证方式
  • PAM提供了对所有服务进行认证的中央机制,适用于login,远程登录telnet,ftp等,su等应用程序
  • 系统管理员通过PAM配置文件来制定不同应用程序的不同认证策略

2、原理

  • PAM认证一般遵循的顺序:service(服务)–>PAM(配置文件)–>pam_*.so
  • PAM认证首先要确定哪一项服务,然后加载相应的PAM的配置文件(/etc/pam.d下)最后调用认证文件(/lib/security下)进行安全认证
  • 用户访问服务器的时候,服务器的某一个服务程序把用户的请求发送到PAM模块进行认证,不同的应用程序所对应的PAM模块也是不同的

如果想查看某个程序是否支持PAM认证,可以用ls命令

3、构成

  1. 认证类型
  2. 控制类型
  3. PAM模块及其参数

4、认证类型

  • Auth 账号的认证和授权
  • Account 帐户的有效性,与账号管理相关的非认证类的功能,如:用来限制/允许用户对某个服务的访问时间,限制用户的位置(例如:root用户只能从控制台登录)
  • Password 用户修改密码时密码复杂度检查机制等功能
  • Session 用户会话期间的控制,如:最多打开的文件数,最多的进程数等
  • -type 表示因为缺失而不能加载的模块将不记录到系统日志,对于那些不总是安装在系统上的模块有用

5、控制类型

控制类型也可以称做Control Flags,用于PAM验证类型的返回结果

  • required :验证失败时仍然继续,但返回fail
  • requisite :验证失败立刻结束整个验证过程,返回fail
  • sufficient :验证成功立即返回,不再继续,否则忽略结果并继续
  • optional :不用于验证,只是显示信息,常用于session

6、su模块案例

仅允许用户radmin使用su命令:

1、编辑su的pam配置文件

2、把第六行auth这一行前面的#去掉

3、然后编辑用户账号限制的配置文件/etc/login.defs

4、最后一行输入以下内容SU_WHEEL_ONLY yes

5、验证非wheel组的用户无法使用su

6、新建一个radmin用户,将他加入wheel组

7、验证可以使用su切换到其他用户


转载:https://blog.csdn.net/shengjie87/article/details/106907178
查看评论
* 以上用户言论只代表其个人观点,不代表本网站的观点或立场