本文记录Linux系统用户、组和相关设置。
用户和用户组 {#用户和用户组}
- 在
/etc/group
存储当前系统中的用户组信息
注意:
-
当该组内只有一个用户,并且用户名和组名相同时,在组列表中,包含用户一列可以为空
-
系统中root分组的组编号一定为0
-
组号1~499为系统预留的组编号,一般是预留给系统安装的软件或者服务的编号,越早安装的软件或者服务的组编号约早。用户手动创建的用户组编号从500开始
-
组密码占位符,无一例外,全部用x表示
- 在
/etc/gshadow
存储当前系统中用户组的密码信息
注意:
-
如果组密码处为"*" "!"或者为空时候,则该组没有密码
-
如果组管理者为空,则表示该组内所有成员都可以管理该组
- 在
/ect/passwd
存储当前系统中所有的用户信息
在linux中,超级管理员root的用户编号一定为0
- 在
/ect/shadow
存储当前系统中所有用户的密码信息
密码是一个单向加密过的字符串
拥有者(user),拥有组(group),其他人(other) {#拥有者(user),拥有组(group),其他人(other)}
-
由于Linux是一个多人多任务的系统,因此经常会出现同一台机器同时有多个人进行操作,为了考虑每个人的隐私权以及每个人喜好的工作环境,所以文件的权限归属就至关重要。
-
为了保障系统的安全性和文件的隐私性,一个文件针对不同权限的账户有着不同的权限
- 文件权限是由一个字符串所表示,其所代表的含义为
- 文档类型有如下表示方法:
d
目录,例如上表档名为『.gconf』的那一行-
文档,例如上表档名为『install.log』那一行l
连结档(link file)b
装置文件里面的可供储存的接口设备(可随机存取装置)c
装置文件里面的串行端口设备,例如键盘、鼠标(一次性读取装置)。
- 权限由rwx三个字幕表示,分别表示为可读、可写、可执行,如果没有该权限,则用" - "表示,对于目录来说,必须有x权限,否则无法读取目录内容
- 如果文件名前面有" . ",则表示这个文档或目录是隐藏的
相关命令 {#相关命令}
查看用户信息 {#查看用户信息}
我当前的命令输出,可以查看用户 id 、组信息:
创建用户 {#创建用户}
该命令执行后
会在
/etc/passwd
文件中添加xxx用户的信息会在
/etc/group
文件中添加一个名为xxx的用户组信息
- useradd可以使用的参数包含:
| 参数 | 描述 | 示例 | |----|--------------|-----------------------------------------------------------------------------------------| | -d | 设置该用户的home目录 | useradd -d /home/helloworld hello //新建hello用户,并且将其home目录设置为/home/helloworld | | -u | 设置其userid | useradd -u 668 hello //新建一个hello用户,将他的id设置为668 | | -g | 设置其主组 | useradd -g root hello //新建一个hello用户,并将其假如root组 | | -m | 生成home目录的文件夹 | useradd -m hello //新建一个hello用户,并且在默认位置申城一个hello文件夹(/home/hello),并且将/etc/skel下的文件复制到该目录下 |
- 正常使用时建议加入
-m
参数
随后需要指定shell,不然不便于终端操作
- 如需要额外指定
home
以外的目录作为家目录
修改用户信息 {#修改用户信息}
usermod
命令
| 参数 | 描述 | 示例 | |----|--------------------|-----------------------------------------------------------------------------------------| | -l | 修改新用户名 | usermod -l helloworld hello 将hello用户名改为helloworld,但其home目录不改变 | | -u | 修改用户的userid | usermod -u 888 hello 将hello的userid改为888 | | -d | 修改用户的home目录 | usermod -d /home/new_home hello 将hello用户的家目录改为/home/new_home | | -g | 修改用户的主用户组 | usermod -g anotherg hello 将hello用户的组改为anotherg | | -G | 将现有用户添加到辅助组(可以是多个) | usermod [-G] [[GroupName1,GroupName2]] [UserName] / usermod -a -G mygroup user1 | | -L | 锁定用户,使其不能登录 | usermod -L hello 锁定hello | | -U | 解除锁定 | usermod -U hello 解除锁定hello | | -a | 添加 不修改之前的组 | usermod -aG ssh hello 将hello用户加入到ssh组内,不改变其他组 |
gpasswd
命令
gpasswd
命令用于管理/etc/group
和/etc/gshadow
。每个组都可以有管理员、成员和密码。
| 参数 | 描述 | 示例 |
|----|------------------|----------------------------------------------------------------------|
| -M | 将现有用户添加到次要组或者附加组 | gpasswd -M user1 mygroup 把 user1
添加到 mygroup
中 |
| -M | 添加多个用户到次要组或附加组中 | gpasswd -M user2,user3 mygroup1 把 user2
和 user3
添加到 mygroup1
中 |
| -d | 从组中删除一个用户 | gpasswd -d user1 mygroup 从 mygroup
中删除 user1
|
删除用户 {#删除用户}
| 参数 | 描述 | 示例 | |----|--------------------|-------------------------------| | -r | 删除用户的同时将其home目录也删掉 | userdel -r hello 将hello用户连根删掉 |
创建用户组 {#创建用户组}
修改用户组 {#修改用户组}
查看组内成员 {#查看组内成员}
删除用户组 {#删除用户组}
添加管理员权限 {#添加管理员权限}
为新建用户 user_name
添加管理员权限,需要将其添加到 sudoers
添加一行
或者将用户添加到 sudo 组内
改变文档(目录)的所有者(所有组) {#改变文档(目录)的所有者(所有组)}
-
改变文档所有者 - chown命令(change owner),可使用参数 -R使得其子目录也同时修改
-
改编文档所有组 - chgrp命令 (change group),可使用参数 -R使得其子目录也同时修改
-
也可以使用
来同时修改文档或目录的拥有者和所在组
修改文档的执行权限 {#修改文档的执行权限}
- 可以使用如下方法直接设置文件的权限
-
直接设置代表权限的数字
-
给文件添加或减去某些权限
| 命令 | 描述 | |---------------|--------------------------| | chmod u+w 文件名 | 给user用户加上w权限 | | chmod g-r 文件名 | 将group中的r权限去掉 | | chmod a+x 文件名 | 给user、group、other全部加上x权限 |
错误记录 {#错误记录}
用户登录报错 {#用户登录报错}
- 登录时报错:
-
错误原因:
添加用户时没有授权对应的目录,仅仅执行了
useradd user
而没有授权对应的家目录 -
直接解决办法如下(执行如下命令,以后就登录到终端上就不会出现上面的错误信息):
参考资料 {#参考资料}
- https://blog.csdn.net/andyzhaojianhui/article/details/79864906
- https://www.cnblogs.com/mouseleo/p/11867107.html
- https://www.cnblogs.com/youcong/p/11070351.html
文章链接:
https://www.zywvvd.com/notes/system/linux/user-group/user-group/