这篇博文的主要内容来说说sudo。为什么会有sudo的出现呢?在linux起初,是没有这个命令,后来才把这个命令添加进去,而且现在基本上每个版本都会默认安装sudo.
原因呢?不是本来就有su命令吗,su也可以切换用户,包括切换到root用户,为什么还要引入sudo?答案就是安全。很简单,用su切换到root,需要输入root密码。同样,切换到其他用户,也需要输入密码。但是,用sudo来执行命令,包括一些root权限的命令,一样要输入密码,但是这个密码是该用户自己本身的密码,而不是其他或者root密码。
linux是一个多用户多任务操作系统,一个系统上如果多个用户都知道root账号密码,系统是非常危险;而且修改root密码后,要通知给多个人,也很麻烦。这个问题用sudo就可以轻松解决了。
如果想用其他账户来执行命令,便使用:
- sudo -u [username] [命令] -[命令参数]
其中输入的密码是该用户的密码,不是要转换的用户的密码.
sudo执行过程:
- 1.首先sudo会在/etc/sudoers文件中寻找执行该命令的用户是否在文件中;
- 2.如果在文件用,需要用户输入密码来进行验证;
- 3.如果验证通过,再执行sudo 后面的命令
从过程中知道,/etc/sudoers这个文件在执行命令的过程中起着关键作用。下面来看一下我电脑上的该文件的配置。
可以用命令visudo来修改sudo的配置文件,执行权限必须为root,也可以直接用vim /etc/sudoers编辑,效果是一样的。
下面是/etc/sudoers文件的部分内容:
- huang ALL=(ALL) NOPASSWD: ALL
- 用户账号 登录主机 = (可以变换的身份) 可以执行的命令
上面一行的解释就是:用户huang 可以在任何地方,任何主机上的用户名不用输入密码来执行任何命令.
如果账户huang想用用户test来执行命令,那么应该写成:
- huang ALL = (test) NOPASSWD:ALL
如果错写成:
则默认的是仅能进行root身份切换,执行任何命令。
如果是某个用户组的话,需要在用户组前加上一个'%':
如果不想输入密码:
- %wheel ALL = (ALL) NOPASSWD:ALL
下面的例子摘自《鸟哥的私房菜--基础篇》
- User_Alias ADMPW = vbird, dmtsai, vbird1, vbird3
- ADMPW ALL = NOPASSWD: !/usr/bin/passwd, /usr/bin/passwd [A-Za-z]*,\
- !/usr/bin/passwd root
解释:系统上有四个账号:vbird,dmtsai,vbird1,vbird3,四账号加入到sudo内的ADMPW组中, 这四个账户可以使用/usr/bin/passwd * 来修改密码,但是不能使用/usr/bin/passwd 和 /usr/bin/passwd root,因此,这四个用户可以修改用户密码,但是修改root密码.
- User_Alias DNSMASTER = vbird, dmstai
- Cmnd_Alias DNSCMD = /etc/init.d/named, /usr/bin/vim /var/named/*
- DNSMASTER ALL = DNSCMD
留作自己以后的小练习小吧,呵呵~
上面用到别名,有关别名可以参考这篇博文
阅读(1219) | 评论(0) | 转发(0) |