linux用户

Linux账号类型

在Linux系统中,主要有以下几种类型的账号:

  1. 超级用户(root):在Linux系统中,超级用户(也称为root用户)拥有系统上所有权限。这个账号可以执行任何操作,包括对系统的修改、安装软件、管理其他用户等。一般情况下,普通用户不应该使用root账号,因为它具有很高的权限,可能会导致意外的系统损坏。
  2. 普通用户:普通用户是系统中的普通账号,通常用于一般日常操作。这些账号只有有限的权限,只能访问自己的文件和部分系统资源。普通用户可以执行大多数常见的操作,但不能对系统进行重要的修改和管理。
  3. 系统账号:系统账号是为了运行特定系统服务或者程序而创建的账号。这些账号通常不允许用户登录系统,它们的目的是用于安全和隔离服务。系统账号通常没有登录shell,例如 /bin/false 或 /sbin/nologin。
  4. 特殊账号:在Linux系统中,还有一些特殊的账号,如 nobody 和 daemon 等。这些账号用于执行特定的系统任务或服务,并且通常没有登录权限。

每个账号都有一个唯一的用户名和用户ID(UID),以及一个主组和一个或多个附加组。

用户信息文件

文件/etc/passwd存储了所有 Linux 用户的登录信息的文本文件。

这个文件通常包含以下信息:

  1. 用户名:每行以用户名开头,用于标识用户。
  2. 密码:在过去,密码会以加密形式存储在此列。现在通常会用'x'或者'*'代替,真正的密码存储在 /etc/shadow 文件中。
  3. 用户ID(UID):每个用户都有一个唯一的数字ID,用于系统识别用户。一般情况下,普通用户的UID从1000开始,root用户的UID为0。
  4. 组ID(GID):每个用户都属于一个或多个用户组,而该列则显示用户所属主组的GID。
  5. 用户信息:这一列通常包含用户的全名或其他说明性信息。
  6. 家目录:用户登录后的默认目录。
  7. 登录shell:用户登录时所使用的shell程序的路径。
root:x:0:0:root:/root:/bin/bash

例如以上这行的表示:户名为 root,密码字段被代替为 x,UID和GID分别为 0,用户信息为 root,家目录为 /root,登录shell为 /bin/bash。

其中,密码字段被x占位,密码被加密保存在文件/etc/shadow中:

/etc/shadow 文件的权限通常设置为只有系统管理员可以读取和写入,一般用户无法直接查看或修改该文件。

john:$6$JF9ss/LS$DFr9K4nCpXQad7vL9TJLqPpLUV14u72Mhrz7vmFjRU3hgz.wEAGNflWpTb8UYs8cluqfMzEj/LKwi2Ue4lHuy/:18892:0:99999:7:::

其中各字段的含义如下(以冒号 : 分隔):

  1. john:用户名
  2. $6$JF9ss/LS$DFr9K4nCpXQad7vL9TJLqPpLUV14u72Mhrz7vmFjRU3hgz.wEAGNflWpTb8UYs8cluqfMzEj/LKwi2Ue4lHuy/:加密后的密码
  3. 18892:密码最后修改日期(自1970年1月1日起的天数)
  4. 0:密码需要更改的最小天数
  5. 99999:密码有效期
  6. 7:密码失效前的警告天数
  7. ::::保留字段

Linux 用户和用户组管理

添加账号

useradd [options] username

下面是一些常用的 useradd 命令选项及其说明:

  • -c, --comment COMMENT:为用户添加备注信息。
  • -d, --home HOME_DIR:指定用户的家目录路径。
  • -g, --gid GROUP:指定用户所属的初始用户组。
  • -G, --groups GROUPS:指定用户所属的其他附加用户组。
  • -s, --shell SHELL:指定用户登录时使用的shell程序。
  • -u, --uid UID:为用户指定一个唯一的用户ID。
  • -m, --create-home:如果家目录不存在,则创建用户的家目录。
  • -k, --skel SKEL_DIR:指定用于创建用户家目录的骨架目录。
  • -p, --password PASSWORD:为用户设置初始密码。
  • -e, --expiredate EXPIRE_DATE:指定用户账户的过期日期。
  • -r, --system:创建一个系统账户,通常用于运行服务或进程。

实例:

如上图,创建用户hu,指定UID为2200,家目录为gnr,属组为0(root),附加组为10(wheel)。

如果要添加系统账号则需要添加-M不创建家目录,-s指定用户的登录Shell为/sbin/nologin不登录。

 如上图,创建用户izu,不创建家目录,不登录,账户过期日期为2024.10.20。

修改账号

usermod [option] username

常用选项包括:

  • -c, --comment COMMENT:为用户添加备注。
  • -d, --home HOME_DIR:设置用户的主目录。
  • -e, --expiredate EXPIRE_DATE:设置用户账户的过期日期。
  • -g, --gid GROUP:设置用户的初始登录组。
  • -G, --groups GROUPS:设置用户的附加组。
  • -l, --login NEW_LOGIN:更改用户的登录名。
  • -s, --shell SHELL:设置用户的登录 shell。
  • -u, --uid UID:设置用户的用户标识号。

如上图所示,我们先是创建用户g2,再通过usermod -l将g2改名为G2。

