LINUX学习之用户及用户组管理(八)

阿里云国内75折 回扣 微信号:monov8
阿里云国际,腾讯云国际,低至75折。AWS 93折 免费开户实名账号 代冲值 优惠多多 微信号:monov8 飞机:@monov6

用户账号管理

用户账号的管理涉及添加、删除和修改用户账号信息。而这些操作实际上就是对/etc/passwd文件进行更新


useradd

命令描述

useradd命令用于添加新用户, 以下是useradd命令常用参数:

  • -c : 指定用户的一段注释性描述。
  • -d : 指定用户的主目录如果此目录不存在可以使用 -m 选项来创建主目录。
  • -g : 指定用户所属的用户组。
  • -G : 指定用户所属的附加组。
  • -s : 指定用户的登录 Shell。
  • -u : 指定用户的用户号

使用实例

1.创建一个用户sam, 其中-d和-m选项用来为用户sam生成一个主目录 /home/sam

/home为默认的用户主目录所在的父目录

useradd –d /home/sam -m sam

2.创建一个用户gem, 指定用户登录的shell是`/bin/sh`, 它属于group用户组同时又属于adm和root用户组(这两个组是附加组)
useradd -s /bin/sh -g group –G adm,root gem

userdel

命令描述

userdel 命令用于在 Linux 系统中删除用户。它可以删除用户的账户和与其相关的文件例如用户主目录和用户配置文件

删除用户账号就是要将/etc/passwd等系统文件中的关于该用户的记录删除必要时还删除用户的主目录

一下是userdel命令的常用参数:

  • -r : 删除用户的同时删除用户主目录和其他文件
  • -f : 强制删除用户不管该用户是否已登录

使用实例

1.删除用户sam以及其主目录

userdel -r sam

2.删除用户名为 tom 的用户并强制删除其账户即使该用户已登录
userdel -f tom

3.删除用户名为 kim 的用户不删除其主目录和其他文件
userdel kim

usermod

命令描述

usermod 命令用于在 Linux 系统中修改用户信息。它可以修改用户名、用户组、用户密码、用户主目录等

以下是usermod命令的常用参数:

  • -l : 修改用户名
  • -g : 修改用户所属的用户组
  • -G : 修改用户所属的附加组
  • -d : 修改用户主目录
  • -s : 修改用户登录的 shell
  • -u : 修改用户的用户号
  • -L : 锁定/解锁用户
  • -U : 更新用户密码

使用实例

1.修改sam用户的登录Shell为/bin/sh, 主目录为/home/z, 用户组为developer

usermod -s /bin/sh -d /home/z –g developer sam

2.修改用户名为 gem 的用户的用户名为 newgem
usermod -l newgem gem

3.修改用户名为 jim 的用户将其设置为附加组 adm 和 root
usermod -G adm,root jim

passwd

命令描述

passwd 命令用于在 Linux 系统中修改用户密码。使用这个命令可以更改当前用户或其他用户的密码, 请注意在修改密码后用户可能需要重新登录才能生效

常用的参数包括:

  • -d : 删除用户密码
  • -l : 锁定用户账户
  • -u : 解锁用户账户

使用实例

1.例如当前用户是sam, 使用如下命令修改自己的口令

$ passwd 
Old password:****** 
New password:******* 
Re-enter new password:*******

2.若当前用户是超级用户, 可以不输入旧密码就能修改任何用户的口令
[root]# passwd sam 
New password:******* 
Re-enter new password:*******

3.锁定sam用户的口令, 使其不能登录
[root]# passwd -l sam

用户组管理

用户组的管理涉及用户组的添加、删除和修改。组的增加、删除和修改实际上就是对/etc/group文件的更新


groupadd

命令描述

groupadd 命令用于在 Linux 系统中创建新用户组

常用的参数包括:

  • -g: 指定新用户组的组标识号 (GID)
  • -r : 创建系统组GID < 1000

使用实例

1.创建一个名为 newgroup 的新用户组并指定其组标识号为1000

groupadd -g 1000 newgroup

2.创建一个名为 sysgroup 的系统用户组
groupadd -r sysgroup

3.创建一个名为 staff 的新用户组并自动分配组标识号
groupadd staff

groupdel

命令描述

groupdel 命令用于在 Linux 系统中删除已有的用户组


使用实例

删除一个名为 group1 的用户组

groupdel group1

groupmod

命令描述

groupmod 命令用于在 Linux 系统中修改已有的用户组. 使用这个命令可以修改用户组的名称、组标识号以及成员等信息

常用的参数包括

  • -g : 指定新的组标识号GID
  • -n : 指定新的组名称
  • -a : 添加用户到组中
  • -d : 从组中删除用户
  • -G: 指定用户组成员的

使用实例

1.将名为 oldgroup 的用户组修改为 newgroup

groupmod -n newgroup oldgroup

2.将名为 oldgroup 的用户组的组标识号(GID)修改为 1000
groupmod -g 1000 oldgroup

3.将用户 tom 添加到名为 newgroup 的用户组中
groupmod -a -G newgroup tom

4.将用户 tom 从名为 newgroup 的用户组中删除
groupmod -d -G newgroup tom

newgrp

命令描述

