通过第一节课程的学习,你应该已经知道,Linux 是一个可以实现多用户登录的操作系统,比如“李雷”和“韩梅梅”都可以同时登录同一台主机,他们共享一些主机的资源,但他们也分别有自己的用户空间,用于存放各自的文件。但实际上他们的文件都是放在同一个物理磁盘上的甚至同一个逻辑分区或者目录里,但是由于 Linux 的 用户管理 和 权限机制,不同用户不可以轻易地查看、修改彼此的文件。

下面我们就来学习一下 Linux 下的账户管理的基础知识。

查看用户

请打开终端,输入命令:

$ who am i
# 或者
$ who mom likes

输出的第一列表示打开当前伪终端的用户的用户名(要查看当前登录用户的用户名,去掉空格直接使用 whoami 即可),第二列的 pts/0 中 pts 表示伪终端,所谓伪是相对于 /dev/tty 设备而言的,还记得上一节讲终端时的那七个使用 [Ctrl]+[Alt]+[F1]~[F7] 进行切换的 /dev/tty 设备么,这是“真终端”,伪终端就是当你在图形用户界面使用 /dev/tty7 时每打开一个终端就会产生一个伪终端,pts/0 后面那个数字就表示打开的伪终端序号,你可以尝试再打开一个终端,然后在里面输入 who am i,看第二列是不是就变成 pts/1 了,第三列则表示当前伪终端的启动时间。

还有一点需要注意的是,在某些环境中 who am i 和 who mom likes 命令不会输出任何内容,这是因为当前使用的 SHELL 不是登录时的 SHELL,没有用户与 who 的 stdin 相关联,因此不会输出任何内容。例如我在本地的 Ubuntu 系统上输入这个命令就不会有提示。

此时我们只需要打开一个登录 SHELL 的终端例如 Tmux,再在新的终端里执行命令即可。

$ tmux

who 命令其它常用参数

参数 说明

-a 打印能打印的全部
-d 打印死掉的进程
-m 同am i,mom likes
-q 打印当前登录用户数及用户名
-u 打印当前登录用户登录信息
-r 打印运行等级

创建用户

在 Linux 系统里, root 账户拥有整个系统至高无上的权限,比如新建和添加用户。

root 权限,系统权限的一种,与 SYSTEM 权限可以理解成一个概念,但高于 Administrator 权限,root 是 Linux 和 UNIX 系统中的超级管理员用户帐户,该帐户拥有整个系统至高无上的权力,所有对象他都可以操作,所以很多黑客在入侵系统的时候,都要把权限提升到 root 权限,这个操作等同于在 Windows 下就是将新建的非法帐户添加到 Administrators 用户组。更比如安卓操作系统中(基于 Linux 内核)获得 root 权限之后就意味着已经获得了手机的最高权限,这时候你可以对手机中的任何文件(包括系统文件)执行所有增、删、改、查的操作。

大部分 Linux 系统在安装时都会建议用户新建一个用户而不是直接使用 root 用户进行登录,当然也有直接使用 root 登录的例如 Kali(基于 Debian 的 Linux 发行版,集成大量工具软件,主要用于数字取证的操作系统)。一般我们登录系统时都是以普通账户的身份登录的,要创建用户需要 root 权限,这里就要用到 sudo 这个命令了。不过使用这个命令有两个大前提,一是你要知道当前登录用户的密码,二是当前用户必须在 sudo 用户组。shiyanlou 用户也属于 sudo 用户组(稍后会介绍如何查看和添加用户组)。

su,su- 与 sudo
需要注意 Linux 环境下输入密码是不会显示的。

su 可以切换到用户 user,执行时需要输入目标用户的密码,sudo 可以以特权级别运行 cmd 命令,需要当前用户属于 sudo 组,且需要输入当前用户的密码。su - 命令也是切换用户,但是同时用户的环境变量和工作目录也会跟着改变成目标用户所对应的。

现在我们新建一个叫 lilei 的用户:

$ sudo adduser lilei

实验楼的环境目前设置为 shiyanlou 用户执行 sudo 不需要输入密码,通常此处需要按照提示输入 shiyanlou 密码(Linux 下密码输入是不显示任何内容的),shiyanlou 用户密码可以通过 sudo passwd shiyanlou 命令进行设置。然后是给 lilei 用户设置密码,后面的选项的一些内容你可以选择直接回车使用默认值。

这个命令不但可以添加用户到系统,同时也会默认为新用户在 /home 目录下创建一个工作目录:

$ ls /home

现在你已经创建好一个用户,并且你可以使用你创建的用户登录了,使用如下命令切换登录用户:

$ su -l lilei

