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 7迁移Anolis OS 7
龙蜥操作系统Anolis OS的体验。Anolis OS 7生态上和依赖管理上保持跟CentOS 7.x兼容,一键式迁移脚本centos2anolis.py。本文为您介绍如何通过AOMS迁移工具实现CentOS 7.x到Anolis OS 7的迁移。
相关文章
|
4月前
|
算法 Linux 数据安全/隐私保护
【linux】root大王如何制约普通用户——权限管理
【linux】root大王如何制约普通用户——权限管理
|
6月前
|
算法 Linux 数据安全/隐私保护
Linux权限管理:深入理解setuid、setgid、seteuid和setegid
Linux权限管理:深入理解setuid、setgid、seteuid和setegid
525 0
|
13天前
|
Linux 数据安全/隐私保护
linux权限管理
本文介绍了Linux系统中的权限管理,包括权限的概念、用户和用户组与权限的关系、文件权限位的说明以及rwx权限的具体含义。同时,详细讲解了如何使用`chmod`和`chown`命令更改文件和目录的权限,并通过多个实验演示了不同权限组合对文件和目录的实际影响。最后,总结了文件和目录权限的一些重要知识点,帮助读者更好地理解和应用Linux权限管理。
39 1
linux权限管理
|
1月前
|
Linux 数据安全/隐私保护
探索Linux操作系统下的权限管理
【8月更文挑战第66天】在数字世界中,操作系统的权限管理就如同现实世界中的钥匙和锁,保护着我们的数据安全。本文将带你深入理解Linux系统中的权限设置,通过实际代码示例,让你掌握文件和目录权限的分配与管理技巧。准备好了吗?让我们开始这场关于权限管理的探险之旅吧!
83 14
|
3月前
|
监控 安全 Linux
在Linux中,某个账号登陆linux后,系统会在哪些日志文件中记录相关信息?
在Linux中,某个账号登陆linux后,系统会在哪些日志文件中记录相关信息?
|
5月前
|
网络协议 Linux 数据安全/隐私保护
【Linux操作系统】权限管理和粘滞位
【Linux操作系统】权限管理和粘滞位
【Linux操作系统】权限管理和粘滞位
|
5月前
|
安全 Linux Shell
【Linux】权限管理
【Linux】权限管理
49 5
|
6月前
|
运维 安全 Linux
深入理解 Linux 文件系统的权限管理
【5月更文挑战第30天】 在 Linux 操作系统中,文件系统权限管理是维护系统安全与数据完整性的基石。本文旨在深入探讨 Linux 权限模型的核心概念、实现机制及其对系统安全性的影响。通过对用户身份、文件权限和访问控制列表(ACL)等关键元素的剖析,揭示权限管理在实际操作中的应用细节。文章还将讨论如何有效配置权限来优化系统性能和提升安全性,以及解决常见的权限问题的策略。
|
6月前
|
Linux PHP 数据安全/隐私保护
深入理解PHP7的返回值类型声明深入理解 Linux 文件系统的权限管理
【5月更文挑战第30天】在PHP7中,引入了返回值类型声明的特性。这一特性使得开发者可以在函数定义时指定函数应返回的值的类型。本文将详细解析返回值类型声明的用法,以及它在实际开发中的应用,帮助读者更好地理解和使用这一特性。
|
6月前
|
安全 Linux 数据安全/隐私保护
深入理解Linux文件系统的权限管理
【5月更文挑战第24天】 在Linux操作系统中,文件系统权限管理是维护系统安全和用户数据隔离的关键机制。本文将深入探讨Linux文件系统中的权限模型,包括用户、组和其他类别的读、写、执行权限。我们将分析权限位的具体含义,如何通过命令行工具修改权限,以及权限掩码(umask)的作用。此外,我们还将讨论文件系统权限在实际应用中的常见问题及其解决方案,帮助读者构建更为安全且高效的Linux工作环境。