当前位置:   article > 正文

【Linux】账号和权限管理

【Linux】账号和权限管理

目录

一、管理用户账号和组账号

1、useradd 

2、passwd

3、usermod

4、userdel 

二、管理目录和文件的属性

1、组账号管理

1)groupadd

2)gpasswd

3)groupdel

4)groups

2、文件权限

1)chmod

2)chown


一、管理用户账号和组账号

用户账号

  • 超级用户:拥有系统中的最高权限,并可以执行系统中的任何操作。
  • 普通用户:是系统中的常规用户,通常用于执行一般的日常任务,如浏览文件、运行应用程序等。权限通常受到限制。
  • 程序用户:是为了运行特定的服务或应用程序而创建的用户账户。通常具有最小的权限。

组账号

  • 基本组(私有组):当用户创建文件或目录时,默认情况下,它们的所属组将设置为用户的基本组。
  • 附加组(公共组):附加组是用户可以加入的其他组。
  • UID:是用户的唯一标识符,用于在系统中区分不同的用户。0 是超级用户(root用户)的标识符,具有最高的权限。
  • GID:是组的唯一标识符,用于在系统中区分不同的组。0 是超级用户(root用户)的基本组的标识符。

用户账号文件    /etc/passwd      有7个字段  
用户名:x密码占位符:UID:GID:用户说明:家目录:登录shell
允许登录系统/bin/bash  不允许登录系统/sbin/nologin  /bin/false         
用户密码文件    /etc/shadow      有9个字段  
用户名:密码字符串:上一次修改密码的时间:密码最短有限期:密码最长有限期:密码过期提前告警的时间:密码过期禁用用户的时间:账号失效的时间:空
  从1970.1.1开始算起   默认为0不限制  默认为99999永不过期  默认为7             

1、useradd 

useradd 是 Linux 和 Unix 系统中用于创建新用户账户命令。这个命令是 usermoduserdelpasswd 等命令的一部分,这些命令一起构成了用户管理的基础工具。以下是 useradd 命令的一些基本用法和选项:

基本用法:

  1. 指定用户主目录:

    sudo useradd -d /home/newhome username

    这会创建一个新用户,并指定其主目录为 /home/newhome

  2. 指定用户ID:

    sudo useradd -u uid username

    这会创建一个新用户,并分配指定的用户ID(uid)。

  3. 指定用户组:

    sudo useradd -g groupname username

    这会创建一个新用户,并将其加入到指定的用户组。

  4. 创建用户并指定其Shell:

    sudo useradd -s /bin/bash username

    这会创建一个新用户,并指定其默认 shell/bin/bash

常用选项:

  • -m:在创建用户的同时,为其创建一个家目录。
  • -M:不为用户创建家目录。
  • -e YYYY-MM-DD:设置账户的过期日期。
  • -u:指定UID
  • -g:基本组名或GID
  • -G:附加组名或GID
  • -d:指定家目录
  • -s:指定登录shell

示例:

  1. 创建一个新用户 bob,并设置其家目录为 /home/bob

    sudo useradd -m -d /home/bob bob
  2. 创建一个新用户 alice,设置其默认 shell 为 /bin/bash

    sudo useradd -s /bin/bash alice
  3. 创建一个新用户 service,设置其为系统用户,并添加到 servicegroup 用户组:

    sudo useradd -r -g servicegroup service

2、passwd

passwd 是一个用于更改用户密码的命令。它可以允许用户更改自己的密码,也可以允许超级用户(root)更改其他用户的密码。以下是 passwd 命令的一些基本用法和选项:

基本用法:

  1. 更改当前用户密码:

    passwd

    这会提示您输入当前用户的旧密码,然后要求您输入新密码两次以进行确认。

  2. 更改指定用户密码(需要超级用户权限):

    passwd username

    这会提示超级用户输入要更改密码的用户名,并要求输入新密码两次以进行确认。

常用选项:

  • -d:删除用户密码,使用户账户变成无密码状态。
  • -l:锁定用户账户,禁止用户登录。
  • -u:解锁用户账户,允许用户登录。
  • -S:显示密码的状态信息,如过期时间、是否被锁定等。

