🐧【Linux 技术专题系列】「必备基础知识」一起探索(su、sudo 等相关身份提权 / 身份切换机制)
前提概要
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 命令。
使用 root 用户将 /etc/sudoers 文件权限改为:
进入 sudoers 文件中进行修改
进入 sudoers 文件修改命令:vim /etc/sudoers
进入文件后 /root 查找到有 root 的地方
Allow root to run any commands anywhere
在下方添加你需要给权限的用户名 在这我用 zhangsan 代替
写完后 shift+:wq 保存
因为 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 目录/文件
+:对文件赋予该权限
-:对文件撤销该权限
用法:
要对该文件赋予执行的权限(2)
操作命令:
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):所有人:
用法:
对该文件所属用户赋予读写执行的权限,其他设为无权限
权限类型 读:r=4 写:w=2 执行: x=1
操作命令:
下面让我们来详细的解释一下读写执行的权限。
r (read):可以读取文件的实际内容,比如读取文本文件内的文字等。
w (write):可以编辑、增加、删除文件的内容(但不含删除该文件)。
x (execute):该文件具有可以被系统执行的权限。
版权声明: 本文为 InfoQ 作者【李浩宇/Alex】的原创文章。
原文链接:【http://xie.infoq.cn/article/ea846589365fce11019fe0e9c】。文章转载请联系作者。
评论