
接上一篇文章Linux shell编程(三): Linux 环境变量
2.4.1 Linux用户Linux安全系统的核心是用户账户。用户权限是通过创建用户时分配的用户ID(User ID,通常缩写为UID)来跟踪的。
这些信息保存在 /etc/passwd 和 /etc/shadow 文件中,关于用户账户与权限管理的内容详见 Linux用户和用户组管理相关文件内容详解
关于Linux用户的管理,Linux系统提供了以下工具:
添加新用户
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版本,修改默认值的其他参数如下:
useradd命令的其他参数选项:
0 表示密码一过期就立即禁用, 1 表示禁用这个功能
adduser
和useradd类似,adduser添加新用户的命令为 sudo adduser testuser ,但adduser会引导你设置新用户的一些信息,如下:
包括新增用户组、在用户组里新增用户、创建用户的主目录、将/etc/skel目录下的内容复制到新用户的HOME目录下、设置用户登录密码、设置用户信息等。
其余设置根据默认配置文件 /etc/adduser.conf 中的内容自动设置。
删除用户
userdel
默认情况下, userdel 命令会只删除/etc/passwd文件中的用户信息,不会删除系统中属于该账户的任何文件。
如果加上 -r 参数, userdel 会删除用户的HOME目录以及邮件目录。
但用户目录中可能会有其他程序运行的必要文件,所以删除之前要检查清楚。
修改用户
usermod
usermod用于修改用户账户信息,参数选项如下:
修改用户密码
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个字段。
可以用不同参数修改对应信息,如下:
chage 命令的日期值可以用下面两种方式中的任意一种:
YYYY-MM-DD格式的日期代表从1970年1月1日起到该日期天数的数值
对于密码过期的账户,和锁定的账户很相似:账户仍然存在,但用户无法用它登录。
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)