Linux下的用户权限管理

在Linux系统中,用户和组用于管理文件和目录的访问权限。每个用户都有一个唯一的用户ID(UID),而每个组都有一个唯一的组ID(GID)。下面是一些有关Linux下用户和组的常见操作和概念:

  1. 用户管理:

    • 创建用户:可以使用 useradd 命令创建新用户,例如 useradd username
    • 删除用户:使用 userdel 命令删除用户,例如 userdel username
    • 修改用户信息:使用 usermod 命令修改用户的属性,例如 usermod -c "New User" username
    • 切换用户:使用 su 命令切换到其他用户,例如 su - username
  2. 组管理:

    • 创建组:可以使用 groupadd 命令创建新组,例如 groupadd groupname
    • 删除组:使用 groupdel 命令删除组,例如 groupdel groupname
    • 修改组信息:使用 groupmod 命令修改组的属性,例如 groupmod -n newgroupname groupname
  3. 用户和组关联:

    • 将用户添加到组:使用 usermod 命令将用户添加到一个或多个组,例如 usermod -aG groupname username
    • 查看用户所属的组:使用 groups 命令查看用户所属的组,例如 groups username
  4. 文件和目录权限:

    • 每个文件和目录都有一个所有者用户和一个所有者组,它们决定了谁可以访问、修改或执行文件。
    • 使用 chown 命令可以更改文件或目录的所有者,例如 chown username filename
    • 使用 chgrp 命令可以更改文件或目录的所属组,例如 chgrp groupname filename
    • 使用 chmod 命令可以更改文件或目录的权限,例如 chmod 755 filename

USERADD

useradd 命令用于在Linux系统中创建新用户。以下是 useradd 命令的一些常用参数:

  • -c, --comment COMMENT:为用户添加注释,通常是用户的描述信息。
  • -d, --home HOME_DIR:指定用户的主目录路径。
  • -e, --expiredate EXPIRE_DATE:设置用户的过期日期,格式为 YYYY-MM-DD。
  • -f, --inactive INACTIVE:设置用户账号的非活动时间(以天为单位),超过该时间将被锁定。
  • -g, --gid GROUP:指定用户所属的初始组。
  • -G, --groups GROUPS:指定用户所属的其他附加组。
  • -m, --create-home:创建用户的主目录。
  • -M, --no-create-home:不创建用户的主目录。
  • -n, --no-user-group:不创建与用户名同名的初始组。
  • -r, --system:创建一个系统用户。
  • -s, --shell SHELL:指定用户的登录Shell。/sbin/nologin
  • -u, --uid UID:为用户指定一个唯一的用户ID。
  • -U, --user-group:创建与用户名同名的初始组。

USERMOD

usermod 是一个用于修改用户账户属性的命令,它可以用于更改用户的各种设置。以下是一些常用的 usermod 参数:

  • -c, --comment COMMENT:设置用户账户的注释字段,通常用于提供有关用户的描述信息。
  • -d, --home HOME_DIR:更改用户的主目录。
  • -e, --expiredate EXPIRE_DATE:设置用户账户的过期日期。
  • -g, --gid GROUP:更改用户的主要组。
  • -G, --groups GROUPS:设置用户的附加组。可以指定一个逗号分隔的组列表。
  • -l, --login NEW_LOGIN:更改用户的登录名。
  • -p, --password PASSWORD:设置用户的密码。密码应该是经过加密的。
  • -s, --shell SHELL:更改用户的登录 shell。
  • -u, --uid UID:更改用户的用户 ID。
  • -L, --lock:锁定用户账户,禁止用户登录。
  • -U, --unlock:解锁用户账户,允许用户登录。

PASSWD

passwd 命令用于更改用户密码。以下是一些常用的 passwd 命令参数:

  • -l, --lock:锁定用户账户,禁止用户登录。
  • -u, --unlock:解锁用户账户,允许用户登录。
  • -d, --delete:删除用户密码,允许无密码登录。
  • -e, --expire:强制用户在下次登录时更改密码。
  • -S, --status:显示用户密码的状态信息。
  • -a, --all:对所有用户执行操作。
  • -r, --root:以 root 身份执行操作。
  • -h, --help:显示帮助信息。

