gnome或者类似的桌面环境都自带了一个用户添加和管理图形程序,但本着用图形界面就是反人类的原则,我们要用cli(command line interface)来添加用户。
Linux系统如何添加用户这个问题到网上问一下或者搜一下,很多人可能会说useradd,实际这是不对的。useradd只会添加一个用户,没有创建它的主目录,除了添加一个新用户之外什么都没有。这个用户甚至不能登录,因为没有密码。正确的做法是man page里说的,adduser,这个命令实际是一个perl脚本,是useradd等类似底层命令的更友好的前端,它会用交互性的方式建立新用户,使用它可以指定新用户的家目录,登录密码,是否加密主目录等等,它会:
1.建立一个新目录作为家目录
2.建立同名新组
3.把用户的主要组设为该组(除非命令选项覆盖以上默认动作,比如–disall-homdirecry之类)
4.从/etc/SKEL目录下拷贝文件到家目录,完成初始化
5.建立新用户的密码
6.如果其存在的话,还会执行一个脚本。
可以说adduser是一个全能的命令。尤其是最后会执行自定义脚本,让他差不多无所不能。要注意adduser有一个–system选项,说是建立系统用户,我还以为这个是建立可以sudo的用户,结果这货只是建立了uid在100-1000的普通用户,而且shell是/bin/false组是nogroup。说到底它建立的是类似syslog的东西。
然后是很多人关心的sudo问题,实际上ubuntu系列里没有disable掉root用户,你用su – root依旧可以切换到root,只不过系统的图形登录系统默认没有显示root而已。而sudo实际上是一个程序,一个守护进程。它的配置文件就是/etc/sudoers,这个认证系统实际和用户系统是两回事,而且它的能力也远比让用户获得root权限要强大,要修改sudoers文件,不推荐自己修改,要用visudo命令修改,它会打开当前系统默认的文本编辑器编辑这个文件,比如我的系统上打开的是nano,退出时他会首先检查配置文件格式,确定无误才保存,要保险一点。
实际上你在安装时建立的用户并没有写在sudoers文件中,sudoers只规定sudo组具有全部权限,然后把最初用户添加到sudo组中,所以你同样只要把新用户添加进sudo组就行了。如果有更进一步需要,比如让特定用户只具有运行特定程序的权利,或者更改sudo授权持续的时间,或者让用户运行sudo时输入root密码而非自己密码,才需要改写sudoers配置文件。