linux系统管理学习笔记5-管理用户

2020-05-15

学习时间是2020年3月下旬,疫情居家隔离期间。 学习视频是,学堂在线上,颜晨阳老师讲的Linux系统管理

用户和用户组

用户和用户组的概念。

linux中必须要有一个用户账号(一般是一个字符串)才能登录和使用linux系统。

但是linux系统并不是识别用户的账号,而是通过识别用户的ID号,即UID。正常情况下,系统中每个用户都有一个独一无二的UID。

linux系统中有三类用户

  1. 管理员用户,只能有一个,拥有所有权限,就是根用户root,根用户的UID 是固定的,永远是0
  2. 虚拟用户,不具有登陆系统的能力,但是是系统运行不可或缺的。比如bin, daemon, ftp, mail, nobody等。这些用户一般是给系统中的程序使用,如浏览器就是nobody用户,匿名访问ftp时,会用到ftp用户。在Centos系统中,1-499的UID 预留给虚拟用户使用。
  3. 一般用户,是最常用的用户类型,可以登陆系统,只有优先权限。在centos中普通用户的UID从500开始。

用户组,就是具有相同特征的用户的一个集合体。linux也是通过一个ID号码来识别用户组,即GID。系统中的每个用户组都有一个独一无二的GID。

用户组和用户之间是多对多的关系。但是,一个用户虽然可以从属于多个用户组,但是他的主用户组只能有一个。主用户组和其他用户组最大的区别就在于,在用户创建文件时,会影响文件的“从属用户组”这个属性。根用户的主用户组也是root,并且根用户不从属于任何其他用户组。

id stu 即可以显示用户stu 的UID, 从属的用户组(其中第一个是主用户组)。

查看用户

linux中可以使用命令id和finger 来查看用户信息。

id命令侧重查看用户的UID, 归属的用户组GID。

finger命令侧重查看用户的家目录,登陆SHELL类型等等相关信息。

id 用户名

id后如果省略用户名,即为查看当前登陆用户的信息。查看时结果中显示的“环境=”后面的内容是SELinux的内容,SELinux是Centos中的一个附加安全机制。

举例,

id mag01

id root

finger 用户名

finger后如果省略用户名,即显示当前登陆用户的一些信息,分别是登陆用户名,用户备注 登陆终端类型,空闲时间,登陆时间,登陆主机名和IP地址。

finger stu
# 结果显示用户的login名称,用户的全名称,用户的家目录,用户所使用的默认shell类型,用户上次登陆的时间地点,用户的新邮件数目,用户家目录中隐藏文件.plan的内容(一般为用户的个人工作计划)。

切换用户身份

linux中不同用户的权限不同。切换用户的命令为su, switch user的缩写

su 用户名

使用时,经常加上-l选项,表示在切换用户时,不仅切换了用户身份,同时切换了用户的shell运行环境。如果没有特殊情况,强烈建议加上-l选项。-l选项,可以简化为一个横杠 - ,并且横杠左右各有一个空格。

su - root
#会提示输入root用户密码。输入密码时,linux不显示任何内容。
# 从普通用户切换成其他任何用户,需要输入密码
# 从根用户切换成其他用户,不需要输入密码。

创建修改和删除用户

创建用户

因为登陆系统时,需要输入的用户信息包括用户名和用户密码,所以创建用户最少也只需要这两样信息。

创建用户命令为useradd, useradd [要创建的用户名]。注意只有根用户才能创建新用户。

设置密码的命令是passwd, passwd [要设置密码的用户名] , 命令会提示输入要设置的密码,并提醒输入两次来进行确认,输入密码时,linux依然不会以任何方式回显输入。如果设置的命令过于简单,passwd命令会给出警告,这个警告也可以忽略,就是第二次输入时依然输入这个密码。但是强烈建议密码要大于9位并且包含数字和字符的组合。注意只有根用户才能设置其他用户的密码,普通用户只能设置自己的密码。

useradd nblecturer

默认情况下,除了创建用户的用户名和用户密码,用户的其他信息系统都默认指定了。默认情况是,新建用户的UID 是上一个新建用户的UID加1, 用户的家目录是/home/用户名,用户备注为无,主用户组是系统新建一个与用户同名的用户组(该用户组的GID默认是上一个用户组的GID加1),从属用户组是无,Shell类型是bash。在centos中第一个新建用户的默认UID 是500。

接下来示例,创建一个信息完备的用户 nbstu01。

user add -c Linux服务器管理慕课用户01 -u 601 -d /tmp/stu01 -g moocers -G stu,s_group01 -s /bin/tcsh nbstu01
  • -c 用于添加备注信息

  • -u 用于指定用户UID,需要确保这个UID未被其他用户使用。

  • -d 用于指定用户家目录

  • -g 用于指定主用户组,需要确保用户组确实存在。

  • -G 用于指定除主用户组外所从属的用户组,需要确保用户组确实存在。

  • -s 用于指定用户所使用的shell 类型。

