【Linux技术专题系列】「必备基础知识」一起探索(su、sudo等相关身份提权/身份切换机制)

简介: 【Linux技术专题系列】「必备基础知识」一起探索(su、sudo等相关身份提权/身份切换机制)

Linux技术专题


前提概要


  • su、sudo、sudo su、sudo -i 的用法和区别?
  • su root 和 su - root 有什么区别?



身份提权


  • su只能获得root的执行权限,不能获得环境变量
  • su -是切换到 root 并获得 root的环境变量及执行权限


注:用户切换工具(su 和 su - 这两个切换用户是有区别的。)


  • su 命令 和 su - 命令最大的本质区别就是:
  • 前者只是切换了root身份,但Shell环境仍然是普通用户的Shell
  • 后者连用户和Shell环境一起切换成root身份了
  • su切换成root用户以后,pwd一下,发现工作目录仍然是普通用户的工作目录
  • su -命令切换以后,工作目录变成root的工作目录了。 用echo $PATH命令看一下su 和su - 以后的环境变量有何不同
  • 只有切换了Shell环境才不会出现PATH环境变量错误。
  • 要从当前用户切换到其它用户,推荐使用su - 命令,这样连shell环境也切换了。
  • su root 输入root密码后切换之root用户但是pwd目录不变
  • su - root输入root密码后切换之root用户但是pwd目录/root



切换用户


su : 切换到某某用户模式,提示输入密码时该密码为切换后账户的密码,用法为“su 账户名称”。如果后面不加账户时系统默认为root账户,密码也为超级账户的密码。没有时间限制。




指令提权


  • sudo 一般加的是命令
  • sudo : 暂时切换到超级用户模式以执行超级用户权限,提示输入密码时该密码为当前用户的密码,而不是超级账户的密码。
  • 不过有时间限制,Ubuntu默认为一次时长15分钟。
  • sudo -i: 为了频繁的执行某些只有超级用户才能执行的权限,而不用每次输入密码,可以使用该命令。提示输入密码时该密码为当前账户的密码。没有时间限制。
  • **执行该命令后提示符变为“#”而不是“$”。想退回普通账户时可以执行“exit”或“logout” 。



要求执行该命令的用户必须在sudoers中才可以 sudo -i 运行结果 PWD=/root sudo su 运行结果 PWD=/home/用户名(当前用户主目录)


sudo -i root与sudo - root、sudo -i ,sudo  - ,sudo root效果相同,提示输入密码时该密码为当前账户的密码,要求执行该命令的用户必须在sudoers中才可以su需要的是切换后账户的密 用法为“su 账户名称”


  • sudo -i 直接运行sudo命令加-i参数 要求执行该命令的用户必须在sudoers中才可以 sudo su 运行sudo命令给su命令提权,运行su命令。
  1. 使用root用户将 /etc/sudoers文件权限改为:
-rwxrwxrwx. 1 root root 3729 10月 14 20:52 sudoers
chmod 777 /etc/sudoers
复制代码
  1. 进入sudoers文件中进行修改
  • 进入sudoers文件修改命令:vim /etc/sudoers
  • 进入文件后 /root 查找到有root的地方




Allow root to run any commands anywhere


root    ALL=(ALL)       ALL
/root
复制代码


在下方添加你需要给权限的用户名 在这我用zhangsan代替

## Allow root to run any commands anywhere 
root    ALL=(ALL)       ALL
zhangsan        ALL=(ALL)       ALL
复制代码


写完后 shift+:wq保存

  1. 因为sudoers文件只能在权限为-r–r-----.时生效,所以保存完毕后需要将sudoers文件权限改回为原来权限。修改命令为: chmod 440 /etc/sudoers



(补充)文件所具有的权限


Linux的文件权限用3组表示每组3位共9位字符表示,在终端输入命令ll查看当前目录下的所有文件的权限在这里插入图片描述



红色框为文件的类型:


  • 表示普通文件
  • l 表示链接文件
  • b 表示块设备文件
  • c 表示字符设备文件
  • s 表示 socket 文件

