在Linux中,root不过也是一个用户而已,我们可以直接以root账号登陆进入系统。然而,这样操作却有很大的风险。首先。这样做没有留下以root身份执行的操作的记录。当管理员发现自己昨天夜里23:00时损坏了某项内容,但又记不起来自己当时到底改了什么时,这可就不妙了。当访问没有经过授权,而要试图找出入侵者对系统到底做了什么操作时,情况可能更糟。另外一个不利因素是以root身份登录进入系统的做法没有留下当时是谁真正做了这些工作的记录。如果有几个人都有访问root账号的权限,那么将不能区分到底是谁在什么时候使用了root账号。
基于以上原因。大多数系统禁止root在终端上以及通过网络来登陆系统,或者说除了系统控制台之外的其他任何地方都禁止root登陆。
这时我们可以使用 su: 替换用户身份
[aosin@252 ~]$ su root Password: [root@252 aosin]#
如果不带任何参数来调用su命令,会提示用户输入root的口令,然后启动一个root shell。这个shell的特权一直到shell终止(通过Ctrl+D或exit命令来终止)以前都保持有效。su不记录以root身份执行了哪些命令,但它确实会创建一条日志记录来说明是谁在什么时候变成了root。
su命令也可以替代除了root以外的其他用户身份。有时候,重现或者调试用户问题的唯一方法就是su为该用户的账号,以便能够重现发生问题的环境。
如果知道某人的口令,那么通过执行su USERNAME 就能够直接访问这个人的账号。与su到root账号的情况一样,此时也会提示用户输入USERNAME的口令。你也可以先su到root账号,然后再su到其他账号,root账号不需要提供密码就可以su到其他任何账号。
[aosin@252 ~]$ su gosin Password: [gosin@252 aosin]$
[root@252 aosin]# su gosin [gosin@252 aosin]$
最好在使用su命令时键入su的完整路径(例如,/bin/su),而不是依靠shel找到这个命令。这将在一定程度上防范已经溜入到搜索路径下的名为su的程序,它们带有想要获取口令的企图。