示例:

  1. 更改用户 alice 的密码:

    passwd alice
  2. 锁定用户 bob 的账户:

    passwd -l bob
  3. 解锁用户 alice 的账户:

    passwd -u alice

3、usermod

usermod 是一个用于修改用户账户属性的命令,它可以用于修改用户的各种属性,如用户名、用户ID、主目录、默认shell等。以下是 usermod 命令的一些基本用法和选项:

基本用法:

  1. 修改用户的用户名:

    usermod -l new_username old_username

    这会将用户的用户名从 old_username 修改为 new_username

  2. 修改用户的用户ID(UID):

    usermod -u new_uid username

    这会将用户的用户ID修改为 new_uid

  3. 修改用户的主目录:

    usermod -d /new/home/dir username

    这会将用户的主目录修改为 /new/home/dir

常用选项:

  • -c:用于添加一些关于用户的描述信息。
  • -g:修改用户的主要用户组。
  • -G:修改用户的附加用户组。
  • -a:在 -G 选项中使用,用于将用户添加到附加用户组,而不是覆盖原有的用户组。
  • -e:设置账户的过期日期。

4、userdel 

userdel 是一个用于删除用户账户的命令,它用于从系统中删除指定的用户账户及相关文件。以下是 userdel 命令的一些基本用法和选项:

基本用法:

  1. 删除用户账户:

    userdel username

    这会删除系统中的指定用户账户及其相关文件,但不会删除该用户的主目录(默认情况下)。

  2. 删除用户账户及其主目录:

    userdel -r username

    添加 -r 选项会删除用户账户及其关联的主目录和文件。

常用选项:

  • -f:强制删除用户账户,即使用户当前登录或用户的进程仍在运行中。
  • -r:同时删除用户的主目录及其相关文件。
  • -Z:删除用户的 SELinux 用户记录。

二、管理目录和文件的属性

系统环境初始化配置文件   /etc/profile      /etc/bashrc    对所有用户有效     
用户环境初始化配置文件~/.bash_profile      ~/.bashrc     ~/.bash_logout 只对当前用户有效  
/etc/profile   ~/.bash_profile设置用户每次登录时要执行的命令(前面加export
/etc/bashrc    ~/.bashrc设置切换shell环境时(包括登录系统时)要执行的命令
~/.bash_logout  设置退出登录或shell环境时执行的命令

组账号文件   /etc/group      有4个字段                             
             组账号名:x占位符:GID号:组账号成员  

1、组账号管理

1)groupadd

groupadd 是一个用于在系统中创建新用户组的命令。它允许管理员在系统中添加一个新的用户组,并可以指定该用户组的组ID(GID)和其他属性。以下是 groupadd 命令的基本用法和选项:

基本用法:

  1. 创建新用户组:
    groupadd groupname   #这会在系统中创建一个名为 groupname 的新用户组。

常用选项:

  • -g GID:指定新用户组的组ID(GID)。如果未指定,系统将自动分配一个未被使用的GID。
  • -r:创建一个系统用户组。这将为用户组分配一个低的GID,通常在500以下。

2)gpasswd

gpasswd 是一个用于管理用户组的命令,它允许管理员为用户组设置密码、添加或删除组成员等操作。以下是 gpasswd 命令的基本用法和选项:

基本用法:

  1. 设置用户组密码:

    gpasswd groupname

    这会提示您输入一个密码,并将其与指定的用户组相关联。

  2. 添加用户到用户组:

    gpasswd -a username groupname

    这会将指定的用户添加到指定的用户组中。

  3. 从用户组中删除用户:

    gpasswd -d username groupname

    这会从指定的用户组中删除指定的用户。

常用选项:

  • -A username:指定一个用户作为管理员。管理员可以添加或删除用户组成员,以及更改用户组密码。
  • -M username1,username2,...:直接设置用户组的成员列表,取代原有成员列表。
  • -R:指定用户组为只读模式,禁止普通用户修改用户组。

3)groupdel

