linux sudo与su的区别
一、 su需要输入root用户的密码,sudo只需要输入当前用户的密码。
二、 通过不同的方式切到root后,pwd目录的变化
su ; sudo su ;su root;切到root后,pwd目录不变
su - ; su - root; sudo -i 切到root后,pwd目录变成/root
三、 sudo和su的权限区别
例如给系统清除缓存的命令,echo 3 > /proc/sys/vm/drop_caches;如果用sudo执行就会提示权限不够,但是利用“sh -c”命令就可以;这是因为echo 和 > 命令在bash眼里是两条命令,但是sudo只给echo赋予了root权限,但是却没给 > 赋予权限,但是利用“sh -c”让bash将一个字串作为完整的命令来执行,这样就可以将 sudo 的影响范围扩展到整条命令。
四、 环境变量的继承问题
给普通用户zy添加了一个环境变量”gaga=I’m zy.”,通过不同的方式切到root,查看是否保留了gaga这个环境变量;
保留了gaga环境变量 |
没有保留gaga环境变量 |
su、su root、sudo -E su |
sudo su、su -、su - root、sudo -i |
“sudo -E su”当加上-E参数时,sudo -E su也是可以保留原来的环境变量的,-E参数的含义:-E, --preserve-env 在执行命令时保留用户环境。
su - 相当于创建一个新的环境(由 root 用户 ~/.bashrc 文件所设置的环境),相当于使用 root 用户正常登录(从登录屏幕登录),是login shell方式,它是先以root身份登录然后再执行别的操作;su命令在切换到 root 用户之后仍然保持旧的(或者说原始用户的)环境,读取变量的方式是non-login shell。
五、 其他
1.如果希望可以不输入密码执行sudo命令,可以将/etc/sudoer文件按照下面格式更改,
到此这篇关于linux sudo与su的区别的文章就介绍到这了,更多相关内容请搜索服务器之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持服务器之家!
原文地址:https://blog.csdn.net/clear4521/article/details/105227173
1.本站遵循行业规范,任何转载的稿件都会明确标注作者和来源;2.本站的原创文章,请转载时务必注明文章作者和来源,不尊重原创的行为我们将追究责任;3.作者投稿可能会经我们编辑修改或补充。