分类: LINUX
2008-04-24 21:54:08
五、运行Sudo
我们已经配置sudo,让它给予用户bob以超级用户权限来执行ifconfig、kill和ls命令。当bob 要运行这些命令时,他必须键入sudo 命令,并输入其口令。
⒈ 首先作为用户bob登录。
⒉ 找出bob可以作为root用户执行的命令,为此,键入以下命令:
sudo –l |
⒊ 如果第一次以用户bob的身份运行sudo 的话,会给出一个警告:
We trust you have received the usual lecture from the local System Administrator. It usually boils down to these three things: #1) Respect the privacy of others. #2) Think before you type #3) With great power comes great responsibility |
⒋ 提示您输入口令,注意,不要输入root用户的口令,而是bob的口令。
Password: |
⒌ 将列出允许bob在这个主机上运行的各个命令,如下所示:
User bob may run the following commands on this host: (root) /sbin/ifconfig |
⒍ 运行ifconfig 来测试我们sudo的配置情况。如果不用sudo 的话,该选项需要root权限。命令如下所示:
/sbin/ifconfig eth0 down |
该命令无效,因为bob无权停用系统的连接设备。
⒎ 为了停用该连接设备,bob 必须使用sudo ,命令如下所示:
sudo /sbin/ifconfig eth0 down |
这次将会成功执行。请注意,如果bob 的票据已经过期(默认有效期为五分钟)的话,sudo会要求输入bob的口令。 如果我们在票据的有效期内运行这个命令的话,系统不会提示我们键入口令。
⒏ 用以下命令来重新激活该连接设备:
sudo /sbin/ifconfig eth0 up |
⒐ 然后,利用kill命令重新启动httpd 进程,具体如下所示:
ps aux | grep httpd |
⒑ 从显示的列表中选择一个Apache PID ;如果没有安装Apache 的话,也可以选择启动其他的服务进程。命令如下:
kill –HUP [PID NUMBER] |
⒒ 它是不会让你重启httpd进程的,因为你不是root用户。所以会收到如下信息:
bash: kill: (PID NUMBER) – Not owner |
⒓ 现在,我们改为使用sudo作为root用户来运行该命令,具体如下所示:
sudo kill –HUP (PID NUMBER) |
这回成功了。
⒔ 接下来,我们以用户bob的身份利用ls 命令来显示root目录。命令如下所示:
ls /root |
结果我们被拒绝了,因为我们不是root用户。
⒕ 好了,现在我们使用sudo作为root用户执行该命令,看看结果如何:
sudo ls /root |
看到了吧,我们的请求被执行了。root用户的目录已经列出来了。
⒖ 为了使bob的时间戳过期,可以通过sudo –k命令来达此目的。这样一来,bob 下一次使用sudo时就必须再次输入口令。