sudo 临时切换用户和环境变量的传递

sudo命令可让用户以其他的身份来执行指定的指令,预设的身份为root。

在 /etc/sudoers 中设置了可执行sudo指令的用户。若其未经授权的用户企图使用sudo,则会发出警告的邮件给管理员。

用户使用sudo时,必须先输入密码,之后有5分钟的有效期限,超过期限则必须重新输入密码。  

1、sudo -i 

sudo -i 这是临时赋予你root的权限
sudo -i 和 su 近似,只是有root权限而已,并不是把当前用户改成root
用了sudo -i切换到root时,输入命令who am i 还是显示普通用户

cybercarematoMacBook-Pro:~ cybercare$ sudo -i
Password:
cybercarematoMacBook-Pro:~ root# who am i
cybercare ttys001 May 17 09:30
cybercarematoMacBook-Pro:~ root#

http://baike.baidu.com/view/1138183.htm

2、sudo 环境变量的加载

当前用户的环境变量不会应用到sudo启动的程序,除非使用-E选项:

  sudo使一般用户不需要知道超级用户的密码即可获得权限。

  sudo程序本身就是一个设置了SUID位的二进制文件。我们可以检查一下它的权限:

  $ls -l /usr/bin/sudo
  ---s--x--x 2 root root 106832 02-12 17:41 /usr/bin/sudo

  它的所有者是root,所以每个用户都可以像root那样执行该程序。设置了SUID的程序在运行时可以给使用者以所有者的EUID。这也是为什么设置了SUID的程序必须小心编写。但是设置一个命令文件的SUID 和用sudo来运行它是不同的概念,它们起着不同的作用。

  首先超级用户将普通用户的名字、可以执行的特定命令、按照哪种用户或用户组的身份执行等信息,登记在特殊的文件中(通常是/etc/sudoers),即完成对该用户的授权(此时该用户称为“sudoer”);

  在一般用户需要取得特殊权限时,其可在命令前加上“sudo”,此时sudo将会询问该用户自己的密码(以确认终端机前的是该用户本人),回答后系统即会将该命令的进程以超级用户的权限运行。

  之后的一段时间内(默认为5分钟,可在/etc/sudoers自定义),使用sudo不需要再次输入密码。

https://wiki.archlinux.org/index.php/Sudo_(%E7%AE%80%E4%BD%93%E4%B8%AD%E6%96%87)#.E6.89.AF.E6.B7.A1

http://my.oschina.net/alphajay/blog/28811

http://bbs.chinaunix.net/thread-1065619-1-1.html

http://bbs.csdn.net/topics/300067894

原文地址:https://www.cnblogs.com/ghj1976/p/3083935.html