Linux 基础/用户管理
- 功能:添加、删除用户、设置密码、修改
- 添加用户:adduser(在 Ubuntu 下)、useradd
语法
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 的内容类似
janos:x:1000:1000:Nagy János:/home/janos:/bin/bash
Passwd 文件的条目用逗号隔开,字段的解释如下
- 用户名。
- 加密密码。
- 用户 ID (uid)。
- 组 ID (gid)。
- 全名和其他信息
- home 文件夹
- 选择的 shell
/etc/shadow 文件的内容类似
smithj:Ep6mckrOLChF.:10063:0:99999:7:::
与 passwd 文件一样,shadow 文件中的每个字段也用“:”冒号隔开,如下所示
- 用户名,最多 8 个字符。区分大小写,通常全部小写。与 /etc/passwd 文件中的用户名直接匹配。
- 密码,13 个字符加密。空白条目(例如 ::)表示登录不需要密码(通常不是一个好主意),而“*”条目(例如 :*:) 表示帐户已被禁用。
- 密码上次更改以来的天数(自 1970 年 1 月 1 日起)。
- 密码可以更改的天数(0 表示可以随时更改)
- 密码必须更改的天数(99999 表示用户可以将密码保持不变很多年)
- 警告用户密码即将过期的天数(7 表示整整一周)
- 密码过期后禁用帐户的天数
- 帐户被禁用以来的天数(自 1970 年 1 月 1 日起)
- 为将来可能使用保留的字段
更改用户规则: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 文件夹包含基本主目录的内容。