1.概述
用户的管理就是对passwd、shadow、group三个文件的增删改。
增加一个用户,UID,账户名、家目录、shell程序。
新建的用户,默认的情况下是无法登录的。
创建一个用户的时候,默认情况下,会为其创建一个同名的用户组
2.用户创建
创建:
语法:useradd [选项] {UserName}
选项:
-d 目录 | 指定用户家目录 |
-g 用户组 | 指定用户所属的主用户组。 |
-G 用户组,用户组 | 指定用户所属的附加组。 |
-c comment | 指定一段注释性描述 |
-s Shell程序 | 指定用户的登录Shell。有一个特殊的shell程序叫nologin,如果某帐号使用此shell,就表示用户不允许登录,该用户通常成为伪用户。 |
-u 用户号 | 指定用户的用户号 |
示例:
1.创建一个普通用户,使用默认值方法
可参见:https://blog.csdn.net/qq_32224047/article/details/107302750
2.创建一个普通用户,其家目录是在/mytest/jerry,主组root,附加组tom,adm
注意:如果没有mytest这个目录,那么就会出错,创建失败,创建需要先把指定的目录创建好,为了保证正确,路径写绝对路径
传统上,adm组用于授予用户访问某种系统日志文件的权限.
参见例如ls -l / var / log.
sys组通常旨在为用户提供某种管理权限.
例如. archlinux使用该组进行杯子管理.其他分布表现不同.例如.在ubuntu上,lpadmin组用于杯子管理.这里的sys组仍然是定义的,但似乎未被使用.
# bash
useradd -d /mytest/jerry -g root -G tom,adm jerry
指定用户的shell程序为/bin/sh,UID为80000
# bash
useradd -s /bin/sh -u 80000 test1
说明:虽然CentOS系统中默认的UID是65536个(0-65535),但是可以手动指定它的UID超出此范围。
测试再创建账户时UID会不会延续上案例的UID。
# bash
useradd test2
正常来应该按照上次创建用户的UID往后+1。但是80000已超过系统默认的范围,所以不会根据超出范围后UID进行+1延续。
创建伪用户(-s选项参考下表:伪用户一般在用户离职等情况下使用,让用户不能登陆,之后如果用户再次就职,可以修改用户类型,让其可以登陆):
# bash
useradd -s /sbin/nologin test3
3.修改用户
语法:usermod [选项] {UserName}
选项:
补充:-a:仅和-G一块使用,将用户添加到附属组群。
-c comment | 指定一段注释性描述 |
-d | 目录 指定用户主目录,如果目录不存在,则同时使用-m选项,可以创建主目录。 |
-g 用户组 | 指定用户所属的用户组。 |
-G 用户组,用户组 | 指定用户所属的附加组。如果想要在原有的基础上追加附加组,使用-aG的方式。 |
-s Shell文件 | 指定用户的登录Shell。有一个特殊的shell程序叫nologin,如果某帐号使用此shell,就表示用户不允许登录,该用户通常成为伪用户。 |
-u 用户号 | 指定用户的用户号 |
修改组,可以用组id 或者组名
---如修改为主组,可以采用下面两种写法
usermod -g 0 tom
usermod -g root tom
示例:
修改test账户的UID。
# bash
usermod -u 9000 test1
修改账户的附加组为test、test1:
# bash
usermod -G test,test1 jerry
为账户追加附加组件root、adm
# bash
usermod -aG root,adm jerry
将test5的伪用户状态修改为正常普通用户
# bash
usermod -s /bin/bash test5
说明:test5之前的shell程序是/sbin/nologin
4.删除用户
语法:userdel [选项] {UserName}
选项
-r | 删除账户的同时删除该账户的家目录 |
示例:
# bash
userdel zhangsan
说明:该命令执行完成之后,在home目录下依然保留了zhangsan的家目录(如果上述命令已经执行,可以执行rm 直接删除这个被保留的家目录,因为用户信息相关的3个文件记录已经理删除记录了),对比下面加了选项 r 的。
userdel -r lisi
说明:该命令之后之后,home目录中的lisi目录会被一并删除,且不保留它的工作文件。
一般来说,公司中删除账户的操作比较少,就算删除账户时,一般也不用-r的选项,因为人虽然离职,但是有可能此人还会回来继续任职~
如果员工离职,完全没有必要删除账户,可以使账户无法登录即可,比如nologin(可以通过上面步骤3恢复使用:usermod -s /bin/bash test5--test5标识之前是nologin 状态用户),锁定账户,删除密码等手段都是可以防止资料泄漏。
注:
Windows和Linux系统(其他系统没测试),没有密码的账户都是不允许通过远程的方式进行访问的
5.密码管理
语法:passwd [选项] {UserName}
选项:
-l | 锁定账户 |
-u | 解锁账户 |
-d | 删除密码 |
passwd 可以不跟选项、用户名,默认是修改自己的帐号密码。
修改他人密码,必须具备管理员权限(并不一定非要是root账户)
普通账户,只能修改自己的密码。
管理员修改他人的密码,不需要满足密码策略(如输入密码123就能通过,普通则不行)。
普通账户修改密码时,必须满足密码安全策略。-->as12AS!@
管理员修改他人密码:
passwd {UserName}
修改自己的密码
passwd
案例:
锁定zhangsan账户
# bash
passwd -l zhangsan
解锁zhangsan账户
# bash
passwd -u zhangsan
删除zhangsan账户密码
# bash
passwd -d zhangsan
案例中,锁定账户和删除账户密码都是可以达到不允许账户远程登录的效果,锁定后,密码输入正确与否都会提示密码不正确,相当于密码无效。
6.用户身份切换
su {UserName} | 表示切换用户之后,依然停留在当前目录 |
su - {UserName} | 表示切换用户之后,去到该用户的家目录 |
su test :切换到test用户,退出则 是exit
普通用户切换root时,书写格式不需要写成su - root,直接su即可。案例:当前位置,在/root下# bashsu zhangsan该命令执行过后,切换到zhangsan账户,但是路径依然停留在/root目录下
# bashsu - zhangsan该命令执行过后,切换到zhangsan账户,同时会去到zhangsan账户的家目录下。
小总结,su与账户名之间加不加"-"区别在于路径。
7.shell程序的简单介绍
Shell 是一个用 C 语言编写的程序,它是用户使用 Linux 的桥梁。Shell 既是一种命令语言,又是一种程序设计语言,bash是默认的shells中存了不同类型的shell,一般常用的命令是/bin/bash,shell
/bin/sh和/bin/bash都是Linux的shell程序,但是表现的形式不同,具体执行功能是一样的,可以理解为bash是sh的升级版,兼容版本
/bin/sh | -sh-4.1$ |
/bin/bash | [root@localhost tedu]# |
从上面的内容可以看得出来,bash确实是比sh提供的内容更多,更为详细。
可以通过命令查看shells文件中不同的shell:cat /etc/shells
主要用下面2个
/bin/bash
/sbin/nologin