image.png


  • 黄色框为该文件所属用户对该文件的权限
  • 绿色框为该文件所属用户的所属组对该文件的权限
  • 紫色框为其他用户对文件的权限
  • 粉色框为该文件所属用户
  • 蓝色框为该文件所属组


image.png


要对该文件赋予执行的权限(1)


  • chmod 123(0-7) 目录/文件
  • 第一位数字:对文件所属用户赋予权限
  • 第二位数字:对文件所属用户的所属组赋予权限
  • 第三位数字:对其他用户赋予权限


如下图所示:

image.png


chmod 765 csdn.txt


如上图命令


  • 第一位7=4+2+1。所以该权限为 读 写 执行
  • 第二位6=4+2。所以该权限为 读 写
  • 第三位5=4+1。所以该权限为 读 执行

chmod +/- rwx 目录/文件

  • +:对文件赋予该权限
  • -:对文件撤销该权限


用法:


-rw-r--r--. 1 root root    0 10月 15 20:33 csdn.txt
复制代码


要对该文件赋予执行的权限(2)


[root@node02 csdn]# chmod +x csdn.txt
-rwxr-xr-x. 1 root root    0 10月 15 20:33 csdn.txt
复制代码


操作命令:


chmod +x csdn.txt


要对该文件赋予执行的权限(3)


Linux 系统中文件的 ugo 权限是 Linux 进行权限管理的基本方式。


  • 文件的所有者和组 Linux 文件的 ugo 权限把对文件的访问者划分为三个类别:文件的所有者、组和其他人。所谓的 ugo 就是指 user(也称为 owner)、group 和 other 三个单词的首字母组合。
  • 文件的所有者 文件的所有者一般是创建该文件的用户,对该文件具有完全的权限。在一台允许多个用户访问的 Linux 主机上,可以通过文件的所有者来区分一个文件属于某个用户。当然,一个用户也无权查看或更改其它用户的文件。
  • 文件所属的组 假如有几个用户合作开发同一个项目,如果每个用户只能查看和修改自己创建的文件就太不方便了,也就谈不上什么合作了。所以需要一个机制允许一个用户查看和修改其它用户的文件,此时就用到组的概念的。我们可以创建一个组,然后把需要合作的用户都添加都这个组中。在设置文件的访问权限时,允许这个组中的用户对该文件进行读取和修改。
  • 其他人 如果我想把一个文件共享给系统中的所有用户该怎么办?通过组的方式显然是不合适的,因为需要把系统中的所有用户都添加到一个组中。并且系统中添加了新用户该怎么办,每添加一个新用户就把他添加到这个组中吗?这个问题可以通过其他人的概念解决。在设置文件的访问权限时,允许其他人户对该文件进行读取和修改。


chmod u=rwx,g=rwx,o=rwx 目录


  • u:对文件所属用户赋予权限
  • g:对文件所属用户的所属组赋予权限
  • o:对其他用户赋予权限
  • a(u+g+o):所有人:


用法:


-rw-r--r--. 1 root root    0 10月 15 20:33 csdn.txt
复制代码


对该文件所属用户赋予读写执行的权限,其他设为无权限

[root@node02 csdn]# chmod u=rwx,g=---,o=--- csdn.txt 
-rwx------. 1 root root    0 10月 15 20:33 csdn.txt
复制代码


权限类型 读:r=4 写:w=2 执行: x=1

操作命令:


chmod u=rwx,g=—,o=— csdn.txt
复制代码


下面让我们来详细的解释一下读写执行的权限。


  • r (read):可以读取文件的实际内容,比如读取文本文件内的文字等。
  • w (write):可以编辑、增加、删除文件的内容(但不含删除该文件)。
  • x (execute):该文件具有可以被系统执行的权限。