删除账号

userdel [options] username

一些常用的选项包括:

  • -r:删除用户账户时同时删除用户的主目录和邮箱目录。
  • -f:强制删除用户账户,即使用户当前登录或者有未关闭的会话。

 如上图所示,利用-rf选项删除正在使用的账号。

用户密码

1.修改当前用户密码:

passwd

执行此命令后,系统会提示您输入当前用户的密码,然后要求您输入新的密码两次以确认修改。

2.修改其他用户密码:

sudo passwd username

使用 sudo 以管理员权限修改其他用户的密码。命令执行后,系统会提示您输入管理员密码,然后要求输入新密码两次以确认修改。

3.强制用户下次登录时更改密码:

sudo passwd -e username

此命令将用户的密码设置为过期状态,强制用户在下次登录时更改密码。

4.锁定用户密码:

sudo passwd -l username

此命令将用户的密码锁定,即用户不能使用原密码登录系统。

5.解锁用户密码:

sudo passwd -u username

此命令将已锁定的用户密码解锁,使其可以使用密码登录系统。

6.设置密码过期时间:

sudo chage -d 0 username

此命令将用户密码的过期时间设置为0,即用户在下次登录时必须更改密码。

7.显示用户密码信息:

sudo chage -l username

此命令显示用户的密码信息,包括密码过期时间等。

8.修改密码时显示指定信息:

passwd -e -n 7 -x 30 username

此命令将密码设置为过期状态,用户登录后必须在7天内更改密码,并且密码有效期为30天。

用户账户初始配置文件

用户账户的初始配置文件通常位于/etc/skel/目录下。这个目录包含了新建用户时所需的初始配置文件,包括常见的.bash_profile、.bashrc、.bash_logout等。当我们创建一个新用户时,系统会复制/etc/skel/目录下的文件到新用户的家目录下,以便提供一个基本的工作环境。

通常来说,CentOS 7中的用户初始配置文件包括:

  1. .bash_profile:用于定义用户登录时需要执行的命令和环境变量设置。
  2. .bashrc:定义了用户每次启动bash shell时需要执行的命令,通常是一些常用的别名设置、PATH设置等。
  3. .bash_logout:在用户注销时执行的命令。

我们可以在/etc/skel/目录下编辑这些文件,以满足你的特定需求,然后当你创建新用户时,系统就会根据这些文件的内容为新用户创建对应的初始配置文件。

 用户组管理

我们可以使用以下命令来管理用户组:

1.创建用户组:

sudo groupadd groupname

这将创建一个名为 groupname 的新用户组。

2.除用户组:

sudo groupdel groupname

这将删除名为 groupname 的用户组。

3.修改用户组:

sudo groupmod [options] groupname

这个命令可以用来修改用户组的属性,比如名称或者GID。选项可以根据需要添加。

4.列出用户组:

cat /etc/group

这会列出系统上所有的用户组及其相关信息。

5.查看用户组成员:

getent group groupname

这会显示名为 groupname 的用户组的成员列表。

6.将用户添加到用户组:

sudo usermod -aG groupname username

这会将名为 username 的用户添加到名为 groupname 的用户组中。

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

sudo gpasswd -d username groupname

这会将名为 username 的用户从名为 groupname 的用户组中删除。

8.修改用户组密码:

sudo gpasswd groupname

这会让你设置名为 groupname 的用户组的密码。

用户信息

finger,w,who,users等命令可以用于查看和管理当前登录的用户信息。

1.finger(需要安装)

 2.w

  • -h:不显示列头信息。
  • -s:只显示登录名和终端。
  • -u:以用户及终端显示用户登入情况。
  • -f:显示从何处登录。
  • -i:显示用户的IP地址。

w 显示系统中当前用户的信息, 以及他们的进程。
第一行中依次显示:当前时间,系统的持续运行时间, 登录的用户数,和最近1,5,15分钟 的系统平均负载(loadaverage)。

接下来的条目显示每位用户的: 登录名, tty 名, 远程主机, 登录时间, 空闲时间,JCPU,PCPU, 以及 他们 当前进程 的 命令行。
JCPU时间指某个tty上所有进程用掉的时间, 不包括过去的后台任务, 但是包括正在 运行 的 后台任务。
PCPU 时间指当前进程用掉的时间, 可以在 "what" 域看到当前进程。

3.who

  • -a, --all:显示所有登录的用户,包括系统的启动进程。
  • -b, --boot:显示系统的启动时间。
  • -d, --dead:显示已经注销的用户。
  • -H, --heading:显示列标题。
  • -l, --login:显示登录系统的用户。
  • -m, --mesg:显示用户接收的消息状态。
  • -q, --count:显示登录用户的数量。
  • -r, --runlevel:显示当前运行级别。
  • -s, --short:仅显示用户名、终端和登录时间。
  • -T, -w, --mesg:显示用户是否可以接收消息(通常显示 "+" 或 "-")。
  • --time:显示用户最后活动时间。
  • -u, --users:显示登录的用户数量。

 4.users

这个命令不需要任何选项,直接运行即可列出当前登录系统的用户名。

 

posted @ 2024-04-05 16:05  hx_ky36  阅读(47)  评论(0编辑  收藏  举报