2017-11-17Linux基础知识(12)用户和组的管理命令

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了2017-11-17Linux基础知识(12)用户和组的管理命令相关的知识,希望对你有一定的参考价值。


  在上一章中我们讲述了通配符(bash globing)以及IO重定向及管道,以及介绍了用户管理的基本概念,主要讲述了其用户类别和组类别及管理用户和组的数据库文件,在用户类别当中分为管理员和普通用户这两个大类,而普通用户又分为系统用户和登录用户这个两类。之后在组类别当中介绍了其管理组和普通用户组还有一个组类别是基本组和附加组,最后一个组类别为似有组和公共组,那么接下来我们讲述Linux用户和组的管理命令。

一、安全上下文

  我们都知道,所有的进程都是使用发起者的身份来运行,那么对于操作系统来讲,所谓运行的程序无非就是背后运行的很多进程,比如:内核以及相关的进程,以及后台的服务管理进程,咱们称之为后台进程,对于文件的访问其实都不是"人"在访问,而是进程在访问,比如说我们使用ls命令访问某个文件,其实是ls的进程在访问,每一个进程访问一些资源时,它一定代表某个用户来运行的。比如说:张三发起的命令则是以他的身份来运行,root也是如此,只不过访问的被赋予的权限不一样,因为普通用户没有权限访问其敏感文件(例如/etc/passwd或/etc/shadow),所以说命令的执行就代表着用户的执行,命令都是以某个用户的身份来运行,而运行程序有两类,分别是开机时启动和通过终端认为启动,开机自动启动也必须用普通用户所属的的权限来运行,但这个用户从来不登录该系统,仅仅是让某个进程在运行时能以一个普通用户的身份在做,而这个就叫做系统用户,同时这个机制我们称之为安全上下文,所以我们总结一下安全上下文:

   安全上下文:
	进程以其对发起者的身份运行:
		进程对于文件的访问权限,取决于此进程的用户以及用户所属的权限;
   系统用户:为了能够让那些后台进程或服务类进程以非管理员的身份运行,通常需要创建多个普通用户;这类用户从不用登录系统

二、用户和组等管理命令

  首先我们说一下管理组的命令,第一个就是groupadd命令,该命令是添加一个组的命令,常用的选项也是很少的,命令格式也很简单,如下为:

   # groupadd [OPTIONS] GROUPNAME

  该命令的选项如下:

   -g GID:指定GID;默认是上一个的GID+1;
   -r:创建系统组;

  添加组之后我们还可以进行修改组的属性,那么修改组属性的命令为groupmod,使用格式如下:

   # groupmod [OPTIONS] GROUP_NAME

  该命令的的选项如下:

   -g GID:修改GID;
   -n new_name:修改组名;

  我们还可以删除某一个组,删除某一个组的命令为groupdel命令,命令格式为:

   # groupdel [OPTIONS] GROUP_NAME

  以上就是创建、修改和删除一个组的命令,对于组命令,暂时了解到这里,下面我们说一下关于用户管理的命令。
  首先我们创建一个用户为useradd命令,需要注意的是,如果创建用户没有指定一个组的话,就会自动创建一个私有组。

   # useradd [OPTIONS] LOGIN

  该命令的选项如下:

   -u, --uid UID:指定UID;
   -g, --gid GROUP:指定基本的组ID,此组需要事先存在;
   -G, --groups GROUP1[,GROUP2,...[,GROUPN]]]:可以批量添加组成员;
   -c, --comment COMMENT:指明注释信息;
   -d, --home-dir HOME_DIR:以指定的路径为用户的家目录;通过复制/etc/skel为此目录并重命名实现;指定的家目录路径如果事先存在,则不会为用户复制环境配置文件;
   -s, --shell SHELL:指定用户的默认shell,可支持的所有shell列表存储在/etc/shells文件中;
   -r, --system:创建系统用户;

  需要注意的是,我们默认useradd创建用户的话,则在创建用户的时候的诸多使用默认设定的设定配置文件为:/etc/login.defs。不过我们可通过以命令的方式来修改;

   useradd -D:显示创建用户的默认配置;
   useradd -D OPTIONS:修改默认选项的值;

  其修改的结果保存在/etc/default/useradd文件中;
  那么以上就是如何添加用户,以及介绍了添加用户的修改选项,接下来我们来说一下修改用户的属性命令,其命令格式如下:

   # usermod [OPTIONS] LOGIN

  该命令的选项如下:

   -u, --uid UID:修改用户的ID为此指定新的ID;
   -g, --gid GROUP:修改用户所属的基本组;
   -G, --groups GROUP1[,GROUP2,...[,GROUPN]]]:修改用户所属的附加组;原来的附加组会被覆盖;
   -a, --append:与-G一同使用,用于为用户追加新的附加组;
   -c, --comment COMMENT:修改注释信息;
   -d, --home HOME_DIR:修改用户的家目录;用户原有的文件不会被转移至新位置;
   -m, --move-home:只能与-d选项一同使用,用于将原来的家目录移动为新的家目录;
   -l, --login NEW_LOGIN:修改用户名;
   -s, --shell SHELL:修改用户默认的shell;

   -L, --lock:锁定用户的密码;即在/etc/shadow文件中,用户原来的密码字符串之前添加一个"!";
   -U, --unlock:解锁用户密码;

  接下来是删除某个用户,那么删除某个用户使用的是userdel命令,命令的格式为:

   # userdel [OPTIONS] LOGIN

  该命令的选项如下:

   -r:删除用户时一并删除其家目录;

