当你在共享的系统上工作时,你可能不希望其他用户偷窥你的控制台中看你在做什么。如果是这样,我知道有个简单的技巧来锁定自己的会话,同时仍然允许其他用户在其他虚拟控制台上使用该系统。要感谢 Vlock(Virtual Console lock),这是一个命令行程序,用于锁定 Linux 控制台上的一个或多个会话。如有必要,你可以锁定整个控制台并完全禁用虚拟控制台切换功能。Vlock 对于有多个用户访问控制台的共享 Linux 系统特别有用。

安装 Vlock

在基于 Arch 的系统上,Vlock 软件包被替换为默认预安装的 kpd 包,因此你无需为安装烦恼。

在 Debian、Ubuntu、Linux Mint 上,运行以下命令来安装 Vlock:

  1. $ sudo apt-get install vlock

在 Fedora 上:

  1. $ sudo dnf install vlock

在 RHEL、CentOS 上:

  1. $ sudo yum install vlock

在 Linux 上锁定虚拟控制台会话

Vlock 的一般语法是:

  1. vlock [ -acnshv ] [ -t <timeout> ] [ plugins... ]

这里:

  • a —— 锁定所有虚拟控制台会话,
  • c —— 锁定当前虚拟控制台会话,
  • n —— 在锁定所有会话之前切换到新的空控制台,
  • s —— 禁用 SysRq 键机制,
  • t —— 指定屏保插件的超时时间,
  • h —— 显示帮助,
  • v —— 显示版本。

让我举几个例子。

1、 锁定当前控制台会话

在没有任何参数的情况下运行 Vlock 时,它默认锁定当前控制台会话(TYY)。要解锁会话,你需要输入当前用户的密码或 root 密码。

  1. $ vlock

你还可以使用 -c 标志来锁定当前的控制台会话。

  1. $ vlock -c

请注意,此命令仅锁定当前控制台。你可以按 ALT+F2 切换到其他控制台。有关在 TTY 之间切换的更多详细信息,请参阅以下指南。

此外,如果系统有多个用户,则其他用户仍可以访问其各自的 TTY。

2、 锁定所有控制台会话

要同时锁定所有 TTY 并禁用虚拟控制台切换功能,请运行:

  1. $ vlock -a

同样,要解锁控制台会话,只需按下回车键并输入当前用户的密码或 root 用户密码。

请记住,root 用户可以随时解锁任何 vlock 会话 ,除非在编译时禁用。

3、 在锁定所有控制台之前切换到新的虚拟控制台

在锁定所有控制台之前,还可以使 Vlock 从 X 会话切换到新的空虚拟控制台。为此,请使用 -n 标志。

  1. $ vlock -n

4、 禁用 SysRq 机制

你也许知道,魔术 SysRq 键机制允许用户在系统死机时执行某些操作。因此,用户可以使用 SysRq 解锁控制台。为了防止这种情况,请传递 -s 选项以禁用 SysRq 机制。请记住,这个选项只适用于有 -a 选项的时候。

  1. $ vlock -sa

有关更多选项及其用法,请参阅帮助或手册页。

  1. $ vlock -h
  2. $ man vlock

Vlock 可防止未经授权的用户获得控制台访问权限。如果你在为 Linux 寻找一个简单的控制台锁定机制,那么 Vlock 值得一试!

