实践平台linux,关于构造Linux系统实践平台的设想

摘 要 当前虽然有很多高校将Linux课程作为本科学生的必修课,但是在高校中专业的Linux实验室却并未普及。在不增加机房管理员工作量以及学生可以充分体验Linux系统性能的前提下,本文提出了一种利用网络来实现Linux系统实践平台的构造方法,并且描述了整体方案的设计以及实现细节,论证了不同教学实践平台的优缺点。

关键词 Linux系统实践平台 网络 Linux实验室 高等教育

中图分类号:TP311.11 文献标识码:A DOI:10.16400/ki.kjdks.2016.01.076

Plans on Linux Systems Practice Platforms Construction

ZHANG Han, MA Jianhong

(Software College of Zhengzhou University, Zhengzhou, He'nan 450000)

Abstract Although there are many colleges and universities will present Linux courses as a required course for undergraduate students, but in universities specialized Linux laboratory has not spread. Without increasing the room administrator workload and students can fully experience the Linux system performance under the premise, this paper presents a method of using the Internet to achieve the construction practice Linux system platform, and describes the design and implementation details of the overall program, demonstrated advantages and disadvantages of different teaching practice platform.

Key words Linux Systems practice platform; network; Linux laboratory

Linux作为一款优秀的操作系统,在移动通讯、网络安全、集群计算、嵌入式等领域发挥着重要的作用。近几年来,社会对Linux的认可度逐渐提高,国家也在大力推行Linux操作系统的使用。因此,越来越多的高校将Linux课程列为了本科学生的必修课。但是,事实上,很多高校都没有建立起专业的Linux实验室,如何利用现有的环境来构造出一个Linux的实验环境成为一项亟待解决的问题。

1 现有实验环境概括

目前绝大多数高校建立Linux实验环境一般采用的都是如下两种方法:

(1)在PC机的硬盘上直接安装Linux和windos两种系统,在开机时让学生做出选择,使用windows或者Linux。这样做的好处是,学生可以真正掌握Linux的使用环境,接触到到内核模块编写等底层实验。但缺点也有很多,比如学生随意修改root密码,或者因为一些不当操作对内核造成了损害无法开机必须重装系统等等。

(2)在PC机上安装虚拟机,然后在虚拟机上安装Linux操作系统。这样做的好处在于可以实现Linux和windos操作系统的任意切换,并且可以让学生尝试做自己想要完成的一切操作。因为在虚拟机里含有一个快照功能,这个功能其实类似于windows操作系统的一键还原,无论在操作过程中出现什么样的情况,即使将系统的关键文件全部删除,也可以恢复到操作之前的状态。但是虚拟机有个很致命的问题在于会导致系统的不稳定,出现一些奇怪的错误。

因此,我们考虑使用一台专业的Linux服务器,利用网络来实现Linux系统实践平台的设置。

2 实践平台构想

要实现我们的实践平台,除了要让学生们可以通过网络访问服务器上的Linux系统资源外,还应该解决两个问题:首先需要让每一个想要使用实践平台的学生都可以自己注册一个用户名并且设置自己的密码。其次,教师可以掌握每个学生登录退出系统的时间以及在登录时间内所做的操作。

2.1 用户注册

通常,Linux系统中用户分为三大类,root用户、普通用户和系统用户。

Root用户也被称为是根用户,具有系统中的最高权限,通常进行系统管理。普通用户可以登录系统执行某些任务。普通用户属于是受限用户,只能操作其权限范围内的文件和目录。学生们注册的用户就属于是这类用户的范畴。但是,普通用户只能由root用户创建。如果说,所有学生的用户名和密码都交给root来进行创建的话,既增加了管理员的工作量,创建出的用户名和密码又不利于学生记忆,所以我们可以考虑让学生自己来注册用户。

让学生自己来注册用户,需要做如下一些工作:

2.1.1 建立远程连接

首先在学生使用的PC机上安装putty客服端,这是一个免费的、Windows 32平台下的telnet、rlogin和ssh客户端,全面支持ssh1和ssh2。这样就可以在windows平台下使用putty连接远程linux主机。如果putty提示“Connection refused”,那么可能是远程主机没有安装OpenSSH。可以通过命令

# rpm -qa openssh

# rpm -qa openssh-server

查看是否安装OpenSSH。如果没有,需自行安装。一般系统安装盘中都有OpenSSH的安装软件包。如果已经安装了OpenSSH,那么可能的原因就是SSH没有启动。输入命令: #/etc/init.d/ssh start

配置ssh-server,其配置文件位于/etc/ssh/sshd_config,默认端口为22,为了安全,我们通常自定义为其他端口,然后再重启,使用命令如下:

#sudo /etc/init.d/ssh resart

2.1.2 创建公共用户admin

因为我们不可能让所有学生的用户名和密码都交给根用户root来进行创建,也不可以把root的用户名和密码直接告知给学生,所以这个时候我们可以手动创建出一个公共用户admin,让它可以暂时获得root权限中创建用户名和密码的权限。编辑配置文件使用命令visudo,需要注意的是编辑sudo的配置文件/etc/sudoers是一般不建议直接使用命令#vi /etc/sudoers去编辑,因为在sudoers配置文件中有语法,直接用vi编辑,系统不会检查语法对错,这样可能导致无法使用sudo工具,所以最好使用visudo命令去编辑配置文件。虽然visudo也是调用vi去编辑,但是保存时系统会进行语法检查,如果出现错误则会进行提示。添加如下语句:

admin ALL=/sbin/passwd;/sbin/useradd

这句话表示用户admin会暂时获得用户root添加用户和修改用户密码的权利。学生可以利用putty客服端以及公共用户admin来登录到Linux系统中自行创建自己的用户名和密码。

2.2 获取学生上机下机时间以及登录时间内做的操作

在linux系统的环境下,用户只要登录系统后所做的所有操作我们都可以通过命令history来查看,可是假如一台服务器有多人登陆,而其中的某个人误操作或删除了重要的数据。而history命令只对登录用户执行有效,即使root用户也无法得到其它用户histotry历史,这个时候就无法查到究竟历史记录了。

这个时候,可以在/etc/profile文件中写如下代码:

PS1="`whoami`@`hostname`:"'[$PWD]'

History

read -p “please key in your teacher’s name :” teacher

uip=`who -u am i 2>/dev/null| awk '{print $NF}'|sed -e 's/[()]//g'`

if [ "$uip" = " " ]

then

uip=`hostname`

fi

if [ ! -d /tmp/teacher ]

then

mkdir /tmp/teacher

chmod 777 /tmp/teacher

fi

if [ ! -d /tmp/teacher”$LOGNAME“ ]

then

mkdir /tmp/teacher/$“LOGNAME”

chmod 700 /tmp/teacher/${LOGNAME}

fi

export HISTSIZE=4096

DT=`date "+%Y-%m-%d_%H:%M:%S"`

export HISTFILE="/tmp/teacher/${LOGNAME}/${uip}.$DT"

chmod 700 /tmp/teacher/${LOGNAME}/${uip}.$DT>/dev/null

写好之后保存,然后使用source /etc/profile 使脚本生效。

这段脚本的主要目的就是在/tmp新建个teacher目录,然后以所有登录过系统的用户和IP地址作为文件名,每当用户登录/退出会创建相应的文件,该文件保存这段用户登录时期内操作历史。

这样教师就可以根据记录的文件来查看学生的登录及退出时间以及在这段时间里所做的所有操作。

3 结束语

利用Linux服务器和Linux稳定的网络功能我们构建出这样的实验平台,这样既解决了需要将微机重新安装Linux操作系统的繁琐问题,又解决了在虚拟机环境下安装Linux系统出现的不稳定问题。创建这样的实践操作平台有利于高等院校发展Linux教学和实践活动,培养出更多Linux人才。

参考文献

[1] 鸟哥.鸟哥的Linux私房菜.人民邮电出版社,2010(3).

[2] 史苇杭.Linux配置与管理教程.科学出版社,2013(6).

[3] Bovet D P,Cesati M.深入理解Linux内核[M].第3版.陈莉君,张琼声,张宏伟,译.北京:中国电力出版社,2007.

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/566260.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

ndk linux 最新版本,NDK各版本下载

翻不了墙的话,可以用迅雷下载最新版本r20https://dl.google.com/android/repository/android-ndk-r20-windows-x86.ziphttps://dl.google.com/android/repository/android-ndk-r20-windows-x86_64.ziphttps://dl.google.com/android/repository/android-ndk-r20-dar…

c语言常用字符串处理函数6,【总结】C语言中常见的字符串处理函数

-------------------------------------------------------------------------------------------C语言中没有字符串类型,但是为了方便对字符串进行操作,提供了许多字符串处理函数。如:输入输出字符串,字符串的拷贝,连…

c语言 样例测试覆盖,白盒测试实例之十一——逻辑覆盖测试

逻辑覆盖测试是通过对程序逻辑结构的遍历实现程序的覆盖。从覆盖源代码的不同程度可以分为以下六个标准:语句覆盖、判定覆盖(又称为分支覆盖)、条件覆盖、判定-条件覆盖(又称为分支-条件覆盖)、条件组合覆盖和路径覆盖。先看一下具体例子的源代码(C语言)&#xff1a…

C++运算符重载函数作为类成员函数和友元函数

C运算符重载函数作为类成员函数 1.1成员函数的重载运算符左侧是一个类对象,而且与运算符函数类型相同。因为必须通过类的对象去调用该类的成员函数,而且只有运算符重载函数和返回值类型相同,运算结果才有意义。1.2将双目运算符重载为友元函数…

C语言辅导试题答案,C语言试题含答案).doc