相关文章
|
2月前
|
缓存 Linux 开发者
Linux内核中的并发控制机制
本文深入探讨了Linux操作系统中用于管理多线程和进程的并发控制的关键技术,包括原子操作、锁机制、自旋锁、互斥量以及信号量。通过详细分析这些技术的原理和应用,旨在为读者提供一个关于如何有效利用Linux内核提供的并发控制工具以优化系统性能和稳定性的综合视角。
|
28天前
|
存储 编译器 Linux
动态链接的魔法:Linux下动态链接库机制探讨
本文将深入探讨Linux系统中的动态链接库机制,这其中包括但不限于全局符号介入、延迟绑定以及地址无关代码等内容。
400 22
|
16天前
|
安全 Linux KVM
Linux虚拟化技术:从Xen到KVM
Xen和KVM是Linux平台上两种主要的虚拟化技术,各有优缺点和适用场景。通过对比两者的架构、性能、安全性、管理复杂性和硬件依赖性,可以更好地理解它们的适用场景和选择依据。无论是高性能计算、企业虚拟化还是云计算平台,合理选择和配置虚拟化技术是实现高效、稳定和安全IT环境的关键。
72 8
|
1月前
|
监控 算法 Linux
Linux内核锁机制深度剖析与实践优化####
本文作为一篇技术性文章,深入探讨了Linux操作系统内核中锁机制的工作原理、类型及其在并发控制中的应用,旨在为开发者提供关于如何有效利用这些工具来提升系统性能和稳定性的见解。不同于常规摘要的概述性质,本文将直接通过具体案例分析,展示在不同场景下选择合适的锁策略对于解决竞争条件、死锁问题的重要性,以及如何根据实际需求调整锁的粒度以达到最佳效果,为读者呈现一份实用性强的实践指南。 ####
|
1月前
|
消息中间件 安全 Linux
深入探索Linux操作系统的内核机制
本文旨在为读者提供一个关于Linux操作系统内核机制的全面解析。通过探讨Linux内核的设计哲学、核心组件、以及其如何高效地管理硬件资源和系统操作,本文揭示了Linux之所以成为众多开发者和组织首选操作系统的原因。不同于常规摘要,此处我们不涉及具体代码或技术细节,而是从宏观的角度审视Linux内核的架构和功能,为对Linux感兴趣的读者提供一个高层次的理解框架。
|
2月前
|
算法 Linux 开发者
Linux内核中的锁机制:保障并发控制的艺术####
本文深入探讨了Linux操作系统内核中实现的多种锁机制,包括自旋锁、互斥锁、读写锁等,旨在揭示这些同步原语如何高效地解决资源竞争问题,保证系统的稳定性和性能。通过分析不同锁机制的工作原理及应用场景,本文为开发者提供了在高并发环境下进行有效并发控制的实用指南。 ####
|
2月前
|
缓存 Linux 开发者
Linux内核中的并发控制机制:深入理解与应用####
【10月更文挑战第21天】 本文旨在为读者提供一个全面的指南,探讨Linux操作系统中用于实现多线程和进程间同步的关键技术——并发控制机制。通过剖析互斥锁、自旋锁、读写锁等核心概念及其在实际场景中的应用,本文将帮助开发者更好地理解和运用这些工具来构建高效且稳定的应用程序。 ####
50 5
|
2月前
|
Linux 数据库
Linux内核中的锁机制:保障并发操作的数据一致性####
【10月更文挑战第29天】 在多线程编程中,确保数据一致性和防止竞争条件是至关重要的。本文将深入探讨Linux操作系统中实现的几种关键锁机制,包括自旋锁、互斥锁和读写锁等。通过分析这些锁的设计原理和使用场景,帮助读者理解如何在实际应用中选择合适的锁机制以优化系统性能和稳定性。 ####
69 6
|
2月前
|
消息中间件 存储 Linux
|
2月前
|
安全 Linux 数据安全/隐私保护
深入探索Linux操作系统的多用户管理机制
【10月更文挑战第21天】 本文将详细解析Linux操作系统中的多用户管理机制,包括用户账户的创建与管理、权限控制以及用户组的概念和应用。通过具体实例和命令操作,帮助读者理解并掌握Linux在多用户环境下如何实现有效的资源分配和安全管理。