Linux shell编程(四): Linux 用户管理

Linux shell编程(四): Linux 用户管理,第1张

Linux shell编程(四): Linux 用户管理

接上一篇文章Linux shell编程(三): Linux 环境变量

2.4.1 Linux用户

Linux安全系统的核心是用户账户。用户权限是通过创建用户时分配的用户ID(User ID,通常缩写为UID)来跟踪的。

这些信息保存在 /etc/passwd 和 /etc/shadow 文件中,关于用户账户与权限管理的内容详见 Linux用户和用户组管理相关文件内容详解

关于Linux用户的管理,Linux系统提供了以下工具:

命令描述useradd添加新用户,默认无密码、无主目录、不指定shell版本adduser添加新用户,要求用户设置密码、自动创建主目录、指定shell版本userdel删除用户usermod修改用户账户的字段,还可以指定主要组以及附加组的所属关系passwd修改已有用户的密码chpasswd从文件中读取登录名密码对,并更新密码chage修改密码的过期日期chfn修改用户账户的备注信息chsh修改用户账户的默认登录shell

添加新用户

useradd:命令使用系统的默认值以及命令行参数来设置用户账户。需要使用参数选项指定其他设置,如果不使用任何参数,则创建的用户无密码、无主目录、没有指定shell版本。

adduser:要求用户设置密码、自动创建主目录、指定shell版本

useradd

先讲useradd,如果不使用任何参数,执行命令 sudo useradd testuser ,则创建的用户无密码、无主目录、没有指定shell版本。

没有密码不能登录,需要后期使用 sudo passwd testuser 命令设置密码才能登录;

没有主目录就是在 /home 目录下没有该用的目录,按需设置,后期可以使用 usermod -d /testuser testuser 修改,其中 /testuser 为用户主目录, 最后的 testuser 是用户名。

没有指定shell版本会是默认的 /bin/sh shell,它的交互界面如下:

testuser用户登录后,只有一个命令提示符 $ ,要想修改登录的默认shell版本,可以使用命令 chsh -s /bin/bash testuser ,注意,修改后要重新登录该用户才能生效。

看起来有些麻烦,可以执行 useradd 命令时使用参数选项一步到位,使用参数 -p 设置密码,-m 设置主目录, -s 指定shell版本,完整命令如下:

sudo useradd testuser -p password -m -s /bin/bash

否则ueseradd命令只会根据默认值创建用户,系统默认值被设置在/etc/default/useradd文件中。可以使用useradd命令的 -D 选项查看所用Linux系统中的这些默认值,如下:

默认值含义依次为:

新用户会被添加到GID为 100 的公共组新用户的HOME目录将会位于/home新用户账户密码在过期后不会被禁用新用户账户过期日期(此处未设置)新用户账户默认shell系统会将/etc/skel目录下的内容复制到新用户的HOME目录下系统是否为该用户在mail目录下创建一个用于接收邮件的文件

其中,/etc/skel目录下是一些启动文件,如下:

如有需要,可以自定义新用户的初始文件并放到该目录下。

可以修改默认值简化创建新用户的 *** 作,比如使用useradd命令时,不想每次指定shell版本,可以修改默认值: useradd -D -s /bin/bash ,其中 -D 代表默认值相关, -s 代表修改默认值中的shell版本,修改默认值的其他参数如下:

参数描述-b default_home更改默认的创建用户HOME目录的位置-e expiration_date更改默认的新账户的过期日期-f inactive更改默认的新用户从密码过期到账户被禁用的天数-g group更改默认的组名称或GID-s shell更改默认的登录shell

useradd命令的其他参数选项:

参数描述-c comment给新用户添加备注-d home_dir为主目录指定一个名字(如果不想用登录名作为主目录名的话)-e expire_date用YYYY-MM-DD格式指定一个账户过期的日期-f inactive_days指定这个账户密码过期后多少天这个账户被禁用;
0 表示密码一过期就立即禁用, 1 表示禁用这个功能-g initial_group指定用户登录组的GID或组名-G group …指定用户除登录组之外所属的一个或多个附加组-k必须和 -m 一起使用,将/etc/skel目录的内容复制到用户的HOME目录-m创建用户的HOME目录-H不创建用户的HOME目录(当默认设置里要求创建时才使用这个选项)-n创建一个与用户登录名同名的新组-r创建系统账户-p passwd为用户账户指定默认密码-s shell指定默认的登录shell-u uid为账户指定唯一的UID