2.1 练习题

  1、创建用户gentoo,UID为4801,基本组为gentoo,附加组为distro(UID为5000)和peguin(GID)为5001。

   # useradd -u 4801 -g gentoo -G distro,peguin gentoo

  2、创建用户fedora,注释信息为"Fedora Code",默认shell为/bin/tcsh。

   # useradd -c "Fedora Code" -s /bin/tcsh fedora

  3、修改gentoo用户的家目录为/var/tmp/gentoo;要求其原有文件仍能被用户访问。

   # usermod -md /vat/tmp/gentoo gentoo

  4、为gentoo新增附加组为netadmin。

   # usermd -G netadmin gentoo

  现在我们该介绍一下passwd命令,一般添加完用户之后,我们打开新的终端登录该用户时,如果没有密码的话,为了安全起见,是登录不上去的,所以我们要给用户设定密码,认证该用户是否能登录该系统,密码正确登录该shell,密码错误就不能登录进去。那么设定密码的命令为passwd,格式如下:

   # passwd [-k] [-l] [-u [-f]] [-d] [-e] [-n mindays] [-x maxdays] [-w warndays] [-i inactivedays] [-S] [--stdin] [username]

  我们看到这个命令格式是很长的,我们在管理员模式下,供两种方法可以使用:

   (1) passwd:修改用户自己的密码;
   (2) passwd USERNAME:修改指定用户的密码,

  该命令的选项如下:

   -l, -u:锁定和解锁该用户;
   -d:清除用户密码串;
   -e DATE:过期期限,日期;
   -i DAYS:非活动期限;
   -n DAYS:密码最短使用期限;
   -x DAYS:密码最长使用期限;
   -w DAYS:警告期限;

   --stdin:键盘的标准输入;
	echo "PASSWORD" | passwd --sdtin USERNAME

  除了我们可以给用户设置密码之外,我们还可以给组设置密码,那么组密码的设置命令为gpasswd,其命令格式为:

   # gpasswd [OPTIONS] GROUP

  该命令的选项如下:

   -a USERNAME:向组中添加用户;
   -d USERNAME:向组中移除用户;

  还有一条命令是将某个用户可临时切换为指定为基本组的命令,这个命令就是newgrp命令,格式为:

   # newgrp [-] [group]
   -:会模拟用户重新登录以实现重新初始化其工作环境;

  接下来我们说一下chage命令,该命令是更改用户密码的过期信息,当密码失效时就是通过此命令来管理的。其命令格式如下:

   # chage [OPTIONS]... [USER]

  该命令的选项如下:

   -d:上一次更改的日期;
   -E:帐号到期的日期,过了这天,此帐号将不可用;
   -W:用户密码到期前,提前收到警告信息的天数;
   -m:密码可更改的最小的天数。为0代表任何时候都可以更改密码;
   -M:密码保持有效的最大天数;

  还有一种就是显示用户真实和有效的ID,该命令就叫id命令,显示指示用户或当前用户(当未指定用户时)的用户与组信息。

   # id [OPTIONS]... [USERS]

  该命令的选项如下:

   -u:仅显示有效的UID;
   -g:仅显示用户的基本组ID;
   -G:仅显示用户所属的所有组ID;
   -n:显示名字而非ID;

  那么吓一条命令是su命令,该命令是运行替换用户和组的标识,也是切换用户的一种命令,格式如下:

   # su [OPTIONS]... [-] [USER [ARG]]

  su命令有两种登录切换模式,一种是登录式切换,另一种是非登录式切换。
  登录式切换:会通过读取目标用户的配置文件来重新初始化。

   # su - USERNAME
   # SU -l USERNAME

  非登录式切换:不会读取目标用户的配置文件进行初始化。

   # su USERNAME

  需要注意的是:管理员可无密码切换至其它任何用户;非管理员用户在切换用户时要给出其目标用户的密码。该命令格式如下:

   -c `COMMAND`:仅以指定用户的身份运行此处指定的命令;

  其实还有几个其它的命令,在下一章中我们进行讲解。例如:

   chsh, chfn, finger, whoami, pwck, grpck

  那么现在对用户和组的管理命令做一个总结:

   groupadd, groupmod, groupdel, useradd, usermod, userdel, passwd, gpasswd, newgrp, su, id, chage

本文出自 “天蝎座” 博客,转载请与作者联系!

以上是关于2017-11-17Linux基础知识(12)用户和组的管理命令的主要内容,如果未能解决你的问题,请参考以下文章

2017 11 17-构建之法:现代软件工程-阅读笔记

《2017-11-17-构建之法:现代软件工程-阅读笔记》

Linux 学习笔记 2022-11-12---------Linux基础

linux[基础]-12-重要的环境变量[01]

2017.11.17

2017.11.17日T19_4QQ课堂讲义