首页 > 系统相关 >Linux用户和用户组

Linux用户和用户组

时间:2022-09-27 11:58:57浏览次数:50  
标签:文件 用户名 用户组 用户 etc Linux ID

一、Linux用户和用户组的概念

  • Linux 是多用户多任务操作系统,换句话说,Linux 系统支持多个用户在同一时间内登陆,不同用户可以执行不同的任务,并且互不影响。
  • 不同用户具有不同的权限,毎个用户在权限允许的范围内完成不间的任务,Linux 正是通过这种权限的划分与管理,实现了多用户多任务的运行机制。每个用户都有唯一的用户名和密码。在登录系统时,只有正确输入用户名和密码,才能进入系统和自己的主目录。
  • 用户组是具有相同特征用户的逻辑集合。简单的理解,有时我们需要让多个用户具有相同的权限,比如查看、修改某一个文件的权限,一种方法是分别对多个用户进行文件访问授权,如果有 10 个用户的话,就需要授权 10 次,那如果有 100、1000 甚至更多的用户呢?显然,这种方法不太合理。最好的方式是建立一个组,让这个组具有查看、修改此文件的权限,然后将所有需要访问此文件的用户放入这个组中。那么,所有用户就具有了和组一样的权限,这就是用户组。
  • 将用户分组是 Linux 系统中对用户进行管理及控制访问权限的一种手段,通过定义用户组,很多程序上简化了对用户的管理工作。

二、Linux用户和组的关系

用户和用户组的对应关系有以下 4 种:

  1. 一对一:一个用户可以存在一个组中,是组中的唯一成员;
  2. 一对多:一个用户可以存在多个用户组中,此用户具有这多个组的共同权限;
  3. 多对一:多个用户可以存在一个组中,这些用户具有和组相同的权限;
  4. 多对多:多个用户可以存在多个组中,也就是以上 3 种关系的扩展。

三、Linux UID和GID(用户ID和组ID)

登陆 Linux 系统时,虽然输入的是自己的用户名和密码,但其实 Linux 并不认识你的用户名称,它只认识用户名对应的 ID 号(也就是一串数字)。Linux 系统将所有用户的名称与 ID 的对应关系都存储在/etc/passwd文件中。说白了,用户名并无实际作用,仅是为了方便用户的记忆而已。

如何论证 "Linux系统不认识用户名" ?

我们曾经在网络上下载过 ".tar.gz"格式的文件,在解压缩之后的文件中,你会发现文件拥有者的属性显示的是一串数字,这很正常,就是因为系统只认识代表你身份的 ID,这串数字就是用户的 ID(UID)号。

 

既然 Linux 系统不认识用户名,文件是如何判别它的拥有者名称和群组名称的呢?

每个文件都有自己的拥有者 ID 和群组 ID,当显示文件属性时,系统会在 /etc/passwd 文件中,利用 UID 可以找到对应的用户名;在 /etc/group 文件中,利用 GID 可以找到对应的群组名。

 

如果我们修改了 /etc/passwd 和 /etc/group  这两个文件会出现问题呢?

1.进入home目录查看 ,如下图所示:

2.我们先使用 root 账号登陆并执行 vim /etc/passwd,文件中一行记录对应着一个用户,每行记录又被冒号(:)分隔为7个字段,其格式为:

用户名:口令:用户标识号:组标识号:注释性描述:主目录:登录Shell

文件部分内容如下:

3.在该文件中找到 user1 账户并将其 UID(1002)随意改一个数字,这时当你查看普通账户拥有的文件时,你会发现所有文件的拥有者不再是 user1,而是数字1002。

4.执行vim /etc/group ,此文件的格式也类似于/etc/passwd文件,由冒号(:)隔开若干个字段,这些字段有:

组名:口令:组标识号:组内用户列表

文件部分内容如下:

5.找到user2并修改其对应的 GID ,你会发现所有文件的所属组不再是 user2,而是数字1005。

 

6.由于 user1 账户的 UID 已经被修改,但其 home 目录却记录的是 1002,会导致此用户再次登录时无法进入自己的home目录。如下图所示:

注意:为了说明 ID 和用户名的对应关系,所以才将 /etc/passwd 文件中用户的 UID 做了更改。此操作很可能会导致某些程序无法进行,因此 /etc/passwd 文件不能随意修改。

标签:文件,用户名,用户组,用户,etc,Linux,ID
From: https://www.cnblogs.com/godzzz/p/16724614.html

相关文章

  • Linux 创建用户并配置SSH免密登录
    补一个Linux的新用户SSH记录叭~1、创建用户 sudouseraddweisheng#weisheng:用户名用户创建成功会在磁盘生成/home/weisheng作为用户根目录 2、目录授......
  • SQLServer 杀死数据库下所有进程 将数据库改为多用户
    杀死所有进程USEmastergoDECLARE@SqlNVARCHAR(max)SET@Sql=''select@Sql=@Sql+'kill'+cast(spidasvarchar(50))+';'fromsys.sysprocesseswhere......
  • Linux之EOF
       常见问题:1.在EOF中存在特殊字符,例如$导致后面的无法识别,因为默认会对变量自动替换使用引号处理cat>>a.sh<<"EOF"echo`hostname`echo$HOMEEOF......
  • 报告分享|2022年·美妆用户洞察报告
    报告链接:http://tecdat.cn/?p=28697红书的美妆用户以女性为主,主力群体为95、00后,近7成美妆用户拥有大学及以上学历。小红书美妆用户消费能力强,愿意在护肤/彩妆产品上投入......
  • Linux防火墙firewall只允许特定IP访问
    1、https://blog.csdn.net/haoqi9999/article/details/125988881一、概述1、目的服务A使用端口9001,只有允许的应用才可以访问,其它未经允许服务无法正常访问(即默认应用无......
  • Amazon linux docker安装
    Amazon的服务器安装docker和普通Linux系统安装有些许的区别,安装源可以使用Amazon的1、安装Docker#安装步骤sudoyuminstall-yamazon-linux-extrasyum-utilsdevice......
  • Linux下安装jdk(不使用docker方式)
    1、下载jdk8:官网下载jdk8哦豁:发现要创建账号,那么官网下载方式跳过,找网友们免费提供的。在这篇文章里找到了https://pan.baidu.com/s/1a5Io5FFPaFek7PMnxd4eJQ0915......
  • Linux升级python至3.x
    前言云服务器一般都用Linux系统,现在云服务器的Linux一般自带python,只是版本是2.x,比较老的那种。大部分人用的python应该都是3.x版本的,这时候你在本地编写的python文件拿到......
  • Linux设置固定IP地址
    以Centos7为例终端运行ifconfig查看网卡配置信息如果无法找到该命令需要安装net-toolsyuminstallnet-tools如下图使用的网卡为eth0cd/etc/sysconfig/networ......
  • linux配置当前用户java环境
    cd~ls-al  这里可以看到一个 .bash_profile的文件然后vim它vim.bash_profile 插入如下代码 PATH=$PATH:$HOME/binexportJAVA_HOME=/apps/upgrade_sj......