|
五、运行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 (root) /bin/lill (root) /bin/ls
⒍ 运行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时就必须再次输入口令。
六、无需口令的情形
有些情况下,没有必要每次运行sudo时都得输入口令,因为该用户已经登录到系统上了。所以,sudo 为我们提供了一种有效的方法来避免这种单调乏味的任务,办法就是在sudoers 文件中加入NOPASSWD 标签。
⒈ 为了在sudoers文件中取消对口令的要求,请登录为root 用户,然后键入以下命令:
visudo ⒉ Sudoers 文件会在vi 中打开。修改bob 的用户权限规定,如下所示:
bob your-hostname = NOPASSWD: /sbin/ifconfig, /bin/kill, /bin/ls
⒊ 按ESC键,然后键入:wq 来写入并退出文件:
⒋ 登录为bob ,用下列命令来停用连接设备:
sudo /sbin/ifconfig eth0 down
这次不会要求我们输入口令了,因为该命令将作为root用户来运行。
⒌ 用以下命令来重新激活该连接设备:
sudo /sbin/ifconfig eth0 up 七、Sudo的日志功能
前面已经说过,sudo能够记录各用户都运行了哪些命令。但是,这些需要对sudo 和syslogd 进行适当的配置。为此,我们首先要在/var/log目录中创建一个日志文件,还必须对syslog.conf进行相应的配置,让它记录sudo 命令。配置sudo 日志功能的具体步骤如下所示:
⒈ 登录为root 用户,然后在/var/log/目录下创建一个sudo 日志文件。具体命令如下所示:
touch /var/log/sudo
⒉ 之后,您必须在syslog.conf 文件中添加相应的行来命令它将记录放到sudo的日志文件。我们可以用下列命令来打开syslog.conf:
vi /etc/syslog.conf
⒊ 将下面一行命令放到syslog.conf文件的末尾。操作时,我们可以通过按下i键来插入文字。要注意,下面的空格必须使用TAB 键,而不是空格键。
local2.debug /var/log/sudo
⒋ 这个syslog.conf条目会将所有成功和不成功的sudo 命令都记录到文件/var/log/sudo中。您还可以通过用网络主机代替本机目录来让日志记录到一个网络主机上。syslog.conf文件如图2所示。
图2 编辑syslog.conf文件进行日志记录
⒌ 按下ESC写入并退出文件,然后键入以下命令:
:wq
⒍ 因为syslog.conf文件已经修改,所以必须重新启动syslogd 。要向syslogd 发送HUP信号,必须首先知道syslogd 进程标识符,为此键入以下命令来获取syslogd PID :
ps aux grep syslogd
第二栏表示显示PID号码,最后一栏表示显示PID 对应的进程。
⒎ 要重启syslogd ,从上面命令输出中找出syslogdPID ,然后键入以下命令:
kill –HUP [PID NUMBER] ⒏ 因为我们想为用户bob建立日志条目,所以作为用户bob登录。
⒐ 以用户bob的身份登录后,键入以下ifconfig命令:
sudo –l sudo /sbin/ifconfig eth0 down sudo /sbin/ifconfig eth0 up
⒑ 利用kill 命令重新启动httpd进程(或者其它进程),命令如下所示:
ps aux grep httpd
⒒ 从以上命令的输出中找出Apache (httpd )PID ,并输入下列命令:
sudo kill –HUP [PID NUMBER]
⒓ 现在,将以用户bob的身份列出root用户目录,具体命令如下所示:
sudo ls /root
⒔ 作为root 用户登录,查看一下sudo 日志文件。bob 输入的全部sudo 命令都被记下来了,如下所示:
May 18 21:10:18 localhost sudo: bob: TTY=pts/1;PWD=/home/bob;USER=root; COMMAND=list May 18 21:10:28 localhost sudo: bob: TTY=pts/1;PWD=/home/bob;USER=root; COMMAND=/sbin/ifconfig eth0 down May 18 21:10:50 localhost sudo: bob: TTY=pts/1;PWD=/home/bob;USER=root; COMMAND=/sbin/ifconfig eth0 up May 18 21:10:60 localhost sudo: bob: TTY=pts/1;PWD=/home/bob;USER=root; COMMAND=/bin/ls /root
⒕ 您可以记录任何root命令,方法很简单,只要在这些命令之前加上sudo 即可。例如,要记录下所有作为root使用的命令,可以像下面这样做:
sudo useradd susan sudo passwd susan sudo vi /hosts
⒖ 要想访问和查看sudo 日志文件,我们可以使用下列命令:
sudo cat /var/log/sudo
Root用户的所有输入都将记录在案,包括刚刚输入的cat 命令。如下所示:
May 18 21:10:18 localhost sudo: bob: TTY=pts/1;PWD=/home/bob;USER=root; COMMAND=list May 18 21:10:28 localhost sudo: bob: TTY=pts/1;PWD=/home/bob;USER=root; COMMAND=/sbin/ifconfig eth0 down May 18 21:10:50 localhost sudo: bob: TTY=pts/1;PWD=/home/bob;USER=root; COMMAND=/sbin/ifconfig eth0 up May 18 21:10:60 localhost sudo: bob: TTY=pts/1;PWD=/home/bob;USER=root; COMMAND=/bin/ls /root May 18 21:30:22 localhost sudo: root: TTY=pts/1;PWD=/root;USER=root; COMMAND=/usr/sbin/useradd susan May 18 21:30:56 localhost sudo: root: TTY=pts/1;PWD=/root;USER=root; COMMAND=/usr/bin/passwd susan May 18 21:31:18 localhost sudo: root: TTY=pts/1;PWD=/root;USER=root; COMMAND=/bin/vi /hosts May 18 21:31:30 localhost sudo: root: TTY=pts/1;PWD=/root;USER=root; COMMAND=/bin/vi /etc/hosts May 18 21:32:11 localhost sudo: root: TTY=pts/1;PWD=/root;USER=root; COMMAND=/bin/cat /var/log/sudo
如您所见,sudo 对于控制和审计root用户的访问权限是极其有益的。它使得系统管理员可以将root用户的系统管理任务分配给其他人,而无需给予他们root口令。管理员也可以根据每个用户实际所需的root访问权限来定制系统访问权限,从而达到权限最小化的目标。 八、结束语
Sudo是一款实用的安全管理软件,通过它对超级用户权限进行有效的控制和审计能有效的提高系统的安全性。本文主要讨论了sudo的sudoers文件的用户规定方面,如果您想了解其他方面的话,www.gratisoft.us/sudo/man/sudo.html上的sudo man手册会对您有所帮助。
上一页 [1] [2]
|