Linux用户和文件权限

Linux中用户的分类

在Linux中,用户通常可以分为几类,主要包括:

  1. 超级用户(Superuser)

    • 也称为root用户,拥有系统中几乎所有权限的用户。root可以执行任何操作,包括修改系统关键文件、安装软件等。由于其权限极高,使用时需要格外小心,避免不必要的系统损坏或安全问题。
  2. 普通用户(Regular User)

    • 大多数系统用户属于普通用户。这些用户的权限受到限制,通常只能访问自己的文件和一些系统资源。普通用户不能修改系统关键配置文件或者安装全局软件,这样有助于保护系统的安全性。
  3. 服务账户(Service Accounts)

    • 这些账户是为了运行特定的服务或应用程序而创建的,通常不具备登录系统的权限。服务账户的目的是限制服务或应用程序的安全风险,因为它们通常只能访问特定的文件或资源。
  4. 伪用户(Pseudo Users)

    • 这些用户是为了满足特定系统功能而创建的,通常不能登录系统。例如,"root"、"nobody"、"daemon"等都是伪用户的例子。这些用户通常用于运行特定的系统服务或进程。

这些用户分类帮助系统管理员有效地管理和保护Linux系统资源,确保系统安全性和效率。

推荐阅读文章: Linux-有关用户和组的命令详解_linux查看用户组和用户-CSDN博客

 用户和用户组

用户

Linux系统中的每个用户都由一个唯一的用户名标识,用户可以属于一个或多个组。用户的详细信息通常存储在/etc/passwd文件中。该文件中的每一行都代表一个用户,其中包含7个字段,它们分别是:

  • 用户名
  • 密码
  • 用户ID(UID) 用户的唯一标识
  • 组ID(GID) 表明用户的基本组是谁
  • 用户全名或注释(对用户账户的一个描述或注释,通常用来提供关于用户的额外信息,如部门、职位、联系方式等。)
  • 用户主目录的路径(通常是 /home/用户名 的形式,也就是每个用户的家目录)
  • 用户默认的Shell程序的路径(指的就是用户的命令行解释器类型,比如linux中常用的bash)

 用户组

在Linux系统中,用户组是一组用户的集合,每个用户组都有一个唯一的组名和组ID(GID)。用户组的详细信息通常存储在/etc/group文件中。该文件中的每一行都代表一个用户组,其中包含4个字段,它们分别是:

  • 组名
  • 组密码(已加密)
  • 组ID(GID)
  • 组成员

辨识用户类型

 打开/etc/passwd文件,看到如下类似内容

/etc/passwd文件,文件里面存储的是linux中的所有用户的信息。包含上面我们说的7个字段。

如何根据字段辨别用户类型呢?可以看到daemon用户中用户主目录不是我们说的家目录,同时默认shell程序的路径为XX/nologin,不能登录系统,可以看来这个是服务账户或者伪用户

并且我们发现有趣的一点是虽然叫做/etc/passwd文件,但是文件里面除了用户的password看不到,其他信息都能看到,用户密码信息加密放到了其他的位置(真正的密码也加密了)。

认知root用户

用户切换 su

 sudo命令

 

因为如果所有用户都可以自由运用sudo,这样其实不合理的 

用户,用户组管理

Linux中支持:多用户,多用户组,用户可以加入多个用户组

id命令

id 命令的输出中,用户的 gid(Group ID)和用户的组分别表示:

  1. gid(Group ID):

    • 这是用户所属的主组的组标识符(Group ID)。
    • 在Linux系统中,每个用户除了属于自己的个人组(primary group)外,还可以属于其他附加组(supplementary groups)。
    • 主组通常在用户创建时指定,是用户在文件系统中默认拥有的组,通常用于与用户的文件关联。
    • 在 id 命令输出中,gid 通常显示为 gid=组标识符
  2. 用户的组(Groups):

    • 这部分列出了用户所属的所有附加组(supplementary groups)。
    • 附加组是用户除了主组之外,可能还属于的其他组,用于访问共享资源或执行特定任务时的权限管理。
    • 在 id 命令输出中,附加组通常列在 groups=组1,组2,... 的形式下。