newgrp 命令用于在 Linux 系统中切换用户组。使用这个命令可以让用户暂时地切换到另一个用户组中并在操作完成后切换回原来的用户组


使用实例

如下命令将当前用户切换至root用户组, 前提条件是root用户组是该用户的主组或附加组

newgrp root

存放用户信息的系统文件

/etc/passwd

Linux系统中的每个用户都在/etc/passwd文件中有一个对应的记录行它记录了这个用户的一些基本属性

如下例子所示, /etc/passwd中一行记录对应着一个用户,每行记录又被冒号分隔为7个字段, 分别为用户名:口令:用户标识号:组标识号:注释性描述:主目录:登录Shell

# cat /etc/passwd

root:x:0:0:Superuser:/:
daemon:x:1:1:System daemons:/etc:
bin:x:2:2:Owner of system commands:/bin:
sys:x:3:3:Owner of system files:/usr/sys:
adm:x:4:4:System accounting:/usr/adm:
uucp:x:5:5:UUCP administrator:/usr/lib/uucp:
auth:x:7:21:Authentication administrator:/tcb/files/auth:
cron:x:9:16:Cron daemon:/usr/spool/cron:
listen:x:37:4:Network daemon:/usr/net/nls:
lp:x:71:18:Printer administrator:/usr/spool/lp:
sam:x:200:50:Sam san:/home/sam:/bin/sh

系统中有一类用户被称为**伪用户**, 这些用户在/etc/passwd文件中也占有一条记录但是不能登录因为它们的登录Shell为空。它们的存在主要是方便系统管理满足相应的系统进程对文件属主的要求

常见的伪用户如下表格所示:

伪用户描述
bin拥有可执行的用户命令文件
sys拥有系统文件和配置文件
adm拥有帐户文件和系统日志
uucpUNIX-to-UNIX复制程序使用
lp打印系统使用
nobody用于NFS匿名访问

/etc/shadow

由于/etc/passwd文件是所有用户都可读的如果用户的密码太简单或规律比较明显的话一台普通的计算机就能够很容易地将它破解因此对安全性要求较高的Linux系统都把加密后的口令字分离出来单独存放在一个文件中这个文件是**/etc/shadow**文件。

只有超级用户才能读取此文件这就保证了用户密码的安全性

它的文件格式与/etc/passwd类似由若干个字段组成字段之间用":"隔开, 字段描述如下所示:

登录名:加密口令:最后一次修改时间:最小时间间隔:最大时间间隔:警告时间:不活动时间:失效时间:标志

如下是/etc/shadow的文件内容

# cat /etc/shadow

root:Dnakfw28zf38w:8764:0:168:7:::
daemon:*::0:0::::
bin:*::0:0::::
sys:*::0:0::::
adm:*::0:0::::
uucp:*::0:0::::
nuucp:*::0:0::::
auth:*::0:0::::
cron:*::0:0::::
listen:*::0:0::::
lp:*::0:0::::
sam:EkdiSECLWPdSa:9740:0:0::::

/etc/group

用户要访问属于附加组的文件时必须首先使用newgrp命令切换至附加组

用户组的所有信息都存放在/etc/group文件中。此文件的格式也类似于/etc/passwd文件由冒号":"隔开若干个字段这些字段描述如下所示:

组名:口令:组标识号:组内用户列表

如下是/etc/group的文件内容:
root::0:root
bin::2:root,bin
sys::3:root,uucp
adm::4:root,adm
daemon::5:root,daemon
lp::7:root,lp
users::20:root,sam

批量添加用户

1.编辑用户文本文件

每一列按照/etc/passwd密码文件的格式书写要注意每个用户的用户名、UID、宿主目录都不可以相同其中密码栏可以留做空白或输入x号

一个范例文件user.txt内容如下

user001::600:100:user:/home/user001:/bin/bash
user002::601:100:user:/home/user002:/bin/bash
user003::602:100:user:/home/user003:/bin/bash
user004::603:100:user:/home/user004:/bin/bash
user005::604:100:user:/home/user005:/bin/bash
user006::605:100:user:/home/user006:/bin/bash

2.执行newuser命令创建用户

要使用root用户只需newuser命令

newusers < user.txt

3.执行pwunconv命令

pwunconv命令是一个命令行工具通常用于将密码文件从旧版本的Unix使用的密码文件格式转换为当前版本的Unix使用的格式

pwunconv

4.编辑每个用户的密码对照文件

文件内容格式为:用户名:密码, 例如下面的passwd.txt:

user001:123456
user002:123456
user003:123456
user004:123456
user005:123456
user006:123456

5.执行chpasswd命令

chpasswd命令是一个命令行工具它允许您批量更改一个或多个用户的密码。它从标准输入读取用户名和密码的列表并更新系统密码文件中相应的密码

执行如下命令, chpasswd 会将经过 /usr/bin/passwd 命令编码过的密码写入 /etc/passwd 的密码栏

chpasswd < passwd.txt

6.执行pwconv命令

pwconv命令是一个命令行工具它用于将密码文件从系统原始的密码文件格式转换为shadow文件的格式

pwconv
阿里云国内75折 回扣 微信号:monov8
阿里云国际,腾讯云国际,低至75折。AWS 93折 免费开户实名账号 代冲值 优惠多多 微信号:monov8 飞机:@monov6
标签: linux