前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Linux操作系统 中的用户管理,也就是关于用户的相关的操作与理解

Linux操作系统 中的用户管理,也就是关于用户的相关的操作与理解

作者头像
一写代码就开心
发布2023-12-08 14:41:04
3850
发布2023-12-08 14:41:04
举报
文章被收录于专栏:java和python
目录

  • 1 概念
  • 2 用户管理的类型
  • 3、模板目录
  • 4 查看历史命令
  • 5 相关文件
  • 6 创建用户useradd
  • 7 命令passwd 存储及shadow命令下的用户密码
  • 8 usermod命令(修改属性)
  • 9 密码设置
  • 10 删除命令userdel
  • 11 用户组的操作
  • 12 用户权限
  • 13 创建一个用户组,并且将这个用户组绑定到一个文件夹上
  • 14 创建一个用户,并且将这个用户绑定到一个组上
  • 15 一个用户可以在这个文件夹下新增文件和文件夹,但是不可以删除东西,这个如何实现

1 概念

代码语言:javascript
复制
用户账户:

每个可以进行登录的用户都需要拥有一个账户,
账户可以用来识别和验证用户的身份。
账户的创建和管理都由系统管理员来进行。

用户组:

用户组是用来管理用户权限的组合,
在Linux系统中,用户可以同时属于多个用户组。
每个文件和目录都有一个所有者和一个所属组,
这些属性可以决定用户能否读写文件或目录。

权限:
权限用于控制文件和目录的访问权限,
包括读、写、执行等操作。文件或目录的所有者、
所属组和其他人都有不同的权限。


文件和目录的所有权和访问权限:

Linux系统中,每个文件和目录都有一个所有者和一个所属组,
并且每个文件或目录都有不同的访问权限,
它们可以决定用户是否能够读写文件或目录。


添加用户:
添加用户需要使用adduser命令,新用户的信息会保存到系统文件中。


删除用户:
删除用户需要使用deluser命令,同时也要记得删除该用户的所有文件。


修改密码:
修改密码需要使用passwd命令,需要输入旧密码才能修改新密码。

2 用户管理的类型

1、超级管理员用户

超级管理员主要识别是否是root和#这两个必备的条件来确定当前状态下是否为管理员用户

超级管理员用户的权限的特点是可以使用所有系统及程序命令

在Linux操作系统中,UID是指用户ID(User ID),是Linux系统中用来标识用户的数字ID。

每个用户在Linux系统中都有一个唯一的UID,这个UID是系统内部用来识别不同用户的数字编号,系统管理员可以用这个UID来对不同用户进行管理和授权。

在Linux中,UID为0的用户是超级管理员(也就是root用户),其余用户通常是从1000开始分配的非特权用户。当一个用户创建了一个文件或目录时,该文件或目录的所有者UID就会设置为该用户的UID。

UID也用于系统安全性方面的考虑,因为只有UID为0的超级管理员才能进行关键系统操作,其他用户只能按照分配给他们的权限执行相应的操作。因此,使用UID和权限机制可以保证系统的安全性和稳定性。 2、普通用户

普通用户主要是以#标识来参考当前状态下是否为普通用户,与超级管理员不同的是普通用户只可以使用有限的系统命令和具有使用权限的程序命令。

在Linux系统中,UID从0到999是保留给系统内部特定用户(例如,root用户)和特殊组的,因此,普通用户的UID通常从1000开始。在大多数Linux发行版中,普通用户的UID编号范围通常是1000到65535。 ls/131186633

3、程序用户

程序用户是比较特殊的一种用户、程序用户可以运行指令但不允许登录系统和创建家目录

UID编号范围也与普通用户和超级管理员用户大不相同,程序用户的UID编号范围通常是1到999。

3、模板目录

在Linux系统中,模板目录指的是包含一些常用文件模板的目录,这些模板可以帮助用户快速创建新的文件,并且每个模板都包含了常用的文件结构和格式。Linux系统中的模板目录通常位于用户的主目录下,路径为~/Templates。

模板目录中通常包含了一些预设的文件模板,例如:

空白文本文件模板 空白RTF文件模板 空白ODT文件模板 Shell脚本模板 C程序模板 Python程序模板 LibreOffice Calc电子表格模板 LibreOffice Impress演示文稿模板 用户可以在模板目录中添加或删除自己的文件模板,以满足不同的需求。例如,如果你是一名开发人员,可以在模板目录中添加一个包含了常用文件头注释和函数结构的C程序模板,这样就可以更快地创建一个新的C程序文件并进行编写。

模板目录的主要特点是当用户新建并创建家目录时,复制该目录下的所有内容

