0


Linux-有关用户和组的命令详解

文章目录

用户和组

用户和组是非常重要的概念,主要用于控制对系统资源的访问和权限管理。

介绍

用户

Linux系统中的每个用户都由一个唯一的用户名标识,用户可以属于一个或多个组。用户的详细信息通常存储在/etc/passwd文件中。该文件中的每一行都代表一个用户,其中包含7个字段,它们分别是:

  • 用户名
  • 密码
  • 用户ID(UID) 用户的唯一标识
  • 组ID(GID) 表明用户的基本组是谁
  • 用户全名或注释
  • 用户主目录的路径
  • 用户默认的Shell程序的路径

在Linux系统中,组是一组用户的集合,每个组都有一个唯一的组名和组ID(GID)。组的详细信息通常存储在/etc/group文件中。该文件中的每一行都代表一个组,其中包含4个字段,它们分别是:

  • 组名
  • 组密码(已加密)
  • 组ID(GID)
  • 组成员

skel

在Linux中,skel是指骨架(Skeleton)的缩写,通常用于在创建新用户时自动设置用户的默认环境。skel文件夹通常位于/etc/skel目录下,该目录中包含一些文件和目录,它们被用作新用户的默认文件和目录。

当创建新用户时,系统会自动复制/etc/skel目录中的所有文件和目录到新用户的主目录中。这些文件和目录包括用户的shell配置文件(例如.bashrc和.profile),以及一些默认的模板文件(例如.desktop文件),可以帮助新用户快速上手并使用系统。

通过编辑/etc/skel目录下的文件和目录,管理员可以自定义新用户的默认环境。例如,可以添加自定义的shell脚本、设置默认的终端和编辑器、设置默认的桌面环境等等。这样可以使得新用户在创建时拥有一个与系统当前环境相似的默认环境。

需要注意的是,skel文件夹中的文件和目录对已经存在的用户没有任何影响,它们只会影响新用户的默认环境。如果需要修改已经存在用户的环境,需要手动修改他们的配置文件或目录。

家目录下的三个脚本文件
.bash_logout 用户退出的时候自动执行
.bash_profile 用户登录的时候执行
.bashrc 进入新的bash环境的时间执行

如何正确的选择脚本文件

用户个性化设置:
只对当前用户生效,就修改家目录下的.bashrc或者.bash_profile文件
全局生效,针对所有用户生效 ,系统设置 /etc/bash_profile /etc/bashrc

useradd

useradd

是一个 Linux 命令,用于创建新用户账户

选项

语法

useradd [选项] 用户名
  • -c:用于指定用户的注释。注释通常包括用户的姓名、电话号码、邮箱等信息。
  • -d:用于指定用户的主目录。如果不指定,则默认为 /home/用户名
  • -g:用于指定用户的初始登录组。
  • -m:如果指定了 -d 选项,则使用该选项可以创建用户的主目录。
  • -s:用于指定用户的默认 shell。如果不指定,则默认为 /bin/bash
  • -u:用于指定用户的 UID。如果不指定,则会自动分配一个未被使用的 UID。

使用

查看passwd文件

[root@localhost home]# cat /etc/passwd
root:x:0:0:root:/root:/bin/bash

查看用户sc的信息

[root@localhost home]# id sc1
uid=1001(sc1) gid=1001(sc1) 组=1001(sc1)
没有指明组,会自动创建跟用户同名的组
  • 创建用户的时候指定基本组和附加组
[root@localhost home]# useradd -g sc1 -G sc sc2    

-g 指定基本组    :只有一个
-G 指定附加组    :可以有多个
指定某个组就拥有了这个组的权限了、方便管理
[root@localhost home]# id sc2
uid=1002(sc2) gid=1001(sc1) 组=1001(sc1),1000(sc)
  • 指定用户id[root@localhost home]# useradd -u 2000 sc3 -u创建的时候指定id[root@localhost home]# iduid=0(root) gid=0(root) 组=0(root) 环境=unconfined_u:unconfined_r:unconfined_t:s0-s0:c0.c1023
  • 创建用户的时候,不指定用户id是,默认情况下,id会在前一个用户的基础上加一
[root@localhost home]# useradd sc4
[root@localhost home]# id
uid=0(root) gid=0(root) 组=0(root) 环境=unconfined_u:unconfined_r:unconfined_t:s0-s0:c0.c1023
  • 指定用户的说明信息
