我的Linux学习笔记·用户和组(2)
因为我检查不够仔细,第一次发的文章中出现了小错误,考虑了一下还是撤回了。抱歉给大家带来不便,敬请谅解。
上周的内容是用户及其相关的文件和命令,这周将继续上周的内容,主要介绍组以及如何手动创建一个新用户。
用户组
用户组是用户的集合。之前提到文件可以根据属主,属组和其他设置不同的权限,从而限制访问。有时我们想要授权某个用户对某个文件的访问权限,可以通过修改文件的属主来实现,但如果我们想让多个用户都拥有文件的访问权限该怎么办呢?组的好处就在这里,我们可以建立一个用户组,将这些用户加入到组中,然后设置文件的属组权限,这样就可以批量修改该组用户对该文件的访问权限了。
/etc/group
上周提到用户管理的两个重要文件:/etc/passwd和/etc/shadow。用户组也有重要的配置文件,即/etc/group,文件的内容是用户组的相关信息。
查看一下该文件的部分内容:
head /etc/group
文件由“:”分割成4个字段:
GROUP NAME:组名,用户组的名称;
PASSWD:组密码,密码存放在/etc/gshadow中,此处以x代替;
GID:组标识号;
USER LIST:用户列表,即属于该组的用户,多个用户间以逗号分隔。
组管理命令
Linux用户组管理常用的命令主要有以下三个:groupadd,groupmod,groupdel。
groupadd:创建用户组。
格式:
groupadd [options] GROUPNAME
选项:
-g: 指定GID;
-r: 添加系统组;
-p:指定组密码;
举例:
创建一个test组,GID指定为1002:
groupadd -g 1002 test
groupmod: 修改用户组信息。
格式:
groupmod [options] GROUPNAME
选项:
-g: 修改GID;
-n: 修改组名;
举例:
把刚才新建的test组的GID修改为1003:
groupmod –g 1003 test
把test组的组名修改为test1
groupmod -n test1 test
groupdel: 删除组。
格式:
groupdel GROUPNAME
举例:
删除test1组:
groupdel test1
手动创建新用户
通过以上内容,我们已经了解了用户,组以及和它们相关的文件,我们可以通过一些命令实现用户的管理,如通过useradd添加新用户。其实,我们也可以通过手动更改系统文件来实现新用户的添加。不过在这之前,我们还得先介绍一下/etc/skel目录。
/etc/skel
skel是skeleton的缩写,即骨架的意思。我们看一下这个目录下都有啥。
ll -a /etc/skel
是我们熟悉的.bashrc,.bash_profile等文件,每个用户的家目录下都有这些文件。每当我们使用useradd新建一个用户,/etc/skel下的所有文件都会被原封不动地拷贝到用户的家目录下。
手动创建新用户test
手动创建新用户test;UID为5000;GID为5000;密码为test123;
1. 更改文件/etc/passwd;
vi /etc/passwd
在最后一行添加:
test:x:5000:5000::/home/test:/bin/bash
保存;
2. 更改文件/etc/group;
vi /etc/group
在最后一行添加:
test:x:5000:
保存;
3. 更改文件/etc/shadow;
vi /etc/shadow
最后一行添加:
test:!!:17060:0:99999:7:::
密码暂时为空,后面添加,保存;
4. 创建家目录并更改属主,属组和权限等;
将骨架文件目录拷贝到/home下重命名为test;
cp -r /etc/skel/ /home/test
更改test文件夹及其内部文件的属主和属组;
chown -R test:test /home/test/
设定权限(属组和其他用户权限为0);
chmod -R go= test/
使用ll -a命令查看一下:
各种信息都更改成功。
5. 添加密码;
使用openssl,加盐为abcd1234;
openssl passwd -1 -salt abcd1234
输入密码,回车,即返回一串字符,复制到/etc/shadow中刚才预留的密码位置(代替两个!!)即可。
6. 登陆验证;
一切正常。至此,我们的新用户手动创建成功。
Tips:
更改/etc/shadow选项时,不要忘记添加密码上次更改时间(我因为不小心忘记添加,在root下可以su进去,但是登录显示认证失败)。
参考资料:
《马哥Linux》