2.添加、修改、删除用户账号
1)useradd命令-----添加用户账号
useradd命令用于添加用户账号,其基本的命令格式如下:
useradd [选项]用户名
最简单的用法是,不添加任何选项,只使用用户名作为useradd命令的参数,按系统默认配置建立指定的用户账号。在CentOS系统中,使用useradd命令添加用户账号时主要完成以下几项任务。
在/etc/passwd文件和 /etc/shadow文件的末尾增加该用户账号的记录。
若未明确指定用户的宿主目录,则在/home目录下自动创建与该用户账号同名的宿主目录,并在该目录中建立用户的各种初始配置文件。
若没有明确指定用户所属的组,则自动创建与该用户账号同名的基本组账号,组账号的记录信息将保存到/etc/group和/etc/gshadow文件中。
例如,执行以下操作可以创建名为bdqn_zeng的用户账号,并通过查看passwd、shadow文件和 /home目录来确认新增用户账号时的变化。
[root@localhost ~]# useradd marry
[root@localhost ~]# tail -1 /etc/passwd
marry:x:1002:1002::/home/marry:/bin/bash
[root@localhost ~]# tail -1 /etc/shadow
marry:!!:18533:0:99999:7:::
[root@localhost ~]# ls -A /home/marry/ //确认自动创建的用户目录
.bash_logout .bash_profile .bashrc .mozilla
如果结合useradd命令的各种选项,可以在添加用户账号的同时对UID号、宿主目录、登录Shell等相关属性进行指定。以下列出了 useradd命令中用于设置账号属性的几个常见选项。
-u:指定用户的UID号,要求该UID号码未被其他用户使用。
-d:指定用户的宿主目录位置(当与 -M —起使用时,不生效)。
-e:指定用户的账户失效时间,可使用YYYY-MM-DD的日期格式。
-g:指定用户的基本组名(或使用GID号)。
-G:指定用户的附加组名(或使用GID号)。
-M:不建立宿主目录,即使/etc/login.defs系统配置中已设定要建立宿主目录。
-s:指定用户的登录Shell。
上述的各个选项可以组合使用。例如,执行以下操作可以创建一个辅助管理员账号admin,将其基本组指定为 "wheel",附加组指定为 "root",宿主目录指定为 "/admin"。
[root@localhost ~]# useradd -d /admin -g wheel -G root admin
在账号管理工作中,有时候会希望在新建账号的同时指定该账号的有效期限,或者要求新建的账号不能登录系统(如仅用于访问FTP服务),这时可分别使用 "-e"和 "-S"选项。例如,执行以下操作可以创建一个名为b_down的FTP账号(禁止终端登录),该账号将于2020-12-31失效。
[root@localhost ~]# useradd -e 2020-12-31 -s /sbin/nologin b_down
2)passwd命令-----为用户账号设置密码
通过useradd命令新增用户账号以后,还需要为其设置一个密码才可以正常使用。使用passwd命令可以设置或修改密码,「oot用户有权管理其他账号的密码(指定账号名称作为参数即可)。例如,执行 "passwd marry" 命令可为bdqn_zeng账号设置登录密码,要根据提示重复输入两次,具体操作如下:
[root@localhost ~]# passwd marry
更改用户 marry 的密码 。
新的 密码:
重新输入新的 密码:
passwd:所有的身份验证令牌已经成功更新。
用户账号具有可用的登录密码以后,就可以从字符终端进行登录了。虽然root用户可以指定用户名作为参数,对指定账号的密码进行管理,但是普通用户却只能执行单独的 "passwd" 命令修改自己的密码。
对于普通用户自行设置的密码,要求具有一定的复杂性(如不要直接使用英文单词,长度保持在六位以上),否则系统可能拒绝进行设置。普通用户设置自身的登录密码时,需要先输入旧的密码进行验证。例如,以下操作是用户marry更改登录密码的过程。
[root@localhost ~]# su - marry
Attempting to create directory /home/marry/perl5
[marry@localhost ~]$ passwd
更改用户 marry 的密码 。
为 marry 更改 STRESS 密码。
(当前)UNIX 密码: //你当前用户账户的旧密码
新的 密码: //新的账户密码需要符合复杂度和密码位数。
重新输入新的 密码: //重新输入上一个新密码。
passwd:所有的身份验证令牌已经成功更新。
使用passwd命令除了可以修改账号的密码以外,还能够对用户账号进行锁定、解锁,也可以将用户的密码设置为空(无须密码即可登录)。与上述功能相关的几个选项如下所示。
-d:清空指定用户的密码,仅使用用户名即可登录系统。
-l:锁定用户账户。
-S:查看用户账户的状态(是否被锁定)。
-u:解锁用户账户。
通过passwd命令锁定的用户账号,将无法再登录系统(shadow文件中的对应密码字串前将添加 "!!" 字符),只能由管理员来解除锁定。例如,以下操作分别用于锁定、解锁用户账号marry。
[root@localhost ~]# passwd -l marry //锁定账号
锁定用户 marry 的密码 。
passwd: 操作成功
[root@localhost ~]# passwd -S marry //查看锁定的账号状态
marry LK 2020-09-28 0 99999 7 -1 (密码已被锁定。)
[root@localhost ~]# passwd -u marry //解锁账号
解锁用户 marry 的密码。
passwd: 操作成功
[root@localhost ~]# passwd -S marry //查看解锁的账号状态
marry PS 2020-09-28 0 99999 7 -1 (密码已设置,使用 SHA512 算法。)
3) usermod命令一修改用户账号属性
对于操作系统中已经存在的用户账号,可以使用usermod命令重新设置各种属性。usermod命令同样需要指定账号名称作为参数。usermod命令中较常使用的几个选项如下所述。
-u:修改用户的UID号。
-d:修改用户的宿主目录位置。
-e:修改用户的账户失效时间,可使用丫YYY-MM-DD的曰期格式。
-g:修改用户的基本组名(或使用GID号)。
-G:修改用户的附加组名(或使用GID号)。
-s:指定用户的登录Shell。
-l:更改用户账号的登录名称(Login Name)。
-L:锁定用户账户。
-U:解锁用户账户。
使用usermod命令时,其大部分的选项与useradd命令的选项是对应的,作用也相似。除此以外,还有两个选项 "-L" 和 "-U",分别用于锁定、解锁用户账号。这两个选项与passwd命令的 "-l" 和 "-u" 选项的作用基本相同,但是存在大小写区别。
若要修改已有账号的宿主目录,需要先将该账号原有的宿主目录转移到新的位置,然后通过usermod命令设置新的宿主目录位置。例如,执行以下操作可以将admin用户的宿主目录由 /admin转移至 /home/admin。
[root@localhost ~]# mv /admin/ /home/
[root@localhost ~]# usermod -d /home/admin/ admin
通过usermod命令同样可以对账号进行锁定、解锁操作,经usermod命令锁定的账号也不能登录系统(shadow文件中的对应密码字串前将添加 "!" 字符)。例如,以下操作分别用于锁定、解锁用户账号admin,但是在CentOS 7系统中,如果账户没有设置密码,那么该账户锁定后将无法使用 "usermod -U" 命令解锁。因此在锁定admin账户之前需要先为其设置账户密码。
[root@localhost ~]# usermod -L admin
[root@localhost ~]# passwd -S admin
admin LK 2020-09-28 0 99999 7 -1 (密码已被锁定。)
[root@localhost ~]# usermod -U admin
[root@localhost ~]# passwd -S admin
admin PS 2020-09-28 0 99999 7 -1 (密码已设置,使用 SHA512 算法。)
若需要修改账号的登录名称,可以使用 "-l" 选项。例如,执行以下操作可以将admin用户的登录名称更改为webmaster,下次登录时生效。
[root@localhost ~]# usermod -l webmaster admin
[root@localhost ~]# grep "admin" /etc/passwd
webmaster:x:1003:10::/home/admin/:/bin/bash
4)userdel命令--删除用户账号
当操作系统中的某个用户账号不再使用时(如该员工已经从公司离职等情况),可以使用userdel命令将该用户账号删除。使用该命令也需要指定账号名称作为参数,结合选项可同时删除宿主目录。例如,执行以下操作将删除名为marry的用户账号,同时删除其宿主目录 /home/marry。
[root@localhost ~]# userdel -r marry
[root@localhost ~]# ls -ld /home/marry //确认宿主目录是否已删除
ls: 无法访问/home/marry: 没有那个文件或目录
3.用户账号的初始配置文件
添加一个新的用户账号后,useradd命令会在该用户的宿主目录中建立一些初始配置文件。这些文件来自于账号模板目录/etc/skel/,基本上都是隐藏文件,较常用的初始配置文件包括 ".bash_logout" 、".bash_profile" 和 ".bashrc"。其中, ".bash_profile" 文件中的命令将在该用户每次登录时被执行;".bashrc"文件中的命令会在每次加载"/bin/Bash"程序(当然也包括登录系统)时执行;而 ".bash.logout" 文件中的命令将在用户每次退出登录时执行。理解这些文件的作用,可以方便我们安排一些自动运行的后台管理任务。
在 ".bashrc" 等文件中,可以添加用户自己设置的可执行语句(如Linux命令行、脚本控制语句等),以便自动完成相应的任务。如果希望为所有用户添加登录后自动运行的命令程序、自动设置变量等,可以直接修改/etc目录下的类似文件,如/etc/bashrc文件、/etc/profile文件。例如,执行以下操作可以为所有用户自动设置myls命令别名。
[root@localhost ~]# vim /etc/bashrc
……//省略部分
# and interactive - otherwise just process them to set envvars
for i in /etc/profile.d/*.sh; do
if [ -r "$i" ]; then
if [ "$PS1" ]; then
. "$i"
else
. "$i" >/dev/null
fi
fi
done
unset i
unset -f pathmunge
fi
# vim:ts=4:sw=4
alias myls='/bin/ls -lhr'