adduser

和useradd类似,adduser添加新用户的命令为 sudo adduser testuser ,但adduser会引导你设置新用户的一些信息,如下:

包括新增用户组、在用户组里新增用户、创建用户的主目录、将/etc/skel目录下的内容复制到新用户的HOME目录下、设置用户登录密码、设置用户信息等。

其余设置根据默认配置文件 /etc/adduser.conf 中的内容自动设置。

删除用户

userdel

默认情况下, userdel 命令会只删除/etc/passwd文件中的用户信息,不会删除系统中属于该账户的任何文件。

如果加上 -r 参数, userdel 会删除用户的HOME目录以及邮件目录。

但用户目录中可能会有其他程序运行的必要文件,所以删除之前要检查清楚。

修改用户

usermod

usermod用于修改用户账户信息,参数选项如下:

参数描述-a与-G一起使用,为用户添加附加组-c comment修改用户的说明信息(/etc/passwd 文件用户信息的第 5 个字段)-d home_dir修改用户的主目录(/etc/passwd 文件用户信息的第 6 个字段)-e expire_date修改用户的失效曰期(格式为 “YYYY-MM-DD”,/etc/passwd 文件用户信息的第 8 个字段)-g initial_group修改用户的归属组编号GID(/etc/passwd 文件用户信息的第 4 个字段)-u uid修改用户的用户编号UID(/etc/passwd 文件用户信息的第 3 个字段)-G group修改用户的附加组,如果是为用户添加附加组,一般与-a一起使用,否则该用户的其他附加组都会删除,即修改 /etc/group 文件-l user_name修改用户名称(/etc/passwd 文件用户信息的第 1 个字段)-L临时锁定用户-U解锁用户-s shell指定默认的登录shell

修改用户密码

passwd

修改已有用户的密码,但需注意的是,只执行 passwd 命令是修改当前用户的密码,如果想要修改非当前用户的密码,需要使用切换到root账户或使用sudo进行提权,如修改test用户的密码,需要执行 sudo passwd test 命令。

chpasswd

从文件中读取登录名密码对,并更新密码。

如果需要批量更新多个用户的密码,可以使用 chpasswd 命令,他能从标准输入自动读取登录名和密码对(由冒号分割)列表,给密码加密,然后为用户账户设置,如下:

注意,修改密码都要使用超级用户权限。

但常用的方法是将多个用户的登录名密码对写到文件中,然后重定向给该命令,如下:

文件内容为:

执行命令为:

sudo chpasswd < passwd.txt

注意文件中不能有空行,否则会报错。

修改用户默认shell

chsh

修改默认的用户登录shell,要用shell的绝对路径,如:

chsh -s /bin/bash testuser

修改用户说明信息
chfn

修改用户的说明信息,/etc/passwd 文件用户信息的第 5 个字段,

由于这涉及到用户的信息,也需要输入密码,如果是修改非当前用户的信息,还需要root权限。

修改用户账户有效期
chage

chage 命令用来帮助管理用户账户的有效期,对应 /etc/shadow 文件用户密码信息的第 4-8个字段。

可以用不同参数修改对应信息,如下:

参数描述-d设置上次修改密码到现在的天数-E设置密码过期的日期-I (大写的i)设置密码过期到锁定账户的天数-m设置修改密码之间最少要多少天-W设置密码过期前多久开始出现提醒信息

chage 命令的日期值可以用下面两种方式中的任意一种:

YYYY-MM-DD格式的日期代表从1970年1月1日起到该日期天数的数值

对于密码过期的账户,和锁定的账户很相似:账户仍然存在,但用户无法用它登录。

欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/zaji/5720281.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2022-12-18
下一篇2022-12-18

发表评论

登录后才能评论

评论列表(0条)

    保存