主要作用是定义用户登录终端时的显示样式及环境变量设置。

输入该命令~/.bashrc可在模板模式下定义显示样式。

模板目录下的家目录显示异常一般分为两种情况:第一种是用户在使用过程中误删家目录,第二种是在操作家目录迁移过程中出现的异常

模板模式下家目录异常的解决办法:把/etc/skel/的内容移动到/opt(mv /etc/skel/* /opt)

创建用户user03,显示结果异常 -bash-4.2 修复 使用user03用户按此路径输入cp /opt/.bashrc /home/user03 输入后再输入exit退出,退出后在输入su - user03进行验证,直至异常结果的不显示-bash-4.2为结束。

4 查看历史命令

**history命令:**该命令可以列出当前用户在当前终端窗口下所执行的所有命令历史记录。可以使用该命令加上一个数字参数来指定显示最近多少条历史记录,例如,history 10将只显示最近的10条历史记录,默认保留1000条

Ctrl + R快捷键:在命令行下,按下Ctrl + R组合键,将会进入反向搜索模式,可以查找并执行之前执行过的命令。

**!!命令:**该命令可以执行上一条历史命令,即"!"字符后不加参数的形式。例如,执行sudo apt-get update命令之后,可以直接执行sudo !!来再次执行该命令。

**!n命令:**该命令可以执行历史记录中的第n条命令,其中n为命令的序号。例如,执行history命令查看历史记录,然后操作第10条历史命令,可以使用!10来执行。

5 相关文件

/etc/passwd 存储用户信息

代码语言:javascript
复制
在这个例子中,`root:x:0:0:root:/root:/bin/bash` 是一个用户记录,由冒号分隔的多个字段组成。下面是每个字段的含义:

1. `root`:这是用户名,表示该用户的登录名为 "root"。"root" 是 Linux 系统中的超级用户,具有最高权限。

2. `x`:这个字段通常用于存储加密后的密码。在这种情况下,密码被加密并存储在其他文件中,而不是 `/etc/passwd` 文件中。

3. `0`:这是用户 ID(UID),表示该用户的唯一标识符。在 Linux 系统中,0 是保留给超级用户 "root" 的 UID。

4. `0`:这是组 ID(GID),表示该用户所属的主要组的唯一标识符。在这里,GID 0 表示该用户的主要组也是 "root" 组。

5. `root`:这是用户的全名或描述,用于描述该用户的身份。

6. `/root`:这是用户的主目录路径,表示 "root" 用户的主目录位于 `/root` 目录下。

7. `/bin/bash`:这是用户的登录 shell,表示用户登录后默认使用的命令行解释器为 Bash(Bourne Again SHell)。

这个用户记录提供了关于 "root" 用户的基本信息,包括用户名、UID、GID、用户描述、主目录路径和登录 shell 路径。

/etc/shadow 存储用户密码信息

代码语言:javascript
复制
根据提供的信息,这是一个关于 "root" 用户的密码记录。字段之间使用冒号分隔,具体含义如下:

1. `root`:这是用户名,表示该用户的登录名为 "root"。

2. `$6$IZWx9/g02HOmFM.$Bh1tfeYFQEGpsAY9R0ISjBs5QeTGtdBDj6IAqes3yEGBmWDrXzFyTwSK0EhDV/tefOvQhK9v7WJ7uXoZblgHZ/`:这是加密后的密码字符串。以 `$6$` 开头表示使用 SHA-512 算法进行加密。后面的字符串是密码的盐和哈希值。

3. `19670`:这是用户的上次密码更改日期,表示从 1970 年 1 月 1 日以来的天数。

4. `0`:这是密码更改的最小间隔天数。在这种情况下,密码可以立即更改。

5. `99999`:这是密码有效期的最大天数。在这里,密码没有过期限制。

6. `7`:这是密码到期前的警告天数。在这种情况下,系统会在密码到期前 7 天提醒用户更改密码。

其他字段为空,表示没有设置其他限制或配置。

请注意,这里提供的密码字符串已经经过加密处理,无法直接还原为明文密码。该密码记录中的密码信息被存储在系统的密码文件(通常是 `/etc/shadow`)中,以保护用户的安全。

/etc/group 存储组信息

这是关于 “root” 用户在 /etc/group 文件中的记录。字段之间使用冒号分隔,具体含义如下:

  1. root:这是组名,表示该用户所属的组名为 “root”。
  2. x:这是密码字段。通常情况下,密码字段在 /etc/group 文件中是以 “x” 表示,而实际的密码哈希值则存储在 /etc/gshadow 文件中。
  3. 0:这是组标识号(GID)。GID 0 是系统中预留给超级用户组(root)的特殊标识。

其他字段为空,表示没有设置其他限制或配置。

需要注意的是,这里提供的密码字段是以 “x” 表示,实际的密码哈希值存储在 /etc/gshadow 文件中,以保护用户组的安全。

6 创建用户useradd

在Linux中,useradd命令用于创建新的用户账户。该命令的语法如下:

useradd [option] username 其中,option为可选参数,username表示要创建的新用户的用户名。

下面是一些常用的useradd命令选项:

-c:设置用户账户的描述信息。 -d:设置用户的主目录,默认情况下,新用户的主目录会被创建在/home目录下,其名称与用户的用户名相同。 -s:设置用户登录后所采用的默认shell。 -m:自动创建用户主目录。 -g:指定用户的主组group(GID)。 -G:指定用户所属的其他组。 -e:设置账户的过期时间。 -d:指定用户的家目录 -f:密码过期后,账户被彻底禁用之前的天数0表示立即禁用,-1 表示禁用这个功能。 -N:不创建同名的组 -p:加密后的新账户密码 -u:新账户的用户ID 例如,要创建一个名为"john"的新用户,可以执行以下命令:

useradd john 默认情况下,这个新用户不属于任何组,并且没有登录密码。可以使用passwd命令为该用户设置密码,使用usermod命令来修改用户所属的组和其他属性,使用userdel命令来删除该用户。

7 命令passwd 存储及shadow命令下的用户密码

1、根目录下的passwd是存储用户信息

2、在根目录下输入tail -1 /etc/passwd命令,输入后显示以下内容

代码语言:javascript
复制
 user10:x:1014:1014::/home/user10:/bin/bash(该显示为存储用户的信息)

 显示内容为:用户名:密码占位符:用户ID:组ID:用户描述信息:用户家目录:登录shell

3、根目录下的shadow是存储用户密码信息

代码语言:javascript
复制
  在根目录下输入tail -1 /etc/shadow命令,输入后显示以下内容

  user2:!!:19522:0:99999:7:::(该显示为储存用户的密码信息)

  显示内容为:用户名:密码:用户创建时间:密码最短使用期限:密码最长使用期限:密码过期提醒时

                        间:密码过期后的宽容时间:密码过期时间:没用

8 usermod命令(修改属性)

usermod命令(修改属性) 1、usermod

usermod 是一个 Linux 命令,用于修改用户账户信息。它可以用于修改用户的用户名、主目录、用户组等等。一般来说,只有系统管理员才有权利使用这个命令。

使用 usermod 命令需要指定要修改的用户名以及要修改的选项。例如,以下是修改用户密码的命令:

sudo usermod -p PASSWORD USERNAME 其中,PASSWORD是新密码的加密后字符串(可以使用 openssl 生成),USERNAME是要修改密码的用户名。

注意,修改用户账户信息是一项敏感操作,务必小心操作,确保正确性。

-d,–home-dir 修改用户的家目录 usermod -d /path username -e, --expiredate 修改用户的失效时间 usermod-e YYYY-MM-DD username -f, --inactive 密码过期后,账户被彻底禁用之前的天数。0表示立即禁用,-1 表示禁用这个功能。 usermod -f n (n为数字) username -g, --gid 用户初始登录组(基本组)的组名或GID。组名必须已经存在。组号码必须指代已经存在的组。 usermod -g GID username -G, --groups 修改用户的附加组,该组必须已经存在 usermod -G GID username -L, --lock 锁定用户密码,账户不能登录系统 usermod -L username -m, --move-home 与-d选项配合,将老的家目录内容移动到-d指定的新家目录 usermod -m -d /newdirpath username -p, --password PASSWORD 修改账户密码 usermod -p 加密后的密码 username -s, --shell SHELL 修改账户的登录 shell usermod-s shell的路径 username -u, --uid UID 修改账户的用户 ID usermod -u 指定的ID号 username

9 密码设置

Linux中密码设置有两种:passwd和chpasswd

1、passwd

用于单个密码设置,输入以下命令和步骤可解除密码锁定

-U, --unlock 解除密码锁定 usermod -U username

主要语法 passwd [选项] username

主要选项有以下几种

-l, --lock 锁定用户密码,账户不能登录系统 passwd -l username

代码语言:javascript
复制
--stdin
读取标准输入的内容作为密码
passwd --stdin  username

-u, --unlock 解除密码锁定 passwd -u username -d, --delete 删除用户密码 passwd -d username -e, --expire 设置密码有效期 passwd -e YYYY-MM-DD username -S, --status 查看给定账户的密码状态(锁定或不锁定) passwd -S username 非交互式修改密码的步骤:echo a | passwd --stdin user1

2、chpasswd

主要是批量用户设置密码

主要语法

生成用户与密码的对应关系 username:password echo -e “username1:password1\nusername2:password2” [> filename]

echo -e “username1:password1\nusername2:password2” | chpasswd

chpasswd < filename < 重定向输入

cat filename | chpasswd

10 删除命令userdel

主要语法是:userdel [选项] username

选项只有一种:-r, --remove 用户主目录中的文件将随用户主目录和用户邮箱一起删除。在其它文件系统中的文件必须手动搜索并删除。 userdel -r username

案例流程如下:

现有用户user2 useradd user2

查看/home中的user2文件的属性 drwx------ 5 user2 user2 128 6月 14 11:36 user2

删除user2用户 userdel user2

查看/home中的user2文件的属性 drwx------ 5 1002 1002 128 6月 14 11:36 user2

新建用户user3 useradd user3

查看/home中的user2文件的属性

drwx------ 5 user3 user3 128 6月 14 11:36 user2 drwx------ 3 user3 user3 78 6月 14 11:50 user3

再次创建user2用户 useradd user2

查看/home中的user2文件的属性 drwx------ 5 user3 user3 128 6月 14 11:36 user2 drwx------ 3 user3 user3 78 6月 14 11:50 user3

切换到user2用户 su - user2

发现家目录异常 su: 警告:无法更改到 /home/user2 目录: 权限不够 -bash: /home/user2/.bash_profile: 权限不够 -bash-4.2$

11 用户组的操作

在Linux系统中,您可以使用各种命令来进行用户组的操作。以下是一些常用的用户组管理命令:

  1. groupadd:用于创建新的用户组。例如,要创建名为"mygroup"的用户组,可以执行以下命令:
代码语言:javascript
复制
sudo groupadd mygroup
  1. groupdel:用于删除现有的用户组。例如,要删除名为"mygroup"的用户组,可以执行以下命令:
代码语言:javascript
复制
sudo groupdel mygroup
  1. groupmod:用于修改用户组的属性,如名称或GID(组标识号)。例如,要将名为"mygroup"的用户组的名称修改为"newgroup",可以执行以下命令:
代码语言:javascript
复制
sudo groupmod -n newgroup mygroup
  1. usermod:用于修改用户的属性,包括所属用户组。例如,要将用户名为"myuser"的用户的所属用户组修改为"mygroup",可以执行以下命令:
代码语言:javascript
复制
sudo usermod -g mygroup myuser
  1. gpasswd:用于管理用户组的密码(或称为组密码)。可以使用gpasswd命令设置组密码、添加/删除组成员等。例如,要为名为"mygroup"的用户组设置密码,可以执行以下命令:
代码语言:javascript
复制
sudo gpasswd mygroup

这些命令需要使用超级用户(root)或具有适当权限的用户来执行。您可以使用sudo命令来获取超级用户权限。请注意,在执行这些命令时要小心,以免意外删除或修改重要的用户组或用户信息。

12 用户权限

在Linux中,一个文件夹(目录)的权限由三个不同的权限组成:所有者权限、所属组权限和其他用户权限。每个权限组都可以包含读取(r)、写入(w)和执行(x)权限。以下是所有可能的权限组合:

  • 所有者权限:
    • 读取权限(r):允许查看目录中的文件列表。
    • 写入权限(w):允许在目录中创建、删除和重命名文件。
    • 执行权限(x):允许进入目录。
  • 所属组权限:
    • 读取权限(r):允许查看目录中的文件列表。
    • 写入权限(w):允许在目录中创建、删除和重命名文件。
    • 执行权限(x):允许进入目录。
  • 其他用户权限:
    • 读取权限(r):允许查看目录中的文件列表。
    • 写入权限(w):允许在目录中创建、删除和重命名文件。
    • 执行权限(x):允许进入目录。

这些权限以符号形式表示,可以用数字或符号表示。例如,读取权限(r)用数字4表示,写入权限(w)用数字2表示,执行权限(x)用数字1表示。将这些数字相加,就可以得到一个三位数的权限表示形式。例如,读取和写入权限表示为6(4 + 2),读取和执行权限表示为5(4 + 1),所有权限表示为7(4 + 2 + 1)。

要设置一个文件夹的权限,可以使用chmod命令。例如,要将一个文件夹的所有者权限设置为读取、写入和执行,所属组权限设置为读取和执行,其他用户权限设置为执行,可以使用以下命令:

代码语言:javascript
复制
chmod 750 folder_name

这将为文件夹folder_name设置以下权限:

  • 所有者权限:读取、写入和执行(数字表示为7)。
  • 所属组权限:读取和执行(数字表示为5)。
  • 其他用户权限:执行(数字表示为0)。

请注意,只有文件夹的所有者或具有适当权限的用户才能更改文件夹的权限。

=========================

要设置一个文件夹没有删除权限,但具有其他权限,可以使用以下命令:

代码语言:javascript
复制
chmod 755 folder_name

这将为文件夹folder_name设置以下权限:

  • 所有者权限:读取、写入和执行(数字表示为7)。
  • 所属组权限:读取和执行(数字表示为5)。
  • 其他用户权限:读取和执行(数字表示为5)。

这样设置后,文件夹的所有者和所属组用户可以对其进行读取、写入和执行操作,而其他用户只能进行读取和执行操作,没有删除权限。

13 创建一个用户组,并且将这个用户组绑定到一个文件夹上

要在Linux中创建一个用户组,并将该用户组绑定到一个文件夹上,可以按照以下步骤进行操作:

创建用户组: 使用以下命令创建一个新的用户组:

代码语言:javascript
复制
sudo groupadd group_name

group_name 替换为你想要创建的用户组的名称。

绑定用户组到文件夹: 使用以下命令将用户组绑定到指定的文件夹:

代码语言:javascript
复制
sudo chown :group_name folder_name

group_name 替换为你创建的用户组的名称,将 folder_name 替换为你要绑定用户组的文件夹的路径。

请注意,chown 命令中的冒号表示将用户组应用于文件夹。

现在,你已经创建了一个用户组并将其绑定到指定的文件夹上。用户组的成员将具有与该文件夹相关联的权限。

14 创建一个用户,并且将这个用户绑定到一个组上

在Linux中创建一个用户并将其绑定到一个组上,可以按照以下步骤进行操作:

创建用户: 使用以下命令创建一个新的用户:

代码语言:javascript
复制
sudo useradd -m username

username 替换为你想要创建的用户的名称。选项 -m 用于同时创建用户的主目录。

设置用户密码: 使用以下命令为用户设置密码:

代码语言:javascript
复制
sudo passwd username

username 替换为你创建的用户的名称。按照提示输入新密码并确认。

将用户添加到组: 使用以下命令将用户添加到指定的组:

代码语言:javascript
复制
sudo usermod -a -G group_name username

group_name 替换为你要将用户添加到的组的名称,将 username 替换为你创建的用户的名称。选项 -a 用于添加用户到组而不覆盖现有组。

现在,你已经创建了一个用户并将其绑定到指定的组上。该用户将成为该组的成员,并具有与该组相关联的权限。

15 一个用户可以在这个文件夹下新增文件和文件夹,但是不可以删除东西,这个如何实现

要实现一个用户可以在文件夹下新增文件和文件夹,但不能删除文件或文件夹,可以通过以下步骤来设置权限:

创建一个用户组(如果还没有):

代码语言:javascript
复制
sudo groupadd group_name

group_name 替换为你想要创建的用户组的名称。

将文件夹的所有者设置为该用户组:

代码语言:javascript
复制
sudo chown :group_name folder_name

这将把文件夹 folder_name 的所有者设置为用户组 group_name

将文件夹的权限设置为允许所有者和组成员读、写和执行,但不允许删除:

代码语言:javascript
复制
sudo chmod 775 folder_name

这将设置文件夹 folder_name 的权限为 rwxrwxr-x。其中,所有者和组成员拥有读、写和执行权限,其他用户只有读和执行权限。

设置粘贴位权限,以防止其他用户删除文件:

代码语言:javascript
复制
sudo chmod +t folder_name

这将为文件夹 folder_name 设置粘贴位权限。

通过以上步骤,用户将能够在文件夹下新增文件和文件夹,但不能删除文件或文件夹。只有文件夹的所有者和超级用户才能删除文件。

以上是只有自己创建的东西才可以自己删除,其他人是删除不了的,

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2023-12-07,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 目录
  • 1 概念
  • 2 用户管理的类型
  • 3、模板目录
  • 4 查看历史命令
  • 5 相关文件
  • 6 创建用户useradd
  • 7 命令passwd 存储及shadow命令下的用户密码
  • 8 usermod命令(修改属性)
  • 9 密码设置
  • 10 删除命令userdel
  • 11 用户组的操作
  • 12 用户权限
  • 13 创建一个用户组,并且将这个用户组绑定到一个文件夹上
  • 14 创建一个用户,并且将这个用户绑定到一个组上
  • 15 一个用户可以在这个文件夹下新增文件和文件夹,但是不可以删除东西,这个如何实现
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档