6

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

 3 years ago
source link: https://my.oschina.net/liboware/blog/5134702
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.
neoserver,ios ssh client

【Linux技术专题系列】「必备基础知识」一起探索(su、sudo等相关身份提权/身份切换机制) - 异次元の技术领域 - OSCHINA - 中文开源技术交流社区

  • 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 文件

  • 黄色框为该文件所属用户对该文件的权限
  • 绿色框为该文件所属用户的所属组对该文件的权限
  • 紫色框为其他用户对文件的权限
  • 粉色框为该文件所属用户
  • 蓝色框为该文件所属组
要对该文件赋予执行的权限(1)
  • chmod 123(0-7) 目录/文件

    • 第一位数字:对文件所属用户赋予权限
    • 第二位数字:对文件所属用户的所属组赋予权限
    • 第三位数字:对其他用户赋予权限
如下图所示:

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):该文件具有可以被系统执行的权限。

About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK