跳转到内容

Linux 基础/用户管理

来自维基教科书,开放世界中的开放书籍

用户管理功能

[编辑 | 编辑源代码]
  • 功能:添加、删除用户、设置密码、修改
  • 添加用户:adduser(在 Ubuntu 下)、useradd
Ubuntu 中的 useradd 交互式指南(adduser)

添加用户

[编辑 | 编辑源代码]

语法

useradd [options] username

选项

  • -u number:设置用户 ID (UID)
  • -c:注释
  • -g group:设置组成员身份
  • -d /home/user:将 HOME 文件夹设置为 /home/user。
  • -s /bin/bash:默认 shell(这里用户获取 bash 作为默认 shell)
  • -G group1, group2:用逗号隔开,如果用户是其他组的成员
  • -m -k /home/existing <username>:它会根据现有用户的 home 文件夹创建 home 文件夹。
    • -m 开关表示创建 home 目录,-k 指示我们想要从哪里复制默认文件(例如 /etc/skel -> home 文件夹的骨架文件夹)

所以命令看起来像这样

useradd -c "test account" -u 1001 -g users -G info,sysadmin -d /home/test -s /bin/bash -m -k /etc/skel test

用户信息:getent

getent passwd <username>

如果我们想获取有关 infotech 组的信息

getent group infotech

/etc/passwd 文件

[编辑 | 编辑源代码]

用户数据的位置:/etc/passwd

/etc/passwd 的内容类似

janos:x:1000:1000:Nagy János:/home/janos:/bin/bash

Passwd 文件的条目用逗号隔开,字段的解释如下

  1. 用户名。
  2. 加密密码。
  3. 用户 ID (uid)。
  4. 组 ID (gid)。
  5. 全名和其他信息
  6. home 文件夹
  7. 选择的 shell

/etc/shadow 文件

[编辑 | 编辑源代码]

/etc/shadow 文件的内容类似

smithj:Ep6mckrOLChF.:10063:0:99999:7:::

与 passwd 文件一样,shadow 文件中的每个字段也用“:”冒号隔开,如下所示

  1. 用户名,最多 8 个字符。区分大小写,通常全部小写。与 /etc/passwd 文件中的用户名直接匹配。
  2. 密码,13 个字符加密。空白条目(例如 ::)表示登录不需要密码(通常不是一个好主意),而“*”条目(例如 :*:) 表示帐户已被禁用。
  3. 密码上次更改以来的天数(自 1970 年 1 月 1 日起)。
  4. 密码可以更改的天数(0 表示可以随时更改)
  5. 密码必须更改的天数(99999 表示用户可以将密码保持不变很多年)
  6. 警告用户密码即将过期的天数(7 表示整整一周)
  7. 密码过期后禁用帐户的天数
  8. 帐户被禁用以来的天数(自 1970 年 1 月 1 日起)
  9. 为将来可能使用保留的字段

更改用户规则:chage

我们可以通过更改它来规定用户密码何时过期。

例如,chage -l joska 的输出将显示其数据

   Last password change                                 : Feb 28, 2019
   Password expires 	                                : never
   Password inactive 	                                : never
   Account expires 	                                : never
   Minimum number of days between pasword change	: 0
   Maximum number of days between pasword change	: 99999
   Number of days of warning before password expires 	: 7

我们希望 joska 用户的密码在 10 天后过期

chage -M 10 joska

我们希望 joska 的密码何时过期?

chage -E "2019-12-31" joska

在非活动天数后锁定

我们在 joska 的密码在 10 天后变为非活动状态。

chage -I 10 joska
chage --inactive 10 joska

用户密码

[编辑 | 编辑源代码]

用户密码:passwd

更改自己的密码

# passwd

使用超级用户权限,我们可以更改任何人的密码

# passwd username

存储加密密码:/etc/shadow

生成密码

# makepasswd

修改用户数据:chfn

我们需要为此使用 finger 包。

例如

# chfn -f János janos
# chfn --full-name "Nagy János" janos

开关

  • -f, --full-name
  • -o, --office -- 办公室房间号
  • -p, --office-phone - 办公室电话号码
  • -h, --home-phone - 家庭电话号码

删除用户

[编辑 | 编辑源代码]

删除用户:deluser、userdel

建议使用 /etc/deluser.conf 进行管理,我们应该查看 deluser.conf(5) 手册。

例如

deluser --remove-home
deluser --remove-all-files
deluser --backup
deluser –backup-to

处理用户组

[编辑 | 编辑源代码]

创建组:addgroup、groupadd

组数据的位置:/etc/group

/etc/group 文件可以由 root 手动编辑(文本编辑器、mcedit、nano 等)。

每个用户的名称都会创建一个组(例如,在 kathy 用户的情况下,会创建一个 kathy 组)。

添加到组

gpasswd -a kathy infotech
  • 我们将 kathy 添加到 infotech 组

从组中删除

gpasswd -d kathy infotech
  • 我们将 kathy 从 infotech 组中删除

处理用户组(以及用户数据)

[编辑 | 编辑源代码]

“usermod” 命令

  • 更改用户帐户。

将用户 mary 添加到 infotech 组

usermod -a -G infotech mary

(对于 -a,组名称将被附加,因此该用户保留其他组。如果我们省略 -a,则该用户分配的所有现有组都将被删除)。

Usermod 命令的其他开关

  • -u value user:它更改用户 ID (UID)
  • -g group user:它更改用户组(例如 usermod -g infotech mari)
  • -G group1,group2:它将用户添加到给定组(但不附加)
usermod -G human,economy,sysadmin mary
  • -L user:它锁定用户的访问权限/禁止用户(因此您无法登录)
usermod -L -e 1970-01-01 mary (expiration date can be older than the current date) (--lock)
  • -e value:过期日期(--expiredate)
  • -U user:解锁用户的禁止状态
  • -d user:设置新的 home 文件夹(--home)
  • -s user:设置 shell(--shell)

id 命令

请求有关用户的信息。

组成员

id
id -nG

用户帐户和处理“默认”

[编辑 | 编辑源代码]

用户帐户设置

[编辑 | 编辑源代码]

在 /etc/login.defs 目录/文件中,可以设置一些用户属性。例如,用户电子邮件应该存储在何处。

MAIL_DIR /var/mail

将失败的登录记录到 /var/log/faillog 文件中

FAILLOG_ENAB yes

在登录失败的情况下记录未知用户名

LOG_UNKFAIL_ENAB no

记录成功的登录

LOG_OK_LOGINS no

控制密码。默认情况下,密码何时过期,用户何时可以更改密码,密码的最小长度以及何时应发出警告

PASS_MAX_DAYS 99999
PASS_MIN_DAYS 0
PASS_MIN_LEN 5
PASS_WARN_AGE 7

useradd 情况下用户 ID 的最小值和最大值

UID_MIN 1000
UID_MAX 60000

组 ID 的最小值和最大值

GID_MIN 1000
GID_MAX 60000

在失败次数达到此数量后拒绝登录

LOGIN_RETRIES 5 

超过不成功登录次数后的锁定时间长度

LOGIN_TIMEOUT 60

用户默认值

[编辑 | 编辑源代码]

/etc/default 文件夹包含它。

例如 /etc/default/useradd

# useradd defaults file
GROUP=100
HOME=/home
INACTIVE=-1
EXPIRE=
SHELL=/bin/bash
SKEL=/etc/skel
CREATE_MAIL_SPOOL=yes
  • /etc/skel 文件夹包含基本主目录的内容。
华夏公益教科书