linux账号和权限管理-2

简介: 2.添加、修改、删除用户账号

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'


相关实践学习
CentOS 8迁移Anolis OS 8
Anolis OS 8在做出差异性开发同时,在生态上和依赖管理上保持跟CentOS 8.x兼容,本文为您介绍如何通过AOMS迁移工具实现CentOS 8.x到Anolis OS 8的迁移。
相关文章
|
运维 Linux Shell
Linux账号和权限管理
Linux账号和权限管理
106 0
|
算法 Linux Shell
linux账号和权限管理-1
Linux操作系统是一个多用户、多任务的服务器操作系统,提供了严格的权限管理机制,主要从用户身份、文件权限两方面对资源访问进行限制。任何一个使用系统资源的用户都需要首先向系统 管理员申请一个账号,然后以这个账号的身份进入系统。本章将分别学习Linux操作系统中用户和组账号的管理、文件权限和归属的管理。
155 0
|
Linux 数据安全/隐私保护 Unix
【Linux账号和权限管理命令】
【Linux账号和权限管理命令】
131 0
|
Linux Shell 数据安全/隐私保护
|
安全 Unix Shell
|
存储 Linux 开发工具
Linux权限管理(1)基本权限
一、文件类型与权限 -rwxrw-r-- 第1个字符表示文件类型 若是 - ,表示是普通文件 若是 d ,表示是目录 若是 l ,表示是链接文件 若是 b ,表示是设备文件里的可供存储的接口设备 若是 c ,表示是设备文件里的串行端口设备,例如鼠标、键盘 第2至4个字符是一组,表示所有者权限(u) 第5至7个字符是一组,表示所属组权限(g) 第8至10个字符是一组,表示其他人权限(o) 每组中,r 表示读权限,w 表示写权限,x 表示执行权限。
|
Linux Go 数据安全/隐私保护
Linux - 权限管理之基本权限
Linux - 权限管理之基本权限
153 0
Linux - 权限管理之基本权限
|
Linux Shell 数据安全/隐私保护