输入刚刚设置的 lilei 的密码,然后输入如下命令并查看输出:

$ who am i
$ whoami
$ pwd

你发现了区别了吗?这就是上一小节我们讲到的 who am i 和 whoami 命令的区别。

退出当前用户跟退出终端一样,可以使用 exit 命令或者使用快捷键 Ctrl+D。

用户组

在 Linux 里面每个用户都有一个归属(用户组),用户组简单地理解就是一组用户的集合,它们共享一些资源和权限,同时拥有私有资源,就跟家的形式差不多,你的兄弟姐妹(不同的用户)属于同一个家(用户组),你们可以共同拥有这个家(共享资源),爸妈对待你们都一样(共享权限),你偶尔写写日记,其他人未经允许不能查看(私有资源和权限)。当然一个用户是可以属于多个用户组的,正如你既属于家庭,又属于学校或公司。

在 Linux 里面如何知道自己属于哪些用户组呢?

方法一:使用 groups 命令

$ groups shiyanlou

其中冒号之前表示用户,后面表示该用户所属的用户组。这里可以看到 shiyanlou 用户属于 shiyanlou 用户组,每次新建用户如果不指定用户组的话,默认会自动创建一个与用户名相同的用户组(差不多就相当于家长的意思)。

默认情况下在 sudo 用户组里的可以使用 sudo 命令获得 root 权限。shiyanlou 用户也可以使用 sudo 命令,为什么这里没有显示在 sudo 用户组里呢?可以查看下 /etc/sudoers.d/shiyanlou 文件,我们在 /etc/sudoers.d 目录下创建了这个文件,从而给 shiyanlou 用户赋予了 sudo 权限:

方法二:查看 /etc/group 文件

$ cat /etc/group | sort

这里 cat 命令用于读取指定文件的内容并打印到终端输出,后面会详细讲它的使用。 | sort 表示将读取的文本进行一个字典排序再输出,然后你将看到如下一堆输出,你可以在最下面看到 shiyanlou 的用户组信息:

没找到?没关系,你可以使用 grep 命令过滤掉一些你不想看到的结果:

$ cat /etc/group | grep -E "shiyanlou"

/etc/group 文件格式说明
/etc/group 的内容包括用户组(Group)、用户组口令、GID(组 ID) 及该用户组所包含的用户(User),每个用户组一条记录。格式如下:

group_name:password:GID:user_list

你看到上面的 password 字段为一个 x,并不是说密码就是它,只是表示密码不可见而已。

这里需要注意,如果用户的 GID 等于用户组的 GID,那么最后一个字段 user_list 就是空的,这里的 GID 是指用户默认所在组的 GID,可以使用 id 命令查看。比如 shiyanlou 用户,在 /etc/group 中的 shiyanlou 用户组后面是不会显示的。lilei 用户,在 /etc/group 中的 lilei 用户组后面是不会显示的。

将其它用户加入 sudo 用户组
默认情况下新创建的用户是不具有 root 权限的,也不在 sudo 用户组,可以让其加入 sudo 用户组从而获取 root 权限:

#注意 Linux 上输入密码是不会显示的
$ su -l lilei
$ sudo ls

会提示 lilei 不在 sudoers 文件中,意思就是 lilei 不在 sudo 用户组中,至于 sudoers 文件(/etc/sudoers)你现在最好不要动它,操作不慎会导致比较麻烦的后果。

使用 usermod 命令可以为用户添加用户组,同样使用该命令你必需有 root 权限,你可以直接使用 root 用户为其它用户添加用户组,或者用其它已经在 sudo 用户组的用户使用 sudo 命令获取权限来执行该命令。

这里我用 shiyanlou 用户执行 sudo 命令将 lilei 添加到 sudo 用户组,让它也可以使用 sudo 命令获得 root 权限,首先我们切换回 shiyanlou 用户。

$ su - shiyanlou

copy
此处需要输入 shiyanlou 用户密码,shiyanlou 的密码可以在右侧工具栏的环境信息里看到。

当然也可以通过 sudo passwd shiyanlou 进行设置,或者你直接关闭当前终端打开一个新的终端。

$ groups lilei
$ sudo usermod -G sudo lilei
$ groups lilei

然后你再切换回 lilei 用户,现在就可以使用 sudo 获取 root 权限了。

删除用户

删除用户是很简单的事:

$ sudo deluser lilei --remove-home

使用 --remove-home 参数在删除用户时候会一并将该用户的工作目录一并删除。如果不使用那么系统会自动在 /home 目录为该用户保留工作目录。

删除用户组可以使用 groupdel 命令,倘若该群组中仍包括某些用户,则必须先删除这些用户后,才能删除群组。