[root@localhost home]# useradd -c "test sc5" sc5
>-c指定用户的说明信息
[root@localhost home]# grep sc5 /etc/passwd
sc5:x:2002:2002:test sc5:/home/sc5:/bin/bash
  • 指定用户的家目录
>普通情况下,一个普通用户,只能在家目录
[root@localhost home]# useradd -d /opt/home/sc6 sc6
>-d 指定家目录
useradd:无法创建目录 /opt/home/sc6
[root@localhost home]# grep sc6 /etc/passwd
sc6:x:2003:2003::/opt/home/sc6:/bin/bash
  • 指定用户登录的shell
[root@localhost home]# useradd -s /bin/sh sc7
[root@localhost home]# grep sc7 /etc/passwd
sc7:x:2004:2004::/home/sc7:/bin/sh
[root@localhost home]# su - sc7
-sh-4.2$                                         登录shell

需要注意的是,

useradd

命令只能被 root 用户或者具有 sudo 权限的用户执行。如果没有指定密码,则新用户无法登录系统。

usermod

usermod命令用于修改现有用户的属性和设置。通过使用usermod命令,管理员可以修改用户的用户名、用户ID、主目录、默认shell、附加组等属性。

选项

语法

usermod [选项] 用户名

其中,用户名指要修改的现有用户的用户名。选项用于指定要进行的修改操作,下面是一些常用选项的介绍:

  • -l: 修改用户的用户名。
  • -u: 修改用户的用户ID。
  • -d: 修改用户的主目录。
  • -s: 修改用户的默认shell。
  • -G: 修改用户所属的附加组。
  • -a: 将用户添加到指定的附加组中。
  • -c: 修改用户的备注信息。

使用

  • 修改用户的用户名:
 usermod -l newusername oldusername
  • 修改用户的用户ID:
 usermod -u 1001 username
  • 修改用户的主目录:
 usermod -d /home/newdir username
  • 修改用户的默认shell:
usermod -s /bin/bash username
  • 修改用户的附加组:
 usermod -G group1,group2 username
  • 将用户添加到指定的附加组中:
 usermod -aG groupname username
  • 修改用户的备注信息:
usermod -c "New comment" username

需要注意的是,usermod命令需要使用root用户或具有sudo权限的用户来执行。

userdel

userdel

是一个 Linux 命令,用于删除用户账户

选项

语法

userdel [选项] 用户名
  • -r:删除用户账户和主目录以及用户的邮箱目录。这个选项应该谨慎使用,因为它会彻底删除用户的所有数据,包括文件和文件夹。如果你想要保留用户的主目录,不要使用该选项。
  • -f:强制删除用户账户。如果用户当前正在登录系统,或者用户的某些进程正在运行,userdel 默认会拒绝删除该用户,但是使用 -f 选项可以强制删除用户账户。
  • -Z:将用户的 SELinux 安全上下文设置为默认值

使用

  • 删除一个用户账户:
 userdel john
  • 删除一个用户账户和主目录:
 userdel -r john
  • 强制删除一个用户账户:
userdel -f john
  • 删除多个用户账户:
 userdel alice bob charlie

需要注意的是,

userdel

命令只能被 root 用户或者具有 sudo 权限的用户执行,否则会提示权限不足。

切换当前环境

在Linux中,切换用户时可以选择是否切换当前环境,这取决于使用的命令以及切换用户的方式。下面是CentOS 7中几种常见的切换用户方式及其对当前环境的影响:

  • su命令:使用su命令切换用户时,默认不会切换当前环境。也就是说,切换到新用户后,环境变量、工作目录、umask等都会保持原来的值。如果需要切换环境,可以使用“su -”或“su -l”选项。
  • sudo命令:使用sudo命令切换用户时,默认会保留当前用户的环境。也就是说,切换到新用户后,环境变量、工作目录、umask等都会保持当前用户的值。如果需要切换环境,可以使用“sudo -i”或“sudo -H”选项。
  • login命令:使用login命令切换用户时,默认会切换当前环境。也就是说,切换到新用户后,环境变量、工作目录、umask等都会变成新用户的值。如果需要保留当前环境,可以使用“login -f”选项。

需要注意的是,切换用户时会导致环境变量、工作目录等的改变,可能会影响当前进程的运行。因此,在切换用户前应该确认当前进程的状态,以避免不必要的错误。

