Ubuntu Server除了在安装的过程中会提示设置第一个用户(非root)的用户名和密码,直至安装完成都完全没有涉及到root用户的设置。root用户的密码是什么,又要如何设置root用户,对于刚刚开始使用的用户来说,比较让人困惑。
概述
这里是Ubuntu Server的官方文档关于该主题的相关章节,其解释如下:
Ubuntu开发者决定默认禁用root账号,这并不意味着root账号被删除了或是不能访问。它只是被赋予了一个难以破解的密码,因此不应直接用其登录。
相替代地,用户被鼓励使用一个名为sudo的工具在执行系统的管理任务,sudo允许被认证的用户通过他们自己的密码临时获取root的权限,而无需知道root帐户的密码。这种简单有效的方法为所有用户的行为提供了可述性,并且给予了管理员诸如一个用户给予特定权限后可以执行那些操作这样的粒度控制。
默认地,Ubuntu安装时创建的第一个用户属于”admin”组的一员,而”admin”组作为已认证的sudo用户已被添加到了/etc/sudoers文件中。
Sudo简单应用
使用创建的第一个用户(比如Bob)登录后,如果要执行需root权限的命令,比如reboot,则输入
sudo reboot
命令执行时会提示输入Bob的密码,在15分钟内有效,即在15分钟内再使用sudo命令无需重复输入密码。
如果因为某些原因需要启用root用户,需要赋予root一个密码
sudo passwd root
系统会提示输入Bob的密码,并为root设置新的密码
[sudo] password for username: (enter your own password)
Enter new UNIX password: (enter a new password for root)
Retype new UNIX password: (repeat new password for root)
passwd: password updated successfully
使用完毕后,应该立即锁定root用户。
sudo passwd -l root
如果你想要让其他的用户通过sudo获得完整的root权限,你只需要简单地将其加入到admin用户组中即可。比如新用户Sam
sudo adduser sam
sudo adduser sam admin
Sudo的特点
Redhat发行版的Linux中(Redhat,RHEL,Fedora)默认使用的是su,而Debian发行版的Linux中(Debian,Ubuntu)则默认启用了sudo。su为切换用户,在执行命令时实际上是切换为root用户运行,切换时需要输入root的密码。而启用sudo,默认将root用户锁定,密码未知,执行相应命令时输入当前用户的密码,由sudo用户判断是否有相应权限。此外
1.sudo能够限制指定用户在指定主机上运行某些命令。
2.sudo可以提供日志,忠实地记录每个用户使用sudo做了些什么,并且能将日志传到中心主机或者日志服务器。
3.sudo为系统管理员提供配置文件,允许系统管理员集中地管理用户的使用权限和使用的主机。它默认的存放位置是/etc/sudoers。
4.sudo使用时间戳文件来完成类似“检票”的系统。当用户执行sudo并且输入密码后,用户获得了一张默认存活期为15分钟的“入场券”(默认值可以在编译的时候改变)。超时以后,用户必须重新输入密码。
以下是一些个人的总结
安全角度:sudo默认将root锁定,无论是本地、远程,SSH或桌面都无法登录,想要字典暴力破解root基本是不可能,想要破解只能从其他用户下手。首先得知道用户名,其次破解了该用户也未必有足够的权限。
用户角度:执行命令时需要输入密码以提醒用户再次确认,同时输入密码有一定的有效期,避免了以root登录可以在任何时候做任何事的情况。
管理角度:可以为不同的用户指定不同的权限(要实现这个还需要进一步学习sudo的配置),而且还可以通过日志记录用户的操作。