修改用户

命令是usermod

即user modify缩写。所带的选项,几乎和useradd命令一样,即可以修改用户的多项信息。

示例修改用户nbstu01的信息

usermod -c 慕课用户02 -d /tmp/stu01 -g stu -G nblecturer -s /bin/bash nbstu01
# 使用-l选项可以修改用户的猪用户忙,-u修改用户的uid.注意用户名和uid在用户登录系统时是无法修改的。
usermod -u 602 -l nbstu02 nbstu01

删除用户

user del [要删除的用户名]

注意,用户被删除后,用户的家目录依然是存在的。

可以使用-r选项,在删除用户的同时,删除用户的家目录,不过删除要谨慎,以免误删文件。

正在登陆的用户无法被删除。

创建修改和删除用户组

创建用户组

只有根用户才可以创建新用户组,只需要指定用户组的名称即可。

groupadd [用户组名]

linux中没有专门查看用户组的命令,可以通过将一个用户添加到新创建的用户组中,来查看用户组信息(即使用usermod -G命令)。

默认情况下,gid 是上一个gid加1.

修改用户组

groupmod命令,可以修改用户组的名称,GID等属性。

-g 选项修改gid

-n选项修改用户组名

groupmod -g 8888 -n moocers nbmoocers

强调,不要随意修改用户组的GID,容易造成系统混乱。

删除用户组

groupdel [要删除的用户组名]

举例,groupdel moocers

注意,只要该用户组是某一个用户的主用户组,那么这个用户组就无法被删除。

部分让渡根用户权限

当多人掌管主机,某些普通用户请求执行某些需要根用户权限的命令时,需要根用户让渡部分权限。

sudo 命令,可以分配给普通用户某些合理的权限。

sudo命令,就是实现无需根用户密码也能分享部分根用户权限。

系统默认只有root用户可以使用sodu命令。如果是其他普通用户想使用sudo命令,那么需要修改一些配置文件,详细在听课视频中有描述。

用户管理配置文件

本讲讨论linux系统用户管理中所涉及的四个配置文件。

系统中用户和用户组的任何操作,最终的落脚点就是这四个配置文件。这四个文件可以分为两组,第一组存放用户相关的配置文件,/etc/passwd 和/etc/shadow ;第二章存放用户组相关的配置文件,/etc/group 和 /etc/gshadow 。理论上可以通过修改这四个配置文件,来实现用户和用户组的管理,但是强烈不建议如此操作,以免造成混乱。

  • /etc/passwd 是系统所有用户的花名册。可以用vim打开该文件查看,可以看到有很多行,每行有7个字段,用冒号分割。分别是用户名:密码x:用户的UID:用户的主用户组GID:对用户的一些描述,可以为空:用户的家目录:用户所使用的shell名称。真的密码存放在/etc/shadow 文件中。

  • /etc/shadow 是 /etc/passwd 的影子文件,正常情况下,/etc/shadow文件的内容和/etc/passwd相同,两个文件互为补充,两个文件合在一起可以完整藐视linux系统中的用户。/etc/passwd文件对于所有用户均是可读的,所以出于保护用户隐私,登录密码等不放在passwd文件中,而放在shadow文件中。shadow文件只有根用户才有查看和修改权限。vim打开shadow文件查看,每行有9个字段,每行用冒号分割。第一字段是用户名,第二字段是被加密的用户密码,如果此字段显示的是*或者感叹号,表示该用户不能作为普通用户登录系统。第三字段是用户最后一次修改密码的时间距离centos中起始时间点是1970年1月1日的天数。第4个字段是两次密码修改的最小时间间隔,默认是0,表示没有时间间隔。第5 个字段是用户密码修改的最大时间间隔,表示的是用户密码的有效时间,默认是99999,大约是273年,也即表示密码不强制修改。第6个字段是密码失效警告时间,表示从系统警告用户修改密码到密码正式失效之间的天数,默认是7,表示不启用该功能。第7字段表示,用户口令作废多少天后系统会禁用此用户。禁用后,系统将不允许该用户登录。该字段默认为空,表示不使用该功能。第8字段是用户失效时间,字段给出一个绝对的天数,使用该字段,相当于规定了该用户的生存期,期满后,该用户就不能再登录系统,默认是空,表示不适用该功能。第9个字段是,保留字段,目前为空。

  • /etc/group, 每行, 用户组名:用户组密码:用户组GID:从属该用户组的用户列表(注意此处并不显示以该用户组为主用户组的用户)
  • /etc/gshadow,是/etc/group的影子文件,类似于上述用户的两个配置文件。