su

介绍
su

是一个 Linux 命令,用于切换当前用户身份到另一个用户身份。

语法

su [选项] [用户名]

以下是

su

命令常用的选项:

  • -: 使用该选项可以切换到另一个用户的环境,包括环境变量、工作目录等。
  • -c:用于执行一个命令。可以使用该选项在切换用户身份后立即执行一个命令,并在命令执行完成后切换回原来的用户身份。
  • -s:用于指定 shell。可以使用该选项指定要使用的 shell,如果不指定,则默认使用 /bin/sh
使用
su sc1         

直接切换到sc1用户,不切换当前的环境

su - sc1     

直接切换到sc1用户,并且切换当前的环境

sudo

介绍

在Linux系统中,sudo是一种授权管理工具,可以允许用户以另一个用户身份执行命令。通常情况下,sudo需要管理员授予用户权限才能使用。

使用
  1. 安装sudo

在大多数Linux系统中,sudo已经预装了。如果没有,可以通过包管理工具进行安装。以Ubuntu系统为例,可以使用以下命令安装sudo:

sudo apt-get update
sudo apt-get install sudo
  1. 配置sudo

在安装完sudo后,需要进行配置才能使用。可以通过以下步骤进行配置:

a. 添加用户到sudo组

在Linux系统中,sudo命令是由sudo组授权的用户才能使用的。因此,首先需要将用户添加到sudo组中。可以使用以下命令添加用户到sudo组:

sudo usermod -aG sudo username

其中,username是要添加的用户名。

b. 编辑sudoers文件

sudoers文件是sudo的配置文件,存储着哪些用户可以使用sudo命令以及可以执行哪些命令。可以使用以下命令编辑sudoers文件:

sudo visudo

在sudoers文件中,可以添加以下内容:

username ALL=(ALL) ALL

其中,username是要允许使用sudo命令的用户名。

  1. 使用sudo

在配置完sudo后,可以使用以下命令以root用户身份执行命令:

sudo command

其中,command是要执行的命令。

需要注意的是,使用sudo命令需要谨慎,因为执行的命令具有root用户的权限,可以对系统造成损害。建议只在必要的情况下使用sudo命令,并且在使用前仔细确认要执行的命令。

使用sudo切换当前环境

在Linux系统中,sudo命令可以切换到另一个用户的身份来执行命令。如果需要切换到另一个用户的环境下执行命令,可以使用sudo -i或sudo -E命令。

  • sudo -i

使用sudo -i命令可以切换到另一个用户的身份,并进入该用户的登录shell环境。这意味着,用户环境变量、工作目录等会被切换到新用户的值。使用以下命令切换到root用户的环境:

sudo -i

在切换到root用户的环境后,可以执行需要root权限的命令。

  • sudo -E

使用sudo -E命令可以切换到另一个用户的身份,并保留当前用户的环境变量。这意味着,用户环境变量、工作目录等不会被切换到新用户的值。使用以下命令切换到root用户的环境:

sudo -E command

其中,command是要执行的命令。

需要注意的是,在使用sudo命令切换到另一个用户的身份时,需要谨慎确认要执行的命令,并避免对系统造成不必要的损害。

login

介绍

在Linux系统中,login是一个命令行工具,用于登录到系统中。在登录时,login会要求用户输入用户名和密码,并根据用户提供的信息验证身份。如果验证成功,login会启动用户的登录shell,并将用户的工作目录设置为HOME目录。

使用
  1. 打开终端窗口

在Linux系统中,可以通过按下Ctrl+Alt+T组合键打开终端窗口。

  1. 输入用户名和密码

在终端窗口中,输入登录用户名和密码,按下Enter键确认。

login new_user

其中,new_user是要登录的新用户的用户名。

  1. 进入登录shell

如果输入的用户名和密码正确,login会启动该用户的登录shell,并将用户的工作目录设置为HOME目录。

需要注意的是,在使用login命令登录到系统后,用户的环境变量、别名等都是新的。如果用户需要保留当前环境,可以使用su命令切换用户身份,或者在当前用户下使用sudo命令执行需要root权限的命令。

标签: linux 服务器 运维

本文转载自: https://blog.csdn.net/qq_51010919/article/details/130488219
版权归原作者 哈密猿 所有, 如有侵权,请联系我们删除。

“Linux-有关用户和组的命令详解”的评论:

还没有评论