groupdel 是一个 Linux 命令,用于删除系统中的一个用户组。在删除用户组之前,通常需要确保没有任何用户属于该组,否则会出现错误。

命令格式如下:

groupdel [options] groupname

其中:

  • groupname 是要删除的用户组的名称。

选项可以包括一些额外的参数,如 -f 用于强制删除组,即使仍有用户属于该组。

4)groups

groups 命令用于显示当前用户所属的用户组列表。在执行此命令时,系统会返回当前用户所属的所有用户组名称。

命令格式如下:

groups [username]

其中:

  • username 是要查询其所属用户组的用户名。如果未指定用户名,则默认为当前登录用户。

示例:

groups

这会显示当前登录用户所属的所有用户组。

groups username

这会显示指定用户(username)所属的所有用户组。

注意:groups 命令仅显示当前用户的用户组列表,不会显示其他用户的信息。

查询登录系统的用户: w  who  users

2、文件权限

1)chmod

chmod 是一个用于修改文件或目录权限的命令,它允许用户设定文件或目录的读取、写入和执行权限。以下是 chmod 命令的基本用法和选项:

基本用法:

  1. 设定文件权限:

    chmod permissions filename

    这会将指定文件的权限设置为 permissions 所指定的权限。

  2. 设定目录权限:

    chmod permissions directory

    这会将指定目录的权限设置为 permissions 所指定的权限。

权限表示方式:

  • 数字形式表示权限:

    • 0:没有权限
    • 1:执行权限
    • 2:写入权限
    • 4:读取权限
    • 可以通过将这些数字相加来指定多个权限。例如,7 表示读、写、执行权限4 + 2 + 1)。
  • 符号形式表示权限:

    • r:读权限
    • w:写权限
    • x:执行权限
    • +:添加权限
    • -:移除权限
    • =:设定权限

常用选项:

  • -R:递归地应用权限修改,包括目录下的所有文件和子目录。

示例:

  1. 将文件 example.txt 的权限设置为所有者具有读取和写入权限,组用户具有读取权限,其他用户具有执行权限:

    chmod 640 example.txt
  2. 将目录 documents 及其下所有文件和子目录的权限设置为所有者具有读、写、执行权限,组用户和其他用户具有只读权限:

    chmod -R 755 documents
  3. 将文件 script.sh 的所有者添加执行权限:

    chmod u+x script.sh

注意:在使用 chmod 命令时,请务必谨慎,确保不会意外地更改了系统中文件或目录的权限,以免造成不必要的问题。

2)chown

chown 是一个用于改变文件或目录的所有者(owner)和/或所属组(group)的命令。这个命令通常由系统管理员使用,以便在需要时更改文件或目录的所有者和所属组。以下是 chown 命令的基本用法和选项:

基本用法:

  1. 改变文件的所有者和/或所属组:

    chown [options] owner[:group] file(s)

    这会将指定文件的所有者改变为 owner,并可选地将所属组改变为 group。如果未指定 group,则会使用当前文件的所属组。

  2. 递归地改变目录及其下所有文件和子目录的所有者和/或所属组:

    chown -R [options] owner[:group] directory(s)

    这会递归地改变指定目录下的所有文件和子目录的所有者和/或所属组。

常用选项:

  • -R, --recursive:递归地改变目录及其下所有文件和子目录的所有者和/或所属组。
  • -v, --verbose:显示每个文件的改变详细信息。
  • --reference=ref_file:从 ref_file 中复制文件所有者和/或所属组的信息。
  • -h, --no-dereference:不跟踪符号链接的目标。

示例:

  1. 将文件 example.txt 的所有者改变为 john,所属组改变为 developers

    chown john:developers example.txt
  2. 将文件 file1.txt 的所有者改变为和文件 file2.txt 相同的所有者:

    chown --reference=file2.txt file1.txt
  3. 将符号链接的目标文件的所有者改变为 admin,而不是链接本身的所有者:

    chown -h admin symlink_target

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/IT小白/article/detail/490483
推荐阅读
相关标签
  

闽ICP备14008679号