前段时间,实验室买了新服务器,老板也是说了不止一次要把实验室服务器给管理起来,俗话说好奇心是最好的老师。趁此机会,我学习了一下Linux的用户管理。在本地,我一般都会记录到OneNote,现在再次记录一下,方便今后查找。
前期准备
首先是要了解Linux系统的文件权限分为所有者、同组的人以及其他人,所以在新建用户的时候,要指定该用户属于哪个组或者哪些组。为什么会有哪些组呢?一般来说,一个组不就行了嘛?其实不行,我们可以这么想,在大一刚入学的时候,会有很多社团,那每个人加入社团的数量是没有限制的。这里,大一新生就代表“Ubuntu系统用户”,社团就代表“组”。到这里,应该都能理解用户和组之间的关系了。在Ubuntu系统里,需要设定一个组为主组,其余的为附属组,主组与附属组之间的区别我现在还不是很清楚,在实际使用中还没有遇到需要区别主组与附属组的情况。
介绍完基本情况后,就可以敲命令了,首先查看系统中有哪些组以及这些组包含哪些用户:(这里显示的用户指的是把该组作为附属组的用户,无法显示把该组作为主组的用户)
cat /etc/group
运行上面这个命令,就可以得到类似下图的结果:
查看组及用户
上图中的docker即代表docker组,组id是998,该组中有ubuntu这个用户,其中,ubuntu用户的附属组是docker,主组是什么这里看不到。如果想看主组,可以用下面的命令:
cat /etc/passwd
一般情况下,Ubuntu系统是没有nosu组,如果我们想要建普通用户,那么就要有一个nosu组。我第一次听到nosu组这个名字是从我室友那得知的,不过当时他认为“nosu”这个名字是自定义的,事实并非如此。为什么呢?从系统文件中就可以看出来。我们要启动nosu组的话,就得编辑一下系统文件:
vim /etc/pam.d/su
看到的界面类似于下图:
/etc/pam.d/su
如果没有经过任何修改的话,图中第23行应该是被注释掉的(或者其他不能被读取到的情况),但是这一行中出现了“nosu”这个名词,所以说明这是系统指定的组名,而不是自定义的。那么为了达到我们的目的,我们只需要改成如图所示就行。修改完上面这个文件后,我们可以再次查看group,核实下是否多了一个nosu组,如果没有的话,重启服务器再看看。
正式新建用户
准备了这么多,接下去可以正式新建用户了,建用户反而简单,如果/home目录够用的话,可以不指定新用户的/home目录:
sudo useradd -s /bin/bash -g nosu -m 用户名
其中,-g nosu代表将新用户的主组指定为nosu。如果需要指定新用户的/home目录:
sudo useradd -s /bin/bash -g nosu -d /data/account/用户名 -m 用户名
这样就把新用户的家目录改到“/data/account/用户名”下了。
然后,如果新用户需要用到docker的话,就得把新用户加到docker组。那么,好奇的同学就会问:这个docker组怎么来的呢?我一开始也有这个问题,我第一次得到结果是问的我室友,第二次,我是自己重装了Ubuntu系统,再装了docker,从而验证了一下。当遇到问题时,问别人是最快的方式,但是如果自己动手加以验证,那就更好了。
此时,还需要设置一下新用户的登录密码:
sudo passwd 用户名
至此,新用户就可以登录了。
补充
修改新用户的主组为docker:
sudo usermod -g docker 用户名
删除用户在系统文件中的记录(以及用户家目录):
sudo userdel (-r) 用户名
网友评论