linux权限管理

权限管理

用户 组

介绍

用户

每个用户和组都有一个唯一的标识符(UID和GID),用于标识其在系统中的身份和权限。用户权限可以分为三类:文件权限、目录权限和执行权限。

  1. 文件权限:文件权限是指用户对文件的操作权限,包括读取(read)、写入(write)和执行(execute)权限。这些权限可以分配给文件的所有(owner)、组(group)和其他用户(other)。

  2. 目录权限:目录权限是指用户对目录的操作权限,包括读取(read)、写入(write)和执行(execute)权限。这些权限可以分配给目录的所有者(owner)、组(group)和其他用户(other)。

  3. 执行权限:执行权限是指用户对文件和目录的执行权限,即是否能够运行该或进入该目录。执行权限可以分配给文件和目录的所有者(owner)、组(group)和其他用户(other)。

分类
  1. 超级用户:超级用户(root用户)拥有系统中的最高权限,可以执行所有系统管理任务,如安装软件、管理用户、修改系统配置等。超级用户账号拥有UID为0,是系统中最特殊和最重要的用户。

  2. 系统用户:系统用户(system用户)是Linux系统中预设的一组用户,用于执行系统服务和程序。这些用户通常具有较高的权限,以保证系统服务和程序的正常运行。系统用户账号的UID通常在1-999之间。

  3. 普通用户:普通用户是系统中最常见的用户类型,拥有基本的文件读写和执行权限。普通用户账号的UID通常在1000以上。普通用户通常用于日常工作和娱乐活动,如浏览网页、编写文档、听音乐等。

  4. 组用户:组用户是由具有相同工作或兴趣爱好的人组成的用户群体。组用户可以在文件和目录上拥有共享权限,以实现对文件和目录的共同管理。组用户账号的GID通常在1000以上。

组(Group)是一种用户集合,用于将用户组织成不同的组,并为这些组分配特定的权限和访问控制。组的概念允许管理员更轻松地管理用户访问和权限,并为不同的用户组分配不同的特权和功能。

在Linux中,组通常由系统管理员创建和管理。管理员可以使用命令行工具或图形界面工具来创建、编辑和删除组。每个组都有一个唯一的组名,用于标识该组。

组成员可以是用户或其他组。组成员之间可以共享访问权限和特权,例如,组成员可以共享文件和目录的访问权限,以及执行特定命令和程序的能力。通过将用户分配到不同的组,管理员可以灵活地控制用户的访问和权限,并根据需要为用户分配不同的角色和功能。

指令

用户切换
su sudo

su命令用于切换当前用户的身份,以另一个用户的身份登录系统。它允许用户在执行其他命令时使用另一个用户的权限和环境变量。

参数:

  1. -:表示切换到与当前用户同组的用户。

  2. -l:表示以当前用户的身份运行指定的命令,而不改变当前用户的身份。

  3. <用户名>:指定要切换到的用户名,可以指定普通用户或root用户。

  4. <密码>:在切换到root用户时,需要输入root用户的密码。

  5. -m:表示以新用户的身份创建新的会话,并立即返回到当前会话。

  6. -c <命令>:指定要切换到新用户后执行的命令。

示例:

  1. 切换到与当前用户同组的用户:

su -
  1. 以root用户的身份运行命令:

su - root -c "command"
  1. 切换到普通用户并立即返回到当前会话:

su - username -m command

sudo是一个用于以其他用户身份执行命令的程序,允许普通用户执行超级用户权限下的操作。

参数:

  1. -u <用户名>:指定要切换到的目标用户的用户名。

  2. -i:模拟其他用户的输入,通常用于测试目的。

  3. -s:在切换到其他用户后立即返回到当前会话。

  4. -t <模板名称>:指定tty模板名称,用于控制sudo进程的输出格式。

  5. -k:在执行命令之前要求重新输入密码。

  6. -n:禁止sudo拒绝策略检查。

  7. <命令>:要执行的命令。

注意sudo的规则要修改一个配置文件:sudoers
  1. 打开终端。

  2. 使用root用户或具有sudo权限的用户登录。

  3. 输入以下命令以编辑sudoers文件:/etc/soders文件路径

sudo visudo

