菜鸟笔记
提升您的技术认知

Linux root用户与一般用户的区别

root用户可以在Linux系统上做任何操作,权限没有收到任何限制。一般需要root权限的任务包括:移动文件或者文件夹in或者out of 系统目录,复制文件到系统目录,赋予或者收回用户权限,系统维护和安装一些应用程序,例如:安装RPM格式的软件通常需要root权限,因为需要写一些信息到系统目录。还有一个需要注意的就是,对于小于1024端口的知名端口,只有root用户才可以有权限侦听,如果应用程序需要侦听小于1024的端口,可以采用临时提权,侦听端口之后,再收回权限的方式进行。如果一直使用root运行应用程序,将会很危险,Linux的sendmail就曾经出现过使用root运行sendmail因为要侦听25端口,结果sendmail程序出问题之后,可以通过这个安全问题控制整台服务器,因为它是用root用户启的。

一个一般用户是根据他所在的组的权限指定的一些操作,但是,一般来说,会拒绝使用一些会影响他的home目录之外的命令。用户可以被允许使用sudo命令,临时赋予root权限。Unix系列的系统默认是组织一般用户访问系统的关键部分和其他用户的文件和文件夹。

关于sudo之后可以执行哪些命令,可以通过编辑 /etc/sudoers文件:

要为某个用户提供特权,使其可以使用sudo执行所有命令,在配置文件中加入:

用户名   ALL=(ALL) ALL

只为用户启用部分特权:

用户名 主机名=/sbin/halt,/sbin/poweroff,/sbin/reboot

还可以通过/etc/sudoers设置超时机制等。

/etc/sudoers文件默认是只有root用户才可以修改和访问的,如果不小心修改了/etc/sudoers的访问权限,要记住立刻恢复。

总之,对于一般的应用程序来说,无论有多好冠冕堂皇的理由,都要禁止使用root用户启动,即使是放在公司内部或者数据中心内部的服务器也是如此,因为,你不能保证你的程序不会出问题。所以,为了安全起见,最好还是创建一个应用程序专用的帐号,并且赋予这个帐号应用程序需要的权限即可(即最小权限),这样即使程序出了问题,攻击者对整台机器的控制也是有限的。