用户加入到不同用户组的好处和作用

  • 当用户属于某个组时,可以有对该组中其他用户拥有的文件和目录的组权限,而不需要单独对这些文件设置复杂的权限。这是因为在Linux系统中,文件和目录的权限设置可以通过用户(所有者)、组和其他三种权限类别来管理。
  • 这样做简化了权限管理,特别是在团队协作或多用户环境中,管理员可以更轻松地控制和管理文件访问权限。

比如上面linux加入到了sudo组中,就获得了对应组中文件的权限,就可以用sudo命令来临时获得管理员权限,没有加入到这个组中就不能使用sudo

用户创建的两种方法

useradd:增加一个新的用户(清新版)复杂

adduser:增加一个新的用户(懒人版)简单

useradd(清新版)

useradd是比较底层一点的命令,做的事情不会太多,创建用户中的很多事情需要我们手动去做

需要用到的命令:

1. passwd:设置/更改用户密码

2. usermod:设置/更改用户相关属性

具体步骤:(下面的5个步骤都是在其他拥有sudo权限用户下或者root下进行操作的)

1.sudo useradd jack

使用useradd命令需要用到管理员权限,所以这里我们使用了sudo

紧接着查看/etc/passwd和/etc/group文件变化 ,发现确实jack信息已经添加进去了这两个文件,但是jack用户的信息不完整,需要我们再来手动添加一些东西

2.为用户添加密码:sudo passwd jack

不添加密码的话是切换不成jack用户的,因为切换用户的时候是需要用户密码的

这里重新输入新的密码是二次确认输入的密码,我第一次在这里试了很多次才反应过来,有点好笑。

3.在/home文件夹下为用户添加其家目录:sudo mkdir /home/jack

你可能会说第一步之后不是在/etc/passwd文件中显示了jack的家目录是/home/jack吗?为什么还要添加,因为那里只是显示了家目录路径,当我们确定了添加用户的名字之后,用户家目录路径也就轻松知道了,实际上我们还没有在/home目录下为Jack用户新建家目录,不信你看

新建jack家目录 

 这里面usermod可以用来指定家目录,不过我们使用useradd命令后,已经默认指定的就是/home/jack了,所以这里这条命令没起作用,显示结果是no changes。当然你如果想改变jack的家目录,可以通过usermod这条命令来改,但不推荐

4.在jack家目录下添加一些初始的重要文件和文件夹:sudo cp -r /etc/skel/. /home/jack

skel文件夹通常位于/etc/skel目录下,该目录中包含一些文件和目录,它们被用作新用户的默认文件和文件夹。这个文件夹中的内容都隐藏了,所以要用-a才能看到

当创建新用户时,我们需要复制/etc/skel目录中的所有文件和目录到新用户的家目录中。

sudo cp -r /etc/skel/. /home/jack

这里加上了-r因为/etc/skel下的文件含有隐藏文件,加上-r选项可以将隐藏文件复制过来

这里还加了一个.  ,因为这里我们的目标是将 /etc/skel目录中的内容(包括隐藏文件)复制到  /home/jack 目录中,但不复制 skel 目录本身,加上 . 指的是源目录中的所有内容(包括隐藏文件),而不包括源目录本身。

5.将/home/jack的所有者和所有组换为jack:sudo chown jack:jack /home/jack -R

不这样搞得话可能发生下面场景

我们会发现jack没有在/home/jack目录下创建文件的权限,原因是因为在创建 /home/jack 的时候,身份不是 jack,导致jack在自己家没有权限了。所以要使用这个sudo chown jack:jack /home/jack -R  命令来更换/home/jack目录的所有者和所有组。

ok这样就差不多完成啦!!!

注意此时的用户只能进行很基础的操作,比如很多快捷键或者其他功能,使用这个用户操作时是没有的。就算如此,刚刚上面创建工作依然十分复杂。

所以请看下面的懒人版吧!^_^

adduser(懒人版,强推)

sudo adduser alice

可以看到执行了这条命令之后,系统将会自动帮我们添加好家目录,并且会提示我们设置新用户的密码,基本信息等,相当于将用户的七个字段就一下子设置好了。

让我们再来cat /etc/passwd文件

我们会惊喜的发现这里自动配置好了用户默认的Shell程序的路径:/bin/bash

还可以直接在alice用户下来使用快捷键,Tab补齐等众多功能,这里每行命令开头显示的也不会仅仅是刚刚jack的$符号。

当然,我们还没有将这个alice用户加入到sudo,所以还不能用sudo命令,下面usermod会讲到