程序员交流qq群:782974737 点击加入

Linux实现多用户登录 用户管理相关推荐

  1. Linux笔记总结 - linux实操篇 - 用户管理

    Linux笔记总结 - linux实操篇 - 用户管理 1 基本介绍 Linux系统是一个多用户多任务的操作系统,任何一个要使用的系统资源的用户,都首先向系统管理员申请一个账号,然后以这个账号身份进入 ...

  2. linux中进程的用户管理

    linux中进程的用户管理 每个进程都拥有真实的用户.组(uid.gid),有效的用户.组(euid.egid),保存的设置用户.组(suid.sgid),还有linux中专门用于文件存储存取的用户. ...

  3. linux用户自动输入密码,Linux自动输入密码登录用户

    每次进去Linux系统,都有切换root用户,输入密码很麻烦,所以就写了一个小脚本,自动输入密码,登录到root用户, 1,首先检查一些是否安装了expect root@wuzs:/home/wuzs ...

  4. Linux 指令——文件和用户管理以及用户权限

    Linux 指令--文件和用户管理以及用户权限 方便快捷指令 文件和用户管理 文件管理 文件管理命令 参数 例子 vim指令 用户管理 管理用户指令 参数 例子 用户权限 用户权限命令 ACL用户权限 ...

  5. Linux进阶之路————用户管理

    引言 前面几篇关于Linux的已经大概领略了Linux的风采,本篇用户管理,将着重总结日常工作中,非常重要的用户管理功能. 主要包括:新增用户.删除用户.查询用户信息.指定/修改密码.切换用户.用户组 ...

  6. linux的多用户登录

    一.用户与组的概念 1.理解linux多用户,多任务的特性 Linux是一个真实的.完整的多用户多任务操作系统,多用户多任务就是可以在系统上建立多个用户,而多个用户可以在同一时间内登录同一个系统执行各 ...

  7. Linux入门(四)-用户管理

    四.Linux用户(组)管理 Linux 是多用户多任务操作系统, 换句话说,Linux 系统支持多个用户在同一时间内登陆,不同用户可以执行不同的任务,并且互不影响. 例如,某台 Linux 服务器上 ...

  8. 【Linux】多用户原理 - 用户分类、用户组、uid、gid、主目录

    文章目录 一.Linux 多用户 1. 理解Linux系统可以有多个用户 2. 用户管理 二.用户分类 1. 用户类别 2. 用户组 3. id 命令 4. uid.gid 三.用户主目录 1. Li ...

  9. Linux操作系统介绍及用户管理

    1.Linux系统简介 1.1.早期介绍 ​ Linux起源于一个学生的简单需求.芬兰赫尔辛基大学Linus Torvalds,Linux的作者与主要维护者,在其上 大学时所买得起的唯一软件是Mini ...

最新文章

  1. php 自加 性能,对于数据库的自增、自减心得
  2. 大疆没有边界:刚拳打GoPro,又脚踢优必选
  3. PHPROXY Encrypt 0.61
  4. PowerShell在Exchange2010下交互式创建域用户和邮箱
  5. VTK:图片之CombiningRGBChannels
  6. wpf listview 切换数据源 位置不刷新_连载| 8 初识数据源
  7. 使用Typora绘制流程图
  8. Exchange 2003 和 Exchange 2007最大处理器数、内存支持比较
  9. ASP.NET 控制页概览
  10. java同步器有哪些_Java 队列同步器 AQS
  11. 传统蒙文字体_蒙文字体下载
  12. IT桌面运维常识系列 -(Windows部署服务 - 01)
  13. Solidworks或CAD怎样输出高质量图片?
  14. 基于深度学习的图像匹配技术一览
  15. 金星DEM数据介绍与下载教程
  16. 未来的计算机 展望未来作文,展望未来作文(通用5篇)
  17. 微信小程序 图片旋转后上传
  18. electron 主进程与渲染进程通讯
  19. state软件的基本使用
  20. 2021年制冷与空调设备安装修理复审考试及制冷与空调设备安装修理作业考试题库

热门文章

  1. 中值滤波原理及MATLAB算法实现
  2. 清华大学计算机基础实验部,2019计算机考研清华大学计算机基础教学部简介
  3. google地图静态下载和js调用
  4. 暑假篇之每周两篇4.0(下)补充
  5. 《Adobe After Effects CS4经典教程》——1 工作流程 1.1 开始
  6. AD域禁止运行指定软件
  7. usb摄像头识别答题卡系统
  8. PHP创建PDF文件(通过FPDF类库)
  9. 冒险岛内置全任务脚本爽歪歪外挂
  10. mysql数据库管理实战 甘长春_MySQL数据库管理实战