这些参数可以与 passwd 命令一起使用,以执行不同的操作。例如,要锁定用户账户,可以使用 passwd -l 用户名 命令。要解锁用户账户,可以使用 passwd -u 用户名 命令。

GROUP

group 命令用于管理用户组。以下是一些常用的 group 命令参数:

  • -g, --gid GID:设置用户组的组 ID。
  • -n, --name NAME:设置用户组的名称。
  • -r, --system:创建一个系统用户组。
  • -a, --add USER:将用户添加到用户组。
  • -d, --delete USER:从用户组中删除用户。
  • -R, --root CHROOT_DIR:将操作限制在指定的 chroot 目录中。
  • -h, --help:显示帮助信息。

这些参数可以与 group 命令一起使用,以执行不同的操作。例如,要创建一个新的用户组,可以使用 groupadd 组名 命令。要将用户添加到用户组,可以使用 groupadd -a 用户名 组名 命令。

GROUPADD

groupadd 命令用于创建新的用户组。以下是一些常用的 groupadd 命令参数:

  • -g, --gid GID:设置用户组的组 ID。
  • -r, --system:创建一个系统用户组。
  • -f, --force:即使用户组已经存在,也强制创建新的用户组。
  • -K, --key KEY=VALUE:设置用户组的键值对属性。
  • -R, --root CHROOT_DIR:将操作限制在指定的 chroot 目录中。
  • -h, --help:显示帮助信息。

这些参数可以与 groupadd 命令一起使用,以执行不同的操作。例如,要创建一个新的用户组,可以使用 groupadd 组名 命令。要创建一个系统用户组,可以使用 groupadd -r 组名 命令。

GROUPMOD

groupmod 命令用于修改用户组的属性。以下是一些常用的 groupmod 命令参数:

  • -g, --gid GID:修改用户组的组 ID。
  • -n, --new-name NEW_GROUP:修改用户组的名称。
  • -o, --non-unique:允许使用非唯一的组 ID。
  • -R, --root CHROOT_DIR:将操作限制在指定的 chroot 目录中。
  • -h, --help:显示帮助信息。

这些参数可以与 groupmod 命令一起使用,以执行不同的操作。例如,要修改用户组的名称,可以使用 groupmod -n 新组名 旧组名 命令。要修改用户组的组 ID,可以使用 groupmod -g 新组ID 组名 命令。

CHMOD

chmod 命令用于更改文件或目录的权限。它可以使用不同的参数来设置不同的权限。

下面是 chmod 命令的常见参数:

  • u:表示文件所有者(user)的权限。
  • g:表示文件所属组(group)的权限。
  • o:表示其他用户(others)的权限。
  • a:表示所有用户的权限,等同于 ugo 的组合。
  • +:添加指定的权限。
  • -:移除指定的权限。
  • =:设置指定的权限,覆盖之前的权限设置。

权限参数:

  • r:读取权限。
  • w:写入权限。
  • x:执行权限。

使用 chmod 命令时,可以组合这些参数来设置不同的权限。以下是一些示例:

  1. 将文件 script.sh 的所有者设置为可读写执行,所属组和其他用户只有读取权限:

    chmod u=rwx,g=r,o=r script.sh
    
  2. 将目录 mydir 及其所有子目录和文件的所有者和所属组设置为可读写执行,其他用户只有读取和执行权限:

    chmod -R u=rwx,g=rwx,o=rx mydir
    
  3. 将文件 file.txt 的所有用户的写入权限移除:

    chmod a-w file.txt
    
  4. 将文件 program 的所有用户的执行权限设置为与所有者相同:

    chmod a=x,g=x,o=x program
    

CHOWN

用于修改用户和组的所有者

用户

chown root aaa  //修改为root所有者

chown :root aaa // 用于修改为root组