一、单项选择题(在每小题的四个备选答案中,选出一个正确的答案,并将其代码填入题干后的括号内。每小题1分,共20分)1.程序中定义以下宏 #define S(a,b) a*b若定义 int area; 且令areaS(31,34),则变量area的值为( )A 10B 12C 21D 28…

C++重载流插入运算符与流提取运算符

C重载流插入运算符与流提取运算符 1.1 "<<" 流插入运算符&#xff0c;">>"流提取运算符。1.2对“<<”和“>>”重载的函数的形式如下&#xff1a;istream & operator >> (istream &,自定义的类&);ostream & …

c语言tcp push函数,如何在FreeBSD中使用TCP_NOPUSH调用sendfile之前添加头文件

我知道技术上FreeBSD中的TCP_NOPUSH和Linux中的TCP_CORK假设是类似的。如何在FreeBSD中使用TCP_NOPUSH调用sendfile之前添加头文件在Linux中&#xff0c;我可以设置TCP_CORK&#xff0c;发送头文件sendfile()&#xff0c;并且取消设置TCP_CORK以在文件前面插入头文件。在FreeBS…

C++不同数据类型的转换

C不同数据类型的转换 C标准类型数据的转换 1.1隐式类型转换&#xff0c;如&#xff1a; int i6; ii7.5; 1.2显式类型转换,如: 类型名(数据) 如int(89.5) 在C语言中 (int)89.5 建议用C的方式。 C用转换构造函数进行类型转换 1.1转换构造函数也是一种构造函数&#xff…