相比于useradd这条命令,adduser命令简直是完美!!!

用户删除deluser

格式:sudo deluser 用户名

比如这里sudo deluser jack

删除jack之后使用id命令来查看jack用户发现用户没了,查看文件/etc/passwd和文件/etc/group,发现里面都没有了jack的信息。但是查看/home,发现jack的家目录竟然还在。

这就相当于用户死了,但是他的家(房子)还在,有趣。这让我想到上面使用useradd的过程也相当于创建用户且配备登录密码,给用户修一个房子(家目录),且家里面要有基础家具设施(skel里面内容),最后就是将房子移交给新用户 。

可以使用sudo rm /home/jack -r将jack的房子也拆掉

usermod修改用户的相关信息

usermod命令用于修改现有用户的属性和设置。通过使用usermod命令,管理员可以修改用户的用户名、用户ID、主目录、默认shell、附加组等属性。

命令格式:usermod [选项] 用户名

其中,用户名指要修改的现有用户的用户名。选项用于指定要进行的修改操作。

选项:

-l  :  修改用户的用户名。
-u :  修改用户的用户ID。
-d :  修改用户的主目录(家目录)。
-s :  修改用户的默认shell。

-c :  修改用户的备注信息。

-g:修改用户的主要组(默认的组)
-G : 修改用户所属的附加组。
-a :  将用户添加到指定的附加组中。


示例


修改用户的用户名:
 usermod -l newusername oldusername

修改用户的用户ID:
 usermod -u 1001 username

修改用户的主目录:
 usermod -d /home/newdir username

修改用户的默认shell:
usermod -s /bin/bash username

修改用户的备注信息:
usermod -c "New comment" username

修改用户的附加组:
 usermod -G group1,group2 username

将用户添加到指定的附加组中:
 usermod -aG groupname username


需要注意的是,usermod命令需要使用root用户或具有sudo权限的用户来执行。

如果某个用户(假设为jack没有sudo权限,但是也想要使用这些命令,需要先在root用户中,或者在有sudo权限的用户中为jack使用usermod命令,来添加jack的附加组。(添加是-aG,修改是-G,两者不一样

sudo usermod -aG sudo jack

用户组创建,删除

addgroup 用户组名

delgroup 用户组名

用户加入用户组的直观作用感受

上面我们说过:当用户属于某个组时,可以有对该组中其他用户拥有的文件和目录的组权限,而不需要单独对这些文件设置复杂的权限。

现在来直观感受一下,首先在

查看文件权限控制信息

认知文件权限信息

详细解析文件权限信息

 rwx含义

对于文件文件夹来说,rwx权限有着不太相同的含义

这里的权限的是一个用户对于这个文件或者文件夹的权限

比如在当前linux用户下,可以访问某个文件的内容,我们就说当前linux用户对于这个文件有r权限

对于下面的第一个文件,假设我们当前登录的用户为linux用户,那么我们想看到linux用户对于这个文件的权限,看的是权限信息的后三位,因为linux用户不是root用户,也不是root用户组,可以看到linux用户对于这个文件权限为r--,只能读

 

 修改权限控制--chmod(改文件/文件夹权限)

这里不加选项-R的时候更改的权限仅仅针对于文件夹的本身,不对文件夹中的内容进行权限更改。 

当我们修改了文件或文件夹得权限,我们可以发现ls命令查看时,他们的名字都变色了

同时我们也发现这样修改权限太麻烦了,下面介绍简化的操作

使用数字来修改权限

 修改文件/文件夹所属用户与用户组--chown

普通用户无法使用chown命令

普通用户无法使用chown命令

普通用户无法使用chown命令

示例

1. chown root hello.txt //将文件hello.txt的所属用户修改为root。

2. chown root:hello.txt //将文件hello.txt的所属用户组修改为root。

3. chown root:itheima hello.txt //将文件hello.txt的所属用户修改为root,用户组修改为itheima。

4. chown -R root test  //将文件夹test及其所有内容的所属用户修改为root,并对文件夹内的全部内容应用同样的规则。

示例中向我们展示了可以单独修改用户或者用户组,也可以两个都修改 

这里chown命令中同样是如果对文件夹中包含的所有文件进行统一修改的时候,需要加上选项-R(大写),和上面的chmod命令一样,同时我发现在cv和rm命令中对文件夹进行操作的时候要加上-r选项(小写)。

  • 5
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值