linux 用户和用户组
Linux 是多用户多任务操作系统,换句话说,Linux 系统支持多个用户在同一时间内登陆,不同用户可以执行不同的任务,并且互不影响。
不同用户具有不问的权限,毎个用户在权限允许的范围内完成不间的任务,Linux 正是通过这种权限的划分与管理,实现了多用户多任务的运行机制。
因此,如果要使用 Linux 系统的资源,就必须向系统管理员申请一个账户,然后通过这个账户进入系统(账户和用户是一个概念)。通过建立不同属性的用户,一方面可以合理地利用和控制系统资源,另一方面也可以帮助用户组织文件,提供对用户文件的安全性保护。
每个用户都有唯一的用户名和密码。在登录系统时,只有正确输入用户名和密码,才能进入系统和自己的主目录。
用户组是具有相同特征用户的逻辑集合。简单的理解,有时我们需要让多个用户具有相同的权限,比如查看、修改某一个文件的权限,一种方法是分别对多个用户进行文件访问授权,如果有 10 个用户的话,就需要授权 10 次,那如果有 100、1000 甚至更多的用户呢?
显然,这种方法不太合理。最好的方式是建立一个组,让这个组具有查看、修改此文件的权限,然后将所有需要访问此文件的用户放入这个组中。那么,所有用户就具有了和组一样的权限,这就是用户组。
将用户分组是 Linux 系统中对用户进行管理及控制访问权限的一种手段,通过定义用户组,很多程序上简化了对用户的管理工作。
关于用户和用户组的命令:
groupmems 更改和查看组成员
usermod 修改用户
groupadd 创建组
groupdel 删除组
groupmod 修改组
格式:[root@localhost ~]#useradd [选项] 用户名
选项 | 含义 |
---|---|
-u UID | 手工指定用户的 UID,注意 UID 的范围(不要小于 500)。 |
-d 主目录 | 手工指定用户的主目录。主目录必须写绝对路径,而且如果需要手工指定主目录,则一定要注意权限; |
-c 用户说明 | 手工指定/etc/passwd文件中各用户信息中第 5 个字段的描述性内容,可随意配置; |
-g 组名 | 手工指定用户的初始组。一般以和用户名相同的组作为用户的初始组,在创建用户时会默认建立初始组。一旦手动指定,则系统将不会在创建此默认的初始组目录。 |
-G 组名 | 指定用户的附加组。我们把用户加入其他组,一般都使用附加组; |
-s shell | 手工指定用户的登录 Shell,默认是 /bin/bash; |
-e 曰期 | 指定用户的失效曰期,格式为 "YYYY-MM-DD"。也就是 /etc/shadow 文件的第八个字段; |
-o | 允许创建的用户的 UID 相同。例如,执行 "useradd -u 0 -o usertest" 命令建立用户 usertest,它的 UID 和 root 用户的 UID 相同,都是 0; |
-m | 建立用户时强制建立用户的家目录。在建立系统用户时,该选项是默认的; |
-r | 创建系统用户,也就是 UID 在 1~499 之间,供系统程序使用的用户。由于系统用户主要用于运行系统所需服务的权限配置,因此系统用户的创建默认不会创建主目录。 |
格式:[root@localhost ~]# userdel -r 用户名
-r 选项表示在删除用户的同时删除用户的家目录。
*
比如用userdel 删除用户时,会报错
user hadoop is currently used by process 2994
意思是说这个用户正在被进程2994占用,并且及时被删除之后还是在/home的目录下找到这个用户名 进而无法创建这个用户了 需要做到一下几步
1.先用rm -rf 命令把当前/home 目录下的用户名删除
2.用userdel +用户名删除 会报出上面的错误
3.用userdel -f 命令强制删除用户名
4.再用useradd 创建用户就ok了
————————————————
版权声明:本文为CSDN博主「吕芃良」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/lvpengliangfsdf/article/details/103639616
groupmems:更改和查看组成员
格式:groupmems [选项] [动作]
选项:
-g, --group groupname 更改为指定组 (只有root)
-R, --root CHROOT_DIR directory to chroot into (暂未涉及)
动作:
-a, --add username 指定用户加入组
-d, --delete username 从组中删除用户
-p, --purge 从组中清除所有成员
-l, --list 显示组成员列表
-h, --help 查看帮助
例:
添加g用户到G组
groupmems -a g -g G
将用户g从G组删除
groupmems -d g -g G
显示G组中的用户
groupmems -g A -l
格式:[root@localhost ~]#usermod [选项] 用户名
选项:
- -c 用户说明:修改用户的说明信息,即修改 /etc/passwd 文件目标用户信息的第 5 个字段;
- -d 主目录:修改用户的主目录,即修改 /etc/passwd 文件中目标用户信息的第 6 个字段,需要注意的是,主目录必须写绝对路径;
- -e 日期:修改用户的失效曰期,格式为 "YYYY-MM-DD",即修改 /etc/shadow 文件目标用户密码信息的第 8 个字段;
- -g 组名:修改用户的初始组,即修改 /etc/passwd 文件目标用户信息的第 4 个字段(GID);
- -u UID:修改用户的UID,即修改 /etc/passwd 文件目标用户信息的第 3 个字段(UID);
- -G 组名:修改用户的附加组,其实就是把用户加入其他用户组,即修改 /etc/group 文件;
- -l 用户名:修改用户名称;
- -L:临时锁定用户(Lock);
- -U:解锁用户(Unlock),和 -L 对应;
- -s shell:修改用户的登录 Shell,默认是 /bin/bash;
格式:[root@localhost ~]# groupadd [选项] 组名
选项:
- -g GID:指定组 ID;
- -r:创建系统群组;
格式:[root@localhost ~]# groupmod [选现] 组名
选项:
- -g GID:修改组 ID;
- -n 新组名:修改组名;
格式:[root@localhost ~]#groupdel 组名
格式:[root@localhost ~]#passwd [选项] 用户名
选项:
- -S:查询用户密码的状态,也就是 /etc/shadow 文件中此用户密码的内容。仅 root 用户可用;
- -l:暂时锁定用户,该选项会在 /etc/shadow 文件中指定用户的加密密码串前添加 "!",使密码失效。仅 root 用户可用;
- -u:解锁用户,和 -l 选项相对应,也是只能 root 用户使用;
- --stdin:可以将通过管道符输出的数据作为用户的密码。主要在批量添加用户时使用;
- -n 天数:设置该用户修改密码后,多长时间不能再次修改密码,也就是修改 /etc/shadow 文件中各行密码的第 4 个字段;
- -x 天数:设置该用户的密码有效期,对应 /etc/shadow 文件中各行密码的第 5 个字段;
- -w 天数:设置用户密码过期前的警告天数,对于 /etc/shadow 文件中各行密码的第 6 个字段;
- -i 日期:设置用户密码失效日期,对应 /etc/shadow 文件中各行密码的第 7 个字段;
格式:[root@localhost ~]#chage [选项] 用户名
选项:
- -l:列出用户的详细密码状态;
- -d 日期:修改 /etc/shadow 文件中指定用户密码信息的第 3 个字段,也就是最后一次修改密码的日期,格式为 YYYY-MM-DD;
- -m 天数:修改密码最短保留的天数,也就是 /etc/shadow 文件中的第 4 个字段;
- -M 天数:修改密码的有效期,也就是 /etc/shadow 文件中的第 5 个字段;
- -W 天数:修改密码到期前的警告天数,也就是 /etc/shadow 文件中的第 6 个字段;
- -i 天数:修改密码过期后的宽限天数,也就是 /etc/shadow 文件中的第 7 个字段;
- -E 日期:修改账号失效日期,格式为 YYYY-MM-DD,也就是 /etc/shadow 文件中的第 8 个字段;
格式:[root@localhost ~]# su [选项] 用户名
- -:当前用户不仅切换为指定用户的身份,同时所用的工作环境也切换为此用户的环境(包括 PATH 变量、MAIL 变量等),使用 - 选项可省略用户名,默认会切换为 root 用户。
- -l:同 - 的使用类似,也就是在切换用户身份的同时,完整切换工作环境,但后面需要添加欲切换的使用者账号。
- -p:表示切换为指定用户的身份,但不改变当前的工作环境(不使用切换用户的配置文件)。
- -m:和 -p 一样;
- -c 命令:仅切换用户执行一次命令,执行后自动切换回来,该选项后通常会带有要执行的命令;
格式:[root@localhost ~]# gpasswd 选项 组名
选项 | 功能 |
---|---|
选项为空时,表示给群组设置密码,仅 root 用户可用。 | |
-A user1,... | 将群组的控制权交给 user1,... 等用户管理,也就是说,设置 user1,... 等用户为群组的管理员,仅 root 用户可用。 |
-M user1,... | 将 user1,... 加入到此群组中,仅 root 用户可用。 |
-r | 移除群组的密码,仅 root 用户可用。 |
-R | 让群组的密码失效,仅 root 用户可用。 |
-a user | 将 user 用户加入到群组中。 |
-d user | 将 user 用户从群组中移除。 |
格式:[root@localhost ~]# newgrp 组名
chown: 设置文件所有者和文件关联组的命令(root才可使用)
格式:[root@localhost ~]# chown [-R] 所有者 文件或目录
如果需要同时更改所有者和所属组,chown 命令的基本格式为:
[root@localhost ~]# chown [-R] 所有者:所属组 文件或目录
参数 :
- user : 新的文件拥有者的使用者 ID
- group : 新的文件拥有者的使用者组(group)
- -c : 显示更改的部分的信息
- -f : 忽略错误信息
- -h :修复符号链接
- -v : 显示详细的处理信息
- -R : 处理指定目录以及其子目录下的所有文件
- --help : 显示辅助说明
- --version : 显示版本
例:
把 /var/run/httpd.pid 的所有者设置 root:
chown root /var/run/httpd.pid
将文件 file1.txt 的拥有者设为 runoob,群体的使用者 runoobgroup :
chown runoob:runoobgroup file1.txt
将当前前目录下的所有文件与子目录的拥有者皆设为 runoob,群体的使用者 runoobgroup:
chown -R runoob:runoobgroup *
把 /home/runoob 的关联组设置为 512 (关联组ID),不改变所有者:
chown :512 /home/runoob
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 百万级群聊的设计实践
· 永远不要相信用户的输入:从 SQL 注入攻防看输入验证的重要性
· 全网最简单!3分钟用满血DeepSeek R1开发一款AI智能客服,零代码轻松接入微信、公众号、小程
· .NET 10 首个预览版发布,跨平台开发与性能全面提升
· 《HelloGitHub》第 107 期