visudo`是一个更加安全的编辑器,它可以防止错误地修改sudoers文件。

  1. 在打开的文件中,查找以下行:

%sudo ALL=(ALL:ALL) ALL

这一行定义了sudo的用户组和使用规则。

  1. 在这一行的末尾添加一个新的用户列表,使用空格分隔。例如:

%sudo ALL=(ALL:ALL) ALL user1 user2

这将允许user1和user2使用sudo命令。

  1. 保存并关闭文件。

  2. 重新启动系统或使用以下命令以使更改生效:

sudo service ssh restart

sudo reboot
用户信息查询
id groups
id

在Linux中,id是一个用于显示当前用户信息的命令行工具。它提供了一些关于当前用户的基本信息,如用户ID(UID)、用户组ID(GID)、用户主目录和登录Shell等。

参数:

  1. 无参数:默认情况下,id会显示当前用户的UID、GID、用户主目录和登录Shell等信息。

  2. <用户名>:显示指定用户的UID、GID、用户主目录和登录Shell等信息。

  3. -u:指定要显示的用户UID。

  4. -g:显示用户所在的组ID。

  5. -G:显示用户所在的组列表。

  6. -n:不进行实际的文件系统访问,仅显示用户信息。

groups

在Linux中,groups是一个用于列出用户所属的组的命令行工具。它允许系统管理员查看当前用户所属的组以及组成员的信息。

参数:

  1. 无参数:默认情况下,groups会列出当前用户所属的所有组。

  2. <用户名>:列出指定用户的所属组。

  3. <组名>:列出指定组的组成员。

  4. -c:显示组成员的总数。

  5. -l:以长格式显示组成员的信息。

who whoami
who

who命令用于显示当前登录系统的用户列表。它提供了有关当前登录用户的信息,包括用户名、终端标识符、登录时间等。

基本语法如下:

who [选项]

以下是who命令的一些常见选项和参数:

  • -a:显示所有用户的完整信息,包括用户ID、终端标识符、登录时间等。

  • -m:以内存中的形式显示用户信息,而不是从/var/run/utmp文件中读取。

  • -u:仅显示用户ID,而不显示其他用户信息。

  • -r:显示远程登录的用户。

  • -q:限制结果输出为只包含用户名和终端名称。

  • -l:显示登录会话的详细信息,包括登录类型(本地或远程)、登录时间等。

除了这些选项,who命令还接受一些其他参数,用于指定要显示的特定信息。这些参数可以是以下之一:

  • +:添加指定信息到输出中。

  • -:从输出中删除指定信息。

例如,要显示当前登录用户的完整信息,可以运行以下命令:

who -a

要仅显示本地登录用户的终端名称,可以运行以下命令:

who -l | grep "tty" | awk '{print $1}'
whoami

提供了有关当前登录用户的信息,包括用户名、登录时间等。

基本语法如下

whoami [选项]

参数:

  • -m:以内存中的形式显示用户信息,而不是从/var/run/utmp文件中读取。

  • -r:显示远程登录的用户。

  • -q:限制结果输出为只包含用户名。

whoami -m

这个命令将显示当前登录用户的用户名和相关信息,包括登录时间等。

users

在Linux中,users命令用于显示当前登录系统的用户列表。它提供了有关当前登录用户的信息,包括用户名、登录时间等。

users命令的基本语法如下:

users [选项]

参数:

  • -a:显示所有用户的完整信息,包括用户ID、终端标识符、登录时间等。

  • -m:以内存中的形式显示用户信息,而不是从/var/run/utmp文件中读取。

  • -u:仅显示用户ID,而不显示其他用户信息。

  • -r:显示远程登录的用户。

  • -q:限制结果输出为只包含用户名和终端名称。

  • -l:显示登录会话的详细信息,包括登录类型(本地或远程)、登录时间等。

除了这些选项,users命令还接受一些其他参数,指定要显示的特定信息。这些参数可以是以下之一:

  • +:添加指定信息到输出中。

  • -:从输出中删除指定信息。

例如,要显示当前登录用户的完整信息,可以运行以下命令:

users -a

要仅显示本地登录用户的终端名称,可以运行以下命令:

users -l | grep "tty" | awk '{print $1}'

users命令的输出通常比who命令的输出更详细,因为它提供了有关每个用户的信息,包括用户名、登录时间等。它还提供了有关当前登录用户的信息,包括用户ID、终端标识符、登录时间等。

userlist

在Linux中,userlist是一个用于管理用户列表的命令行工具。它允许系统管理员创建、编辑和删除用户列表,并执行与用户相关的操作。

参数:

  1. -a:添加用户到用户列表中。

  2. -d:删除用户列表中的用户。

  3. -l:列出当前的用户列表。

  4. -m:将用户添加到用户列表中时,自动创建用户的主目录。

  5. -r:递归地添加或删除用户列表中的用户。

  6. -u:指定要操作的特定用户。

例如,要添加一个名为"john"的用户到用户列表中,可以使用以下命令:

userlist -a john
userinfo

在Linux中,userinfo是一个用于显示用户信息的命令行工具。它提供了一些关于当前用户的基本信息,如用户名、UID、GID、用户主目录和登录Shell等。

参数:

  1. 无参数:默认情况下,userinfo会显示当前用户的UID、GID、用户主目录和登录Shell等信息。

  2. <用户名>:显示指定用户的UID、GID、用户主目录和登录Shell等信息。

用户添加 删除 修改权限
adduser useradd

在Linux中,adduser是一个用于添加新用户账户的命令行工具。与useradd相同

参数:

  1. -d:指定用户的主目录路径。

  2. -m:在创建用户时自动创建主目录,并将主目录设置为家目录。

  3. -u:指定用户的UID。

  4. -g:指定用户所在的组名。

  5. -G:指定用户所属的组列表。

  6. -s:指定用户的登录Shell。

  7. -e:设置用户的有效期,以天为单位。

  8. -p:设置用户的密码,需要输入两次以确认密码。

例如,要创建一个名为"john"的用户,主目录为/home/john,登录Shell为/bin/bash,可以使用以下命令:

adduser -m -s /bin/bash john
deluser userdel

deluser是一个用于删除用户账户的命令行工具。允许系统管理员从系统中删除用户账号及其相关文件和目录。与userdel相同

参数:

  1. -r:指定要删除的用户账号所属的组,并同时删除该组及其相关文件和目录。

  2. <用户名>:指定要删除的用户账号的名称。

  3. -d:指定用户的主目录路径,并删除该目录及其内容。

  4. -f:强制删除用户账号,即使存在其他用户依赖于该账号的文件和目录。

  5. -n:仅删除用户账号的信息记录,而不删除实际文件和目录。

  6. -l:将用户账号的信息记录从系统中锁定,以防止其他用户重新创建该账号。

删除名为"john"的用户账号及其主目录,可以使用以下命令:

deluser john
pssswd

在Linux中,passwd是一个用于修改用户密码的命令行工具。允许系统管理员更改用户的密码,并设置相关的密码策略选项,如密码复杂度要求、密码有效期等。

参数:

  1. -d:删除用户的密码,使该用户无法登录系统。

  2. -e:为用户设置密码到期日,以天为单位。

  3. -l:锁定用户的密码,使该用户无法修改密码或重置密码。

  4. -m:为用户设置密码复杂度要求,如密码长度、必须包含的小写字母、必须包含的大写字母、必须包含的数字等。

  5. -n:禁止用户修改密码,即使密码已过期或即将过期。

  6. -S:使用/etc/shadow文件中的密码策略选项。

  7. -u:指定用户的UID,以便更改该用户密码。

为用户"john"设置密码复杂度要求为至少包含8个字符,其中必须包含至少一个大写字母、一个小写字母和至少一个数字,可以使用以下命令:

passwd -m -s john
usermod

在Linux中,usermod是一个用于修改用户账户的命令行工具。它允许系统管理员更改用户账号的属性,如密码、主目录、登录Shell等。

参数:

  1. -l:指定用户的新名称。

  2. -d:指定用户的主目录路径。

  3. -m:在更改用户主目录后创建新目录,并将当前用户的家目录复制到新目录中。

  4. -s:指定用户的登录Shell。

  5. -u:更改用户的UID。

  6. -g:更改用户所在的组。

  7. -G:添加或删除用户所在的组列表。

  8. -C:在更改之前显示当前设置。

  9. -p:设置用户的密码,需要输入两次以确认密码。

。例如,要更改名为"john"的用户的主目录为/home/newdir,可以使用以下命令:

usermod -d /home/newdir john
chown chgrp chmod

在文件权限的指令中介绍

组的创建 删除 修改属性
groupadd

基本语法如下:

sudo groupadd [选项] 组名

参数:

  • -g:指定新组的GID(组ID)。如果不指定该选项,系统将自动为新组分配一个唯一ID。

  • -r:创建系统组,该组的ID将在1~999之间分配。

  • -f:强制创建组,即使该组已经存在。

  • -n:创建组但不添加任何成员。

例如,要创建一个名为mygroup的新组,可以使用以下命令:

sudo groupadd -g 1000 mygroup

groupdel

基本语法如下:

sudo groupdel [选项] 组名

参数:

  • -r:删除系统组,该组ID为1~999之间的组将被永久删除。

  • -f:强制删除组及其所有成员。

例如,要删除名为mygroup的现有组,可以使用以下命令:

sudo groupdel mygroup
groupmod

groupmod命令允许管理员编辑用户组的属性,例如更改组的名称、GID或其他成员信息。

基本语法如下:

sudo groupmod [选项] 组名

参数:

  • -g:指定新组的GID。

  • -n:仅修改组名而不删除现有组。

  • -d:指定新组的用户名。

使用groupmod命令,可以更改现有组的属性,例如将组的GID更改为新的值,或将组的成员更改为新的用户。例如,要将名为mygroup的组的GID更改为1000,可以使用以下命令:

sudo groupmod -g 1000 mygroup

除了GID的更改,管理员还可以使用groupmod命令添加或删除组成员。例如,要将用户john添加到名为mygroup的组中,可以使用以下命令:

sudo groupmod -n mygroup_new mygroup
sudo gpasswd -a john mygroup_new
gpasswd

该命令允许管理员设置、更改或删除用户组的密码,以控制对组的访问。

基本语法如下:

sudo gpasswd [选项] 组名

参数:

  • -a:将指定的用户添加到组中。

  • -d:从组中删除指定的用户。

  • -r:设置或更改组的密码。

  • -R:删除组的密码(如果组是系统组)。

  • -f:强制执行操作,忽略错误。

例如,要将用户john添加到名为mygroup的组中,可以使用以下命令:

sudo gpasswd -a john mygroup

这将把用户john添加到mygroup组中。

如果需要更改组的密码,可以使用以下命令:

sudo gpasswd -r mygroup

如果要删除组的密码,可以使用以下命令:

sudo gpasswd -R mygroup

文件

介绍

子码与掩码

子码是文件权限的一部分,它表示特定的权限,如读、写或执行。在Linux中,共有三个权限组:所有者(Owner)、所属组(Group)和其他用户(Others)。每个权限组都有自己的子码集合,可以用来表示该组的权限。

注意:一个用户只能扮演一个角色 如果不是拥有者才会看所属组的权限 最后才会是其他用户的权限

掩码(Mask)是用于组合子码的数字模式,用于确定文件的权限。在Linux中,使用数字0和1组成的掩码来表示不同的权限组合。

  • 0:没有任何权限

  • 1:只读权限

  • 2:只写权限

  • 3:读和执行权限

  • 4:写和执行权限

  • 5:将文件设置为只读权限(如果文件原本可写)

  • 6:将文件设置为只写和执行权限(如果文件原本可写)

  • 7:将文件设置为可读和可写可执行权限(如果文件原本可写)

权限掩码

umask是一个用于设置文件创建权限的命令。它决定了新创建的文件和目录的默认权限。umask会创建一个八进制数字,该数字表示用户和组用户对新文件的默认权限。

umask [选项] 数字
最终权限 = 起始权限&(~umask)

文件与目录的起始权限子码是不同的 umask的默认值是0022 -> 000 010 010 ~002=755

或者0002 -> 000 000 010 =775

drwxrwxr-x 111 111 101 = 111 111 111 & 111 111 101

目录的读是查看目录内容 写是创建文件 执行是进入目录 -rw-rw-r-- 110 110 100 = 110 110 110 & 111 111 101

分类

文件权限由三个主要部分组成:

  1. 文件所有者(Owner):文件的所有者通常是指创建该文件的用户。

  2. 所属组(Group):文件所属的组,即文件共享权限的用户组。

  3. 其他用户(Others):除了所有者和所属组之外的用户。

每个部分都有一组权限,通常用数字表示,这些数字组合在一起形成了一个八位的数字表示法,称为权限掩码(Permission Mask)。在Linux中,文件权限通常使用三位数字表示,每位的含义如下:

  • 读权限(4):表示用户可以读取文件的内容。

  • 写权限(2):表示用户可以修改文件的内容。

  • 执行权限(1):表示用户可以执行文件中的命令或程序。

指令

ls -l

使用这个命令可以查看文件的详细权限信息,包括所有者、所属组和其他用户的权限。

chmod

基本语法如下:

chmod [选项] 权限模式 文件名

其中,权限模式是由数字或符号表示的权限集。权限集由三个八进制数字组成,每个数字表示所有者、所属组和其他用户的权限。

参数:

  • u+<权限>:为所有者添加新的权限。

  • g+<权限>:为所属组添加新的权限。

  • o+<权限>:为其他用户添加新的权限。

  • u-<权限>:从所有者移除权限。

  • g-<权限>:从所属组移除权限。

  • o-<权限>:从其他用户移除权限。

  • r=<权限>:为文件设置读权限。

  • w=<权限>:为文件设置写权限。

  • x=<权限>:为文件设置执行权限。

  • =<权限>:为文件设置与已有权限相同的权限。

  • +:添加现有未被继承的权限。

  • -:从文件或目录中删除现有权限。

  • *:为所有用户添加或删除指定类型的权限。

权限模式:

包括:

  1. 数字权限模式:使用数字表示权限,通常使用三位数字表示,每位数表示一类用户的权限。其中,最高位表示特殊用户(如root)的权限,第二位表示所有者权限,第三位表示所属组权限,最后一位表示其他用户的权限。常见的数字权限模式包括:

* 000:无权限,文件或目录无法读取、写入或执行。
* 077:所有用户都具有读、写和执行权限。
* 066:所有用户具有读、写权限,只有所有者具有执行权限。
* 0755:所有用户具有读、写和执行权限,所属组和其他用户只有执行权限。这是大多数文件的常见权限设置。
  1. 符号权限模式:使用符号表示权限,常见的符号包括r(读)、w(写)和x(执行)。通过使用连字符和星号来组合这些符号,可以创建复杂的权限模式。常见的符号权限模式包括:

* `u+rw`:所有者具有读和写权限。
* `g+rx`:所属组具有读权限。
* `o+x`:其他用户具有执行权限。
* `ug+s`:所有者、所属组和其他用户都具有特殊权限

例如,要设置目录的默认创建权限为0755,可以使用以下命令:

mkdir new_directory && chmod 0755 new_directory

chown chgrp
chown

在Linux中,chown是一个用于更改文件或目录所有者(owner)的命令行工具。允许系统管理员或用户更改文件或目录的所有者,以便将所有权从一个用户或组转移到另一个用户或组。

参数:

  1. -R:递归地更改目录及其子目录中的所有文件的所有者。

  2. <用户名>:将文件或目录的所有权更改为指定的用户名。

  3. <用户组>:将文件或目录的所有权更改为指定的用户组。

  4. :将文件或目录的所有权更改为指定的UID。

  5. :将文件或目录的所有权更改为指定的GID。

例如,要将文件的所有权更改为"john"用户,可以使用以下命令:

chown john filename
chgrp

在Linux中,chgrp是一个用于更改文件或目录所属组的命令行工具。它允许系统管理员或用户更改文件或目录所属的组,以便将文件从一个组移动到另一个组。

参数:

  1. -R:递归地更改目录及其子目录中所有文件所属的组。

  2. <用户组>:将文件或目录的所属组更改指定的用户组。

  3. :将文件或目录的所属组更改指定的GID。

例如,要将文件的所属组更改为"john"组,可以使用以下命令:

chgrp john filename

setfacl

setfacl命令用于设置ACL(Access Control Lists)属性,ACL允许用户定义复杂的访问控制策略。ACL可以用于文件和目录,以允许或拒绝特定用户、组或所有用户的访问权限。

基本语法如下:

setfacl [选项] 文件或目录

常见的选项包括:

  • -b:在设置ACL之前显示当前的ACL。

  • -c:清除所有ACL。

  • -m:将ACL更新应用于文件或目录的所有后续访问。

  • -n:不设置ACL,而是显示当前的ACL。

  • -R:递归地应用于目录及其子目录。

  • -k:来设置默认的ACL规则,即当没有指定特定的ACL规则时使用。

例如,要为文件设置ACL,可以使用以下命令:

setfacl -m u::rwx,g::rx,o::rx 文件名

这将为文件设置ACL,允许所有用户(u)读、写和执行权限(rwx),允许所属组(g)读取权限(rx),并允许其他用户(o)读取权限(rx)。

你可能感兴趣的:(linux,数据库,大数据)