章6:用户和组及权限

用户和组及权限

  • 用户创建以及组的创建及权限修改
    • 用户
    • 主组和补充组
    • 权限管理
  • sudo -i 和 su -root的区别
    • 1.su
    • 2.sudo
    • 3.su - 和su和 su - root
    • 4.sudo -i 和 su -
  • ps命令

用户创建以及组的创建及权限修改

用户

  • 用户账户:
    每个用户都有一个唯一的用户名和用户ID(UID)。
    用户账户用于验证用户身份,并确定用户可以访问哪些系统资源。
  • 用户主目录:
    每个用户都有一个主目录,通常是 /home/用户名。
    用户的主目录包含用户的个人文件和配置文件。
  • 用户权限:
    用户权限决定了用户可以执行哪些操作,如读取、写入或执行文件。
    用户权限可以通过文件权限、访问控制列表(ACL)和用户组来管理。
  • 用户管理命令:
    useradd:添加新用户。
    usermod:修改现有用户信息。
    userdel:删除用户。
    passwd:更改用户密码。
    id:显示用户 UID、GID 及所属组。
    who whoami:显示当前登录用户的信息。

  • 组账户:
    组是具有相似权限要求的用户的集合。
    每个组都有一个唯一的组名和组ID(GID)。
  • 默认组:
    每个用户都属于至少一个组,通常是用户的主组。
    系统有一些预定义的组,如 root、wheel、users 等。
  • 组权限:
    组权限决定了组成员可以访问哪些资源。
    组权限通常比单独的用户权限更宽松,以便于管理多个用户的权限。
  • 组管理命令:
    groupadd:添加新组。
    groupmod:修改现有组信息。
    groupdel:删除组。
    groups:显示用户所属的所有组。

主组和补充组

  • 主组(Primary Group)
    每个用户在创建时都会自动被分配到一个主组
    用户的主组通常与用户名相同。
    用户的主组决定了用户对其主组内文件的默认访问权限。
  • 补充组(Secondary Groups)
    用户可以被添加到一个或多个补充组中,这些组不是用户的主组。
    补充组提供了一种方式,允许用户访问多个组的资源,而不需要将用户的主要账户移动到不同的组。
    用户可以对其补充组内的文件拥有不同的权限,这些权限由该组的权限设置决定。

权限管理

  • 文件和目录权限
    Linux 中的文件和目录权限由三组数字表示,每组数字分别代表所有者(Owner)、所属组(Group)和其他用户(Others)的权限。
    读(Read, r):权限值 4,可以查看文件内容或列出目录内容。
    写(Write, w):权限值 2,可以修改文件内容或在目录中创建/删除文件。
    执行(Execute, x):权限值 1,可以执行文件或访问目录。
  • 更改权限
    chmod:更改文件或目录的权限。
    例如,chmod 755 filename 将文件的权限设置为 755。
    使用 u(user)、g(group)、o(others)和 a(all)指定权限影响的用户。
    使用 +(添加)、-(移除)和 =(设置)来更改权限。
    chown:更改文件或目录的所有者和所属组。
    例如,chown user:group filename 将文件的所有者更改为 user,所属组更改为 group。
  • 特殊权限
    SUID(Set User ID):执行文件时,进程将以文件所有者的权限运行。
    SGID(Set Group ID):执行文件时,进程将以文件所属组的权限运行。
    Sticky Bit:对于目录,Sticky Bit 确保只有文件所有者或 root 可以删除或重命名文件。

推荐一个好文章: link

sudo -i 和 su -root的区别

1.su

su命令是从当前用户切换到另一用户的命令,它允许当前用户切换到另一个用户账户,从而获得该用户的权限和环境。
su [选项] [用户名]

su - :切换到root用户(等同于su - root)
su user01 :切换到user01用户
su -c "ls /root" :执行命令后退出此用户,返回到原始用户
su -c "echo $PATH" user01 :在user01用户下执行命令并显示结果

  • 使用su命令需要知道目标用户的密码,除非配置了无密码sudo。
  • su命令切换用户后,当前用户的环境变量和工作目录不会被保留,除非使用–login选项。
  • 在使用su命令时,需要谨慎处理权限和安全问题,避免滥用超级用户权限。

2.sudo

sudo(superuser do)命令允许授权的用户以另一个用户的安全权限执行命令,默认情况下是以超级用户(root)的身份执行。
sudo [选项] 命令

sudo -i :这将提示输入当前用户的密码,然后启动一个新的 root 用户的 shell 会话
sudo -l :列出当前用户被授权执行的命令
sudo -u user01 ls /home/user01 :这将提示输入当前用户的密码,然后以 user01 用户的身份执行 ls /home/user01 命令

  • 使用 sudo 命令需要当前用户在 /etc/sudoers 文件中有相应的权限。
  • 出于安全考虑,sudo 默认会记录每次命令执行的详细信息,包括执行时间、执行用户和执行的命令。
  • sudo 命令提供了一种安全的方式来执行需要更高权限的操作,但它也带来了潜在的安全风险,因此需要谨慎使用。

3.su - 和su和 su - root

su
命令默认切换到超级用户(通常是 root 用户)。
不会读取目标用户的配置文件,因此环境变量和路径可能与原用户相同
su -
它会读取目标用户的配置文件(如 .bashrc、.profile 等),并设置环境变量,使其尽可能地模仿目标用户的登录会话。
这将提供一个完整的目标用户环境,包括用户的 PATH、HOME 目录等。
su - root
它会读取 root 用户的配置文件,提供一个完整的 root 用户环境。
这通常用于需要 root 权限的场景,如系统管理任务。

  • su 默认切换到 root 用户,而不读取配置文件。
  • su - 切换到指定用户,并读取配置文件,提供完整的用户环境。
  • su - root 切换到 root 用户,并读取配置文件,提供完整的 root 用户环境。
  • 使用 su - 或 su - root 可以确保切换到的用户具有正确的环境变量和路径,这对于执行需要特定环境的命令非常重要。而 su 命令则提供了一种快速切换用户的方式,但可能需要手动设置环境变量

4.sudo -i 和 su -

环境:sudo -i使用当前用户的环境。su - 使用目标用户环境
权限:两者都需要相应的权限。使用 sudo -i 需要用户在 /etc/sudoers 文件中具有相应的 sudo 权限,而不是知道 root 用户的密码(需要当前用户密码)。而 su 通常需要知道目标用户的密码,除非配置了密码less sudo。
安全性:sudo 通常更安全,因为它允许管理员控制和限制用户可以执行的命令,且提供了一种安全的方式来执行需要 root 权限的操作,因为 sudo 会记录每次命令执行的详细信息,包括执行时间、执行用户和执行的命令。而 su -会记录命令执行的详细信息,因为它实际上是以 root 用户登录的,而不是以普通用户身份执行命令。

ps命令

ps [选项] :显示当前进程状态的工具。
常用选项

  • -aux :显示所有与终端会话关联和无关的进程。
    a:显示所有终端的进程。
    u:以用户友好的格式显示。
    x:显示没有控制终端的进程。
  • ef :显示所有进程的完整信息。
    e:显示所有进程。
    f:显示完整的进程信息,包括进程的启动时间、终端、用户等。
  • p PID :显示指定 PID 的进程信息。
  • u 用户名 :显示指定用户的进程信息。

你可能感兴趣的:(服务器,linux,数据库)