ev3的c语言编程软件,乐高EV3编程软件教育版下载

乐高EV3编程软件教育版官方版是一款用于机器人编程的应用工具&#xff0c;乐高EV3编程软件教育版最新版可以通过可视化图标形式编程&#xff0c;用以控制机器人的各种动作指令&#xff0c;乐高EV3编程软件教育版操作起来比较简单&#xff0c;发挥你的想象&#xff0c;创造无限的…

C++继承与派生

C继承与派生 1.1 C中可重用机制是通过继承这一个机制来实现的。1.2在C中所谓“继承”就是在一个已存在的类的基础上建立一个新的类&#xff0c;已存在的类(例如"马")称为“基类(base class)”或“父类(father class)”&#xff0c;新建立的类(例如“白马”)称为“派生…

Android代码删除通知,Android:从通知中删除通知b

Android&#xff1a;从通知中删除通知b我已经创建了一个应用程序&#xff0c;并且我设法在android通知栏中添加通知。 现在我需要示例如何从事件通知栏中删除该通知&#xff1f;11个解决方案197 votes你可以尝试这个快速代码public static void cancelNotification(Context ctx…

C++三大继承与多级派生

C公用继承 1.1在定义一个派生类时把派生方式指定为public的&#xff0c;称为公用继承&#xff0c;派生类称为公用派生类&#xff0c;基类称为公用派生类。1.2关于公用继承的一段代码:#include <iostream> using namespace std; class student { public: void display(); …

