写在前面
在系统运维过程中,为了安全起见,我们一般都不会直接使用root账号来登录管理服务器,但是在日常安装软件、删除软件、更新系统等操作时都需要取得root权限才能执行相应操作。
"sudo"就是这样一种命令:可以用来以其他已经授权的身份来执行命令,预设的身份为root。在/etc/sudoers中设置了可执行sudo指令的用户。若其未经授权的用户企图使用sudo,则会发出警告的邮件给管理员。用户使用sudo时,如果没有设置免密就必须先输入密码,之后有5分钟的默认有效期限,超过期限则必须再次重新输入密码。
实用小技巧
1) !! 和 ! -1
用法:想要允许授权的普通用户作为root用户来执行一个命令,但是刚刚执行命令的时候却忘记在命令前加上"sudo"了,该怎麽办?
不要担心,我们可以使用"sudo !!" 结合命令历史来执行你刚刚想要执行的命令。
参数"!!“和”! -1"作用一样,都是允许授权的普通用户作为root用户来执行我们刚才输入的命令。当然,以此类推,我们可以使用"sudo ! -2"来执行倒数第二个命令哦!
2) -u <用户名>
注意: -u<用户>以指定的用户作为新的身份。若不加上此参数,则预设以root作为新的身份;
用法:我们可以使用"sudo -u username -i" 来指定一个用户登陆shell。
提示,username换成你想要使用的其他用户名即可,在此过程中需要输入username的授权密码。
3) sudo输出重定向
[yuki@myhost ~]$ cd /home/script/
[yuki@myhost script]$ ll
总用量 1
-rw-r--r--. 1 root root 0 5月 21 13:45 test.sh
[yuki@myhost script]$ cat test.sh
[yuki@myhost script]$ echo "我是新添加的内容" > /home/script/test.sh
-bash: /home/script/test.sh: 权限不够
[yuki@myhost script]$ sudo echo "我是新添加的内容" | sudo tee /home/script/test.sh
我是新添加的内容
[yuki@myhost script]$ ll
总用量 2
-rw-r--r--. 1 root root 25 5月 21 13:50 test.sh
[yuki@myhost script]$ cat test.sh
我是新添加的内容
[yuki@myhost script]$ sudo echo "我是第二次新添加的内容" | sudo tee -a /home/script/test.sh
我是第二次新添加的内容
[yuki@myhost script]$ cat test.sh
我是新添加的内容
我是第二次新添加的内容
[yuki@myhost script]$ sudo echo "我是第先清除再添加的内容..." | sudo tee /home/script/test.sh
我是第先清除再添加的内容...
[yuki@myhost script]$ cat test.sh
我是第先清除再添加的内容...
4) :w !sudo tee %
:w !sudo tee % 可用在vi/vim编辑器中。
我们经常会遇到当前登录用户没有某个文件的w(write)权限,编辑文件后保存时先输入这个然后就不用担心没有修改的权限了。