如何在 Linux 上锁定虚拟控制台会话的更多相关文章

  1. 如何在Linux上通过grub添加内核参数

    转自Linux中国 我们可以在linux内核启动时为其提供各种各样的参数.这些参数可以自定义内核默认的行为,或者通知内核关于硬件的配置信息.内核参数应在内核启动时通过引导装载程序,如GRUB或LILO ...

  2. 如何在Linux上使用VIM进行.Net Core开发

    对于在Linux上开发.Net Core的程序员来说, 似乎都缺少一个好的IDE. Windows上有Visual Studio, Mac上有Visual Studio for Mac, 难道Linu ...

  3. 如何在 Linux 上复制文件/文件夹到远程系统?

    从一个服务器复制文件到另一个服务器,或者从本地到远程复制是 Linux 管理员的日常任务之一. 我觉得不会有人不同意,因为无论在哪里这都是你的日常操作之一.有很多办法都能处理这个任务,我们试着加以概括 ...

  4. springboot打成的jar包如何在Linux上持久运行

    一.首先说说在没有springboot的时候,项目是如何部署的? 1.动态web项目 动态web项目部署很方便,基本上上传文件到服务器的tomcat里面的webapps文件夹下即可完成部署.当然了,这 ...

  5. 如何在Linux上清理内存缓存、缓冲与交换空间

    如何在Linux上清理内存缓存.缓冲与交换空间 与其他类型的操作系统一样,GNU/Linux已经有效的实现了内存管理,甚至更加优秀.但是如果任何进程正在吃光你的内存,并且你想清理它,Linux提供了一 ...

  6. 如何在 Linux 上设置密码策略

    https://linux.cn/article-2518-1.html 用户帐号管理是系统管理员最重要的工作之一.而密码安全是系统安全中最受关注的一块.在本教程中,我将为大家介绍如何在 Linux ...

  7. 如何在 Linux 上安装应用程序

    如何在 Linux 上安装应用程序 编译自:https://opensource.com/article/18/1/how-install-apps-linux作者: Seth Kenlon原创:LC ...

  8. [转帖]如何在Linux上使用命令行查看硬件信息

    如何在Linux上使用命令行查看硬件信息 时间:2016-01-13   作者:admin 分类:新手入门 阅读:126次 http://embeddedlinux.org.cn/emb-linux/ ...

  9. 如何在Linux上创建,列出和删除Docker容器

    本篇文章介绍的内容是关于在Linux机器上创建,列出和删除docker容器,下面我们来看具体的内容. 1.启动Docker容器 使用下面的命令启动新的Docker容器.这将启动一个新的容器,并为你提供 ...

随机推荐

  1. 《python核心编程第二版》第5章习题

    5-1 整形 讲讲 Python 普通整型和长整型的区别 答:普通整型 32位,长整数类型能表达的 数值仅仅与你的机器支持的(虚拟)内存大小有关 5-2 运算符(a) 写一个函数,计算并返回两个数的乘 ...

  2. 大批量复制Oracle数据表,连带复制主键约束,字段说明以及字段默认值(量产)

    DECLARE      CURSOR tab_name_cur       IS           SELECT table_name           FROM user_tables     ...

  3. 为什么mysqld启动报错

    在一台ubuntu测试机器上启动一个mysql实例,本来应该是一件很简单的事情, 启动的时候却报错了:   mysqld_safe --defaults-file=/etc/mysql/my3307. ...

  4. Caused by: redis.clients.jedis.exceptions.JedisDataException: WRONGTYPE Operation against a key holding the wrong kind of value

    对错误类型key的操作,也就是说redis中没有你当前操作的这个key,而你用这个key去执行某些操作!检查key是否正确

  5. 软工实践 - 第二十五次作业 Beta 冲刺(3/7)

    队名:起床一起肝活队 组长博客:https://www.cnblogs.com/dawnduck/p/10116979.html 作业博客:班级博客本次作业的链接 组员情况 组员1(队长):白晨曦 过 ...

  6. Spring框架(依赖注入)

    特点 1轻量级和侵入性低 2依赖注入和面向接口实现松耦合 3面向切面编程 减少样式代码 专有名词: 1依赖注入:对象无需自行管理依赖关系.通过系统负责协调在创建对象的第三方组件的设定,实现依赖关系自动 ...

  7. Vue.js---组件

    详情点此连接(转载) 组件的创建和注册 vue.js的组件的使用有3个步骤:创建组件构造器.注册组件和使用组件. 1. 调用Vue.extend()方法创建组件构造器. 2. 调用Vue.compon ...

  8. maven中进行go的编译

    maven提供的插件maven-antrun-plugin真是个好东东,使得maven可以利用ant的很多功能. 最近需要实现在maven中实现对go代码的编译,添加如下代码在pom文件中即可. &l ...

  9. 在虚拟机安装 Linux 系统(菜鸡级别)

    处理器数量看个人 剩下按照推荐的配置选择就OK 启动客户端 -> Enter进入 /为其它盘./Boot为根目录 可不勾选

  10. CSS3基础选择器

    /*选择器分组:多个选择器使用同一个样式*/ h1,h2,a{ color: blue; } strong{ color: aquamarine; } /*选择器继承:body中未设置样式的会使用继承 ...