C++派生类的构造函数和析构函数

C派生类的构造函数和析构函数 派生类的构造函数和析构函数 #include <iostream> using namespace std; class student { public: student(int num,char* n):number(num),name(n){} ~student(){cout << "student deconstruted" << endl;} protecte…

android 4.0系统,全新Android 4.0系统_手机Android频道-中关村在线

与搭载Android 2.3系统的OPPO R807不同&#xff0c;OPPO R817搭载了Android 4.0系统。不过这款手机仍旧舍弃了Android系统的原生界面&#xff0c;因此两款手机在界面上的变化其实并不非常大。升级Android 4.0后界面变化不大内置多款主题与解锁样式可更改字体及SIM卡信息OPPO R8…

android sqlite 示例,android SQLite数据库使用示例

数据库的操作&#xff0c;需用到数据库类SQLiteDatabase&#xff0c;重写管理员类SQLiteOpenHelper&#xff0c;用Cursor查询数据一、操作数据库的辅助类&#xff0c;包含打开、关闭、增删改查方法//自定义的数据库的接口&#xff0c;其中包含SQLiteHelperpublic class NotesDb…

C++虚基类

C虚基类 1.1虚基类的作用&#xff1a;如果一个派生类有多个直接基类&#xff0c;而且这些直接基类又有一个共同的基类&#xff0c;则在最终的派生类中会保留该间接共同基类的多份同名成员。所以为了解决这个问题&#xff0c;C提供虚基类的方法&#xff0c;使得在继承间接共同基…

android清除图案锁 位置,安卓手机清除锁屏密码、锁屏图案的教程

来源&#xff1a;安卓网2014-01-21/12:15本文分享一个安卓手机清除锁屏密码以及锁屏图案的几种方法和详细教程。如果锁屏密码、或者图形锁屏密码忘记了怎么办&#xff0c;怎么清除呢?下面小编整理了3种安卓手机清除锁屏图案密码的方法。↓↓↓准备工作&#xff1a;1.确保已经安…

C++多态性

C多态 1.1多态性(polymorphism)是面向对象程序设计的一个重要特征。1.2从系统实现的角度看&#xff0c;多态性分两类&#xff1a;静态多态性与动态多态性。静态多态性是通过函数重载(运算符重载也是函数重载)来实现的。它又称为编译时多态。动态多样性是在程序运行过程中才动态…

ue4 android vulkan,在Android用vulkan完成蓝绿幕扣像

效果图(1080P处理)因为摄像头开启自动曝光&#xff0c;画面变动时&#xff0c;亮度变化导致扣像在转动时如上。这个demo主要测试二点&#xff0c;一是测试ndk camera集成效果,二是本项目对接外部实现的vulkan层是否方便&#xff0c;用于以后移植GPUImage里的实现。我简化了在an…

C++静态关联与动态关联

1.1确认具体对象的过程叫关联(binding)&#xff0c;在这里指把一个函数与类对象捆绑在一起&#xff0c;建立关联。 1.2什么是静态关联&#xff1f; 函数重载和通过对象名调用的虚函数&#xff0c;在编译时即可确定其调用的虚函数属于哪一个类&#xff0c;其过程称为静态关联&…