如何在Linux下规避权限限制? (linux 权限绕过)

Linux是一种开源且自由的操作系统,在日常使用中可能会遇到一些权限限制的问题。对于一些用户来说,他们想要既使用root权限,又不想被拒绝操作,因此他们需要规避Linux中的权限限制。在本篇文章中,我们将看到如何规避权限限制。

1.使用su命令

su命令可以让一个普通用户临时切换到超级用户模式,进而执行需要超级用户权限的任务。在执行su命令时,请输入常规用户的密码 。一旦你被认证为常规用户,你就可以使用超级用户权限执行命令。

举例来说,如果你想要编辑/etc/passwd文件,你可以在终端中键入su -,此时你的普通用户将会升级为root用户。然后,你就可以编辑/etc/passwd文件,并在操作完成后通过输入exit命令来回退到普通用户模式。请注意,使用su命令可能会危险,因为如果你在超级用户模式下执行错误的操作时,可能会造成系统损坏。

2.使用sudo命令

sudo命令可以让系统管理员授权其他用户对超级用户权限进行限制使用。在执行sudo命令时,你需要输入常规用户的密码,这样可以确保只有授权的用户才能访问超级用户权限。

举例来说,如果你想要添加新用户,请键入sudo useradd 新用户名,输入常规用户密码并继续完成相关操作。请注意,在使用sudo命令时,出现错误的情况少之又少。

3.更改文件权限

如果你需要在Linux中访问某些需要超级用户权限才能使用的文件,可以更改访问这些文件的用户和组权限。这个方法可以让你在不需要超级用户权限的情况下访问和编辑这些文件。

举个例子,假设你拥有一个只有root用户可以访问的文件夹。你可以通过先在root用户下更改该文件夹的权限为777,这样普通用户就可以在不需要超级用户权限的情况下访问该文件夹。如果你想要再次设置文件夹为只读,可以使用chown命令将权限改回到root用户。

在Linux中,规避权限限制有不少方法,以上三个方法不是唯一的并且也不是确定可行的方法。在决定采用某个方法时,请您确保您对于该方法的基本概念和使用方法都比较了解,这样您就可以更安全、稳定、和高效地使用Linux系统。

相关问题拓展阅读:

linux内核认识sata磁盘?

这是来自 IBM developerworks 的一个非常好的文章可以清楚地解释如何启动火线和USB设备 Linux操作系统的原理。

希望它在对任何有兴趣把Linux操作系统安装到外部设备的人有所帮助。

原始的网址

从火线设备上启动Linux

可移动驱动器上安装Linux操作系统

难度等级:中等

Martyn Honeyford() IBM英国实验室 软件工程师

宣可达()翻译 webzi@linuxsir

2023年7月15日

2023年7月26日开始翻译,7月28日完成。

翻译经验不多。如有不妥,欢迎EMAIL交流。

使用一个外部驱动器是一个极棒的方法,能给你的老硬件带来新生和让你在你不能(或者不想)改变内置硬盘的计算机上使用Linux系统。

假设你想使用Linux在一个双启动环境,但是你的计算机硬盘又没有任何空余的空间。一种解决方法是使用”live”的linux发行版本象是Knoppix,他们这能直接从CD启动运行。 对于偶尔使用,这是一种可行的办法,但是它有若干的劣势:

*你将会仍然需要些固定文件存储。如果你只是操作少量的文件,一张1.44MB的磁盘就可以胜任,或者一个USB闪存棒适合中等量的文件,但是这些都不够理想。

*当使用一个LiveCD 的时候,最困难、最糟糕、最不可能的是安装你自己的应用程序或者定制现存的程序。

*使用LiveCD在性能上的牺牲,在启动初所有的设备检测时尤为明显,同样发生使用中(所有的文件从 CD 载入通常是比从硬盘中载入慢的多)。

的确,还有其他可选方案。举例来说,你可以买额外的内置驱动器并且在此安装Linux操作系统。但是常常,你可能没有任何空闲的扩展阜。(这特别容易发生在笔记本上,通常他们只允许一个内置硬盘。)

或者,你可以使用一个较大的硬盘取代当前的硬盘, 获得额外空间用于安装 Linux操作系统。 然而,这的确是一个耗费大量时间的方案,需要你重新安装现有的操作系统在新的硬盘, 重新安装和配置你所有应用程序, 和恢复所有数据。

更好的解决方案是购买一个外置硬盘并安装 Linux操作系统。 这卜搜样使得你在想使用Linux系统时候不必涉及现有的硬件和软件而只是简单连接外部驱动器。

可选的可移动设备

可用于安装Linux操作系统设备涵盖磁盘驱动器、USB-闪存设备、通过USB/火线连接的硬盘等等。

在一个小容量的设备中安装linux是可行的,例如在一个1.44MB的磁盘或者一个32MB的USB棒中,他们通常(必须)为特定目的定制,采用裁减的发行版本,例如,拯救中断的安装过程。

外置的硬盘在为使用一个常规目的的linux系统提供更大的灵活性同时,带来一个合理的成本。

许多不同的厂商提供许棚山多种不同容量的外置的驱动器。 (Maxtor, 西西部数据, 等等)。这些驱动器还会包含一个外置盒子,用于链弊中固定标准的 3-1/2 寸或 2-1/2 寸 IDE 硬盘。 然后这些驱动器经由 USB 或 IEEE1394(火线) 连接到计算机。

USB 受到在二个主要的版本中的影响,1.1 和 2.0. 1.1 版速度为12 Mbit/ s(每秒1Mbit) ,而 2.0 版支持更高达到 480 Mbit/s 的传输速度。 大多数2.0相容的驱动器也向后兼容1.1,通常建议尽量不要采用1.1接口除非没有其他的选择(因为其低速不适应此环境。)

火线标准也定义若干不同的速度, 实际上,大部分人所指的FireWire ,是“FireWire400”标准 ,支持更大传输速度为 400 Mbit/s 。

USB2.0和火线在速度上不分伯仲: 虽然 USB 2.0 有比较高的传输速度, 但是实际中因为协议的不同两者速度十分的接近。 如果你的计算机拥有2种接口, 更好使用USB而非火线(理由我将后将解释), 但是如果只有火线接口,当然你就选择它了。为了实现更大的灵活性, 可以选择众多同时支持 USB 2.0 和火线的驱动器中的一种。(像我稍后将在这一个文章中使用的那个一样。)

对于那些没有必须的接口, PCI(对于桌面) 和 PCMCIA(对于笔记本型电脑) ,现在火线和USB 2.0扩展卡也并非贵不可及: 举例来说, 我稍后将在文章中提及PCMCIA火线扩展卡大约为10英镑.($20 美元以下)

为了达到本文的目的,我已经购买 5-1/4寸外置驱动器的硬盘盒。 这是一件非常灵活的硬盘盒,并没提供驱动器而且能固定任何的标准 IDE 设备,包括 3-1/2 寸驱动器和像CD-RW/DVD-RW等5-1/4 寸 IDE 设备 。硬盘盒兼有 USB 2.0 和火线接口。

为了把硬盘盒连接到我的IBM Thinkpad T30笔记本电脑,我也购买了一个 PCMCIA 火线转接卡。 ( 因为内置的USB 接口只支持USB 1.1)

硬盘盒和火线转接卡相对比较便宜。 (大约分别为50英镑和10英镑。)

测试期间, 我把一个手边闲置的13 GB 3-1/2 寸 IDE 硬盘放进硬盘盒——对于真实情况,我会买一个较大的容量驱动器, 现在另购一个硬盘相当低廉( 大约每个50英镑!)

Linux 支持

正如你所期待,linux对这些硬盘盒支持的确非常好。任何遵从SBP(串行总线协议)标准的大储存设备在linux中使用非常简单。

大体上, 使对这些装置的支持你能够将会需要在你的核心中支持某些选项( 或直接地编译或通过模块。)

对于USB和火线,SBP 装置通过SCSI模拟来实现– 也就是说,Linux会把他们当作SCSI硬盘来处理 。 这是在 Linux 世界里面使用存储设备的一个常规方法。 ( 举例来说, IDE CD/DVD设备通常通过SCSI模拟来连接)。基于以上原因,下列的选项需要被内核支持:

* SCSI support

* SCSI emulation

* SCSI disk support

除此之外,不同连接方式需要一下的内核支持:

* 针对火线:

* IEEE1394 support

* OHCI1394 support

* RAW1394 support

* SBP-2 support

* 针对USB:

*(host-side) USB support

* OHCI support

* UHCI support

* USB mass-storage support

明显地,你还必须为其他的硬件 ( 如显卡等等)编译常规的支持, 而且可能需要一些额外的模块,取决你的具体硬件。

举例来说,我正在使用 PCMCIA(cardbus) 火线转接卡,因此,我还需要增加:

* PCMCIA support

* cardbus support

安装

现在我们有很完美外置驱动器,我们将开始安装在其安装Linux美妙之旅。

目前最简单的安装linux方法(当然仅个人意见) , 是连接你的所有硬件;(我的情况是,插入火线转接卡,连上转接线盒驱动器,然后打开驱动器的电源) 然后从你选择的发行版安装CD上启动你的计算机。

我采用的发行版是Gentoo(资源详见链接),因此,我用了最新的 “通用”x86 LiveCD。 (2023.1) 其他的发行版本必须的步骤大致和此相似。

一旦你使用安装CD启动,要藉由一点运气让他要辨认出你的驱动器。 磁盘应该出现在/dev/sdX, X 是一个小写字母从“a”开始。 在我的系统上,外置硬盘被当做 /dev/sda, 但是如果你有其他的 SCSI硬盘,这数字将会改变;( 或模拟了SCSI硬盘) 那种情况下,它可能是 /dev/sdb 或一些其他的字母。 如果你的驱动器不能被自动检测到, 就需要进一步采取措施 — 举例来说,你可能必须打开启动选项使用火线或者PCMCIA接口, 或你可能必须手动装载一些内核模块 , 或其他一类选项。 (资源详见故障发现与维修指导链接)

一旦驱动器被辨认出来,安装过程种其运作起来就像一个内置的硬盘。然后就你可以对其分区并且用常规方法安装linux。

有一句话我着重要提醒,小心选择何处安oot loader(通常是GRUB和LILO)--我建议不要装到主引导记录(MBR)中( 通常是默认值) 而是装到外置驱动器的根分区 ( 或/boot分区,如果你单独分了一个话)。

既然我们已经安装 Linux 在这个设备上,我们想要从上面启动它。 事情到此开始变的有点复杂了。

启动

在我前讨论在如何的新驱动器上面启动,我要讲解一些boot loader的小知识。

boot loader程序通常安装在计算机的之一个硬盘的MBR上。 当boot loader被调用 (BIOS自动地运行MBR里的代码),它通常显示一份可启动操作系统的菜单。以便选择一个给定的操作系统启动计算机。

两件细节在这个章节中应该注意:

* 操作系统选择菜单(通常)从磁盘中载入。

*为了启动有关的操作系统, boot loader 需要从磁盘中读取相关的内核。

在操作系统被装载之前 ,以上各步骤已经执行,这意味着所有的磁盘读取在BIOS调用时。 这是一个必须的前提,即,为了直接启动磁盘,你的 BIOS必须支持通过火线或USB被连接的磁盘。通常能在BIOS中看到关于从这些设备上启动选项。 火线BIOS支持现在的确非常的少见,但是 USB 支持正在变得相当的平常。 因此,如果你正在使用一部相对比较新的计算机上的USB接口,应该可以直接启动驱动器进Linux。

当经由 USB 连接,在安装外部的驱动器的 MBR 的幼虫之后,我能够直接地启动它。 当以被连接的磁盘片启动的时候,只是进入 BIOS 装备公用程序。 外部的磁盘片将会出现如一个一般的硬盘: 移动它,如此它在启动次序中的内在驱动器之前。

我也能够在一个内置的硬盘的MBR上安装一个boot loader而且使用其启动USB硬盘(在GRUB中被成为hd1)。 如果你正在使用火线, 有可能你的 BIOS 将会无法直接地启动硬盘,而且你需要更多一点步骤。

幸运的是,由于 Linux 的多样性,这有非常容易解决,如果你不能直接地启动,( 我就是这样的情况,使用一个PCMCIA转接卡!) 你能运行初始启动步骤,来自一个支持的设备 , 像是一台软驱,CD-ROM,USB棒,或在主硬盘上的小分区, 然后使用外部的驱动器继续其他步骤。

创建一个启动镜像

我们有2种方法启动:

*单阶启动

内核启动, 挂载根分区文件系统, 接着调用初始化教本继续初始化( 通常是/in/init)

*双阶启动 (initrd)的启动

内核启动,挂载一个初始ram disk (initrd),进一步运行定制的初始化, 然后挂载根分区文件系统继续初始化(同样, 通常调用/in/init)

每种方法都有它自己的优点和缺点。

单阶启动

为了要使用一个单阶的启动,我们需要建立一个内核包含挂载一个根分区文件系统所需的所有驱动程序。( 任何其他的驱动能作为模块编译并在根分区载入时候进行常规初始化。)

如果我们正在从像软盘这样的一个非常小的装置尝试启动, 更好的方式是创建的一个正合适内核,编译进所有挂载根外部分区系统所需驱动 — 而且编译其他的作为模块。 举例来说,我的内核编译进了SCSI支持, PCMCIA 支持, IEE1394 , SBP ,和其他相似的支持, 但是其他的(包括显卡支持,网络设备支持,等等)当做模块编译并储存在根分区上(在外部的驱动器的),而不是存储在软盘上。

这种方法的主要问题是需要我们给内核源代码打补丁– 那是一种最糟糕的痛苦(当新的内核发布),而真正的问题是如果补丁没有在维护,这样就不能跟上内核的变化。

你可能以为如果计算机BIOS支持USB和火线直接启动,我们能避免发生以上的2个问题。 不幸地,事情不是这样:这一个方法使用BIOS在启动时调用磁盘,一旦内核开始初始化, BIOS就失去了作用,而且使用内核驱动来调用磁盘– 所以你仍然会碰到同样的问题。

二阶启动

内核2.0.X版本 ,添加了一个有趣的功能到内核 — 使用“initial RAM disk(初始内存磁盘)”(or initrd)来实现二阶启动。

简言之,内核一概既往的启动;挂载一个创建在内存里迷你的根分区文件系统取代挂载“真正”的根分区系统。 无论任何命令都在这个初始环境中执行在“真正”的根分区系统被挂载之前直到我们切换到真正的根分区文件系统并销毁初始内存磁盘(initial RAM disk)。

这点在各种环境中都非常有用,但是我们的目标仅仅是简单的利用我们的迷你环境去重新扫描SCSI总线,等待外部驱动器识别,然后用它切换到我们真正的根而后继续启动。

使用这种方法,我们需要创建2个文件,一个内核和一个初始镜像文件。

内核仅是一个内建启动镜像(initrd)支持常规内核。 initrd 镜像是一个包涵我们迷你根分区系统的环路(loopback)文件系统镜像。 (该镜像可以有选折地使用gzip压缩来减小它的大小)。

你能在资源章节里找到关于如何创建和定制你自己的初始镜像的更多信息。

在镜像文件里,有一个linuxrc的文件。当镜像给载入时,该文件自动运行,所以请确定其有运行权限!为了达到我们的目的,linuxrc文件非常的简单:

列举 1. initrd linuxrc

#!/bin/sh

REAL_ROOT=/dev/sda1

# mount the /proc filesystem

mount -t proc none /proc

#for scsi-emulation (SCSI模拟)

# modprobe sd_mod

#for pcmcia (PCNCIA卡)

# modprobe pcmcia_core

#for FireWire (火线)

# modprobe ieee1394

# modprobe ohci1394

# modprobe raw1394

# modprobe p2

#for USB (USB)

# modprobe ucore

# modprobe ohci-hcd

# modprobe uhci-hcd

# modprobe u-storage

# loop rescanning the scsi bus + rerunning devfsd

retries=5

i=1

until

do

if

then

echo “Unable to mount real root ($REAL_ROOT) – Giving up!”

/bin/ash

exit

fi

echo “Real root ($REAL_ROOT) not found, retrying ($i)”

sleep 1

echo “scsi add-single-device 0 0 0” > /proc/scsi/scsi

echo “scsi add-single-device 1 0 0” > /proc/scsi/scsi

echo “scsi add-single-device 2 0 0” > /proc/scsi/scsi

/bin/devfsd /dev -np

i=$((i+1))

done

#umount /proc as it will be remounted by the normal init process

(解除挂载/proc分区当它会给常规的INIT进程重新挂载)

umount /proc

#now we simply exit, and the normal boot process should continue

(现在我们可以退出了,常规的启动进程将会继续)

exit 0

我们正在做的是载入适当的模块去支持外部驱动器: 请按需注视相应行。 (我把所有需要的支持编译进内核,因此不需要模块)。 然后循环, 再扫描 SCSI 总线 (回应一个命令到/proc虚拟文件系统下一个特别文件并调用devfsd程序) 直到根分区设备出现(我的情况是/dev/sda1 )。在我的情况,被访问的火线模拟SCSI总线是1 0 0,但是并不影响尝试部分其他的总线 — 如果你知道将会使用哪一个,你可以裁减这个教本。 同时, 如果你有其他的 SCSI 设备 (或模拟 SCSI设备), 驱动器可能有一个不同的字母。(例如,/dev/sdb1) 而且如果你没有使用外置驱动器上的之一个分区, 你将会需要使用一个不同的数字。( 例如,/dev/sda2)

现在我们需要做的全部是复制相关的文件进initrd镜像.( 你能够使用mount -o loop 命令挂载未压缩的镜像)尤其,我们需要确定我们有 linuxrc 文件、所有被用到的命令和其依赖的库。 这个(未挂载的)镜像可以有选折的压缩。

复制内核 (bzImage) 和 initrd 镜像 (initrd.gz)到磁盘。

最后的步是在磁盘上安装一个boot loader, 而且用下列的选项启动内核: kernel bzImage root=/dev/sda1 initrd=initrd.gz.

你现在应该可以使用磁盘来启动了:它会从软盘中载入内核,载入initrd镜像入内存,然后从那里继续常规启动。这点以后,磁盘就可以拿开了。

如果磁盘不合适 ( 例如,计算机没有软驱),任何设备在BIOS能用于启动都可以使用。 个人而言,我就使用一个小小的32MB的USB棒来达到这个目的。

参考资料:

早就能用了。只要是用新版本就可以了。不过有的机器硬件太新或者功能特强,还需要用老版激哪没对应驱动的系统。比如服务器的 SAS ,装 RHEL 4.x 系列,一般才需要另找驱动。

bootloader 阶段使用 BIOS 功能,所有的 SATA 默认都有一个简单的 BIOS 读写兼容功能提供支持。也就是说开了 AHCI ,BIOS 依然会提供兼容模式。不过现在的操作系统在内核启动后就会绕过 BIOS 直接操作硬件。这个时候如果开启了 AHCI 模式,那么 IDE 兼容部分的硬件接口模拟就没了,不过 BIOS 自己提供的读写功能虽然继续提供,但系统已然不用了。所以带亩 bootloader 可以蠢铅森读写硬盘并不代表 linux 内核可以读写硬盘。

linux 的驱动有两种存放状态,编入内核或者编成模块。

initrd 里面的就是模块,会被 bootloader 在读取内核时一起读取进入内存。一般内核模块只在需要时载入,可以节省内核的运行体积。但现在新版 linux 内核的 sata 驱动已经高度集成了,所以很多发行版的 SATA 驱动都直接进入内核不需要模块载入方式了。当然这要看系统的设计,有的系统既然 initrd 必然会提供,那么编入内核确实没意义。不过需要另外找驱动的硬件,都是模块方式存在,他们在系统启动时必须存在于 initrd 里面,不然内核自己没法集成,也不能从硬盘里面读取(没驱动没法读盘,没法读盘就没法读驱动)。

BIOS 的 INT13 功能太简单了。限制也特别多,现在都是能不用就不用的。所以这东西现在只有 bootloader 才会用。

旧版本的Linux有时不会识别Sata设备祥渣或者大容量的Sata设备,就需要额外的驱动。现在的Linux内核都已经添加了sata设备的驱动程序,是可以识别的,挂载块设备基亩,一般是sda、sdb这些搏宴森

主板支持SATA接口就可以。

现在的版本完全没问题

操作系统中的一些概念问题

这么多问题,没分谁理你

操作系统(英语:Operating System,简称OS)是一管理电脑硬件与电脑软件资源的程序,同时也是计算机系统的核心与基石。操作系统身负诸如管理与配置内存、决定系统资源供需的优先次序、控制输入与输出设备、操作网络与管理文件系统等基本事务。操作系统也提供一个让用户与系统交互的操作接口。

操作系统的型态非常多样,不同机器安装的操作系统可从简单到复杂,可从手机的嵌入式系统到超级电脑的大型操作系统。许多操作系统制造者对它涵盖范畴的定义也不尽一致,例如有些操作系统集成了图形化用户界面,而有些仅使用文字接口,而将图形接口视为一种非必要的应用程序。

操作系统理论在计算机科学中,为历史悠久而又活跃的分支;而操作系统的设计与实现则是软件工业的基础与核心。

现代操作系统通常都有一个使用的绘图设备的图形化用户界面,并附加如鼠标或触控面版等有别于键盘的输入设备。旧的OS或效能导向的服务器通常不会有如歼如此亲切的接口,而是以命令行接口(CLI)加上键盘为输入设备。以上两种接口其实都是所谓的壳,其功能为接受并处理用户的指令(例如按下一按钮,或在命令提示列上键入指令)。

选择要安装的操作系统通常与其硬件架构有很大关系,只有Linux与BSD几乎可在所有硬件架构上运行,而Windows NT仅移植到了DEC Alpha与MIPS Magnum。在1990年代早期,个人电脑的选择就已被局限在Windows家族、类Unix家族以及Linux上,而以Linux及Mac OS X为最主要的另类选择,直至今日。

大型机与嵌入式系统使用很多样化的操作系统。大型主机近期有许多开始支持Java及Linux以便共享其他平台的资源。嵌入式系统近期百家争鸣,从给Sensor Networks用的Berkeley Tiny OS到可以操作Microsoft Office的Windows CE都有。

个人电脑: Apple Macintosh – Mac OS X,Windows(仅Intel平台),Linux、BSD。

IBM兼容PC – Windows、Linux、BSD、Mac OS X(非正式支持)。

大型机: Burroughs MCP– B5000, IBM OS/IBM System/360, UNIVAC EXEC 8 — UNIVAC 1108

嵌入式系统: 嵌入森闷式系统使用非常广泛的操作系统(如VxWorks、eCos、Symbian OS及Palm OS)以及某些功能缩减版本的Linux或者其他操作系统。某些情况下,OS指称的是一个内置了固定应用软件的巨大泛用程序。在许多最简单的嵌入式系统中,所谓的OS就是指其上唯一的应用程序。

类Unix系统: 所谓的类Unix家族指的是一族种类繁多的OS,此族包含了System V、BSD与Linux。由于Unix是The Open Group的注册商标,特指遵守此公司定义的行为的操作系统。而类Unix通常指的是比原先的Unix包含更多特征的OS。

Unix系统可在非常多的处理器架构下运行,在服务器系统上有很高的使用率,例如大专院校或工程应用的工作站。自由软件Unix变种,例如Linux与BSD近来越来越受欢迎,它们也在个人桌面电脑市场上大有斩获,例如Ubuntu系统。

某些Unix变种,例如HP的HP-UX以及IBM的AIX仅设计用于自家的硬件产品上,而SUN的Solaris可安装于自家的硬件或x86电脑上。苹果电脑的Mac OS X是一个从NeXTSTEP、Mach以及FreeBSD共同派生出来的微核心BSD系统,此OS取代了苹果电脑早期非Unix家族的Mac OS。

经此橡弯历数年的披荆斩棘,自由开源的Unix系统逐渐蚕食以往专利软件的专业领域,例如以往电脑动画运算巨擘——SGI的IRIX系统已被Linux家族及贝尔实验室研发小组设计的九号计划与Inferno系统取代,皆用于分散表达式环境。它们并不像其他Unix系统,而是选择内置图形化用户界面。九号计划原先并不普及,因为它刚推出时并非自由软件。后来改在自由及开源软件许可证Lucent Public License释出后,便开始拥有广大的用户及社区。Inferno已被售予Vita Nuova并以GPL/MIT许可证释出。

当前,计算机按照计算能力排名世界500强中472台使用Linux,6台使用Windows,其余为各类BSD等Unix。

微软Windows: Microsoft Windows系列操作系统是在微软给IBM机器设计的MS-DOS的基础上设计的图形操作系统。现在的Windows系统,如Windows 2023、Windows XP皆是创建于现代的Windows NT核心。NT核心是由OS/2和OpenVMS等系统上借用来的。Windows可以在32位和64位的Intel和AMD的处理器上运行,但是早期的版本也可以在DEC Alpha、MIPS与PowerPC架构上运行。 虽然由于人们对于开放源代码作业系统兴趣的提升,Windows的市场占有率有所下降,但是到2023年为止,Windows操作系统在世界范围内占据了桌面操作系统90%的市场。

Windows系统也被用在低级和中阶服务器上,并且支持网页服务的数据库服务等一些功能。最近微软花费了很大研究与开发的经费用于使Windows拥有能运行企业的大型程序的能力。

苹果Mac OS: Mac OS是一套运行于苹果Macintosh系列电脑上的操作系统。Mac OS是首个在商用领域成功的图形用户界面。

Chrome OS: Google Chrome OS是一项Google的轻型电脑操作系统计划,其基于Google的浏览器Chrome的Linux内核。

进程管理: 不管是常驻程序或者应用程序,他们都以进程为标准运行单位。当年运用冯·诺伊曼结构建造电脑时,每个中央处理器最多只能同时运行一个进程。早期的OS(例如DOS)也不允许任何程序打破这个限制,且DOS同时只有运行一个进程(虽然DOS自己宣称他们拥有终止并等待驻留(TSR)能力,可以部分且艰难地解决这问题)。现代的操作系统,即使只拥有一个CPU,也可以利用多进程(multitask)功能同时运行复数进程。进程管理指的是操作系统调整复数进程的功能。

由于大部分的电脑只包含一颗中央处理器,在单核心(Core)的情况下多进程只是简单迅速地切换各进程,让每个进程都能够运行,在多核心或多处理器的情况下,所有进程通过许多协同技术在各处理器或核心上转换。越多进程同时运行,每个进程能分配到的时间比率就越小。很多OS在遇到此问题时会出现诸如音效断续或鼠标跳格的情况(称做崩溃(Thrashing),一种OS只能不停运行自己的管理程序并耗尽系统资源的状态,其他用户或硬件的程序皆无法运行)。进程管理通常实践了分时的概念,大部分的OS可以利用指定不同的特权等级(priority),为每个进程改变所占的分时比例。特权越高的进程,运行优先级越高,单位时间内占的比例也越高。交互式OS也提供某种程度的回馈机制,让直接与用户交互的进程拥有较高的特权值。

除了进程管理之外,OS尚有担负起进程间通信(IPC)、进程异常终止处理以及死锁(Dead Lock)侦测及处理等较为艰深的问题。

在进程之下尚有运行绪的问题,但是大部分的OS并不会处理运行绪所遭遇的问题,通常OS仅止于提供一组API让用户自行操作或通过虚拟机的管理机制控制运行绪之间的交互。

存储器管理: 根据帕金森定律:“你给程序再多存储器,程序也会想尽办法耗光”,因此程序员通常希望系统给他无且无限快的存储器。大部分的现代电脑存储器架构都是层次结构式的,最快且数量最少的暂存器为首,然后是高速缓存、存储器以及最慢的磁盘存储设备。而OS的存储器管理提供查找可用的记忆空间、配置与释放记忆空间以及交换存储器和低速存储设备的内含物……等功能。此类又被称做虚拟内存管理的功能大幅增加每个进程可获得的记忆空间(通常是4GB,既使实际上RAM的数量远少于这数目)。然而这也带来了微幅降低运行效率的缺点,严重时甚至也会导致进程崩溃。

存储器管理的另一个重点活动就是借由CPU的帮助来管理虚拟位置。如果同时有许多进程存储于记忆设备上,操作系统必须防止它们互相干扰对方的存储器内容(除非通过某些协议在可控制的范围下操作,并限制可访问的存储器范围)。分区存储器空间可以达成目标。每个进程只会看到整个存储器空间(从0到存储器空间的更大上限)被配置给它自己(当然,有些位置被OS保留而禁止访问)。CPU事先存了几个表以比对虚拟位置与实际存储器位置,这种方法称为标签页(paging)配置。

借由对每个进程产生分开独立的位置空间,OS也可以轻易地一次释放某进程所占据的所有存储器。如果这个进程不释放存储器,OS可以退出进程并将存储器自动释放。

磁盘与文件系统: 所谓的文件系统,通常指称管理磁盘数据的系统,可将数据以目录或文件的型式存储。每个文件系统都有自己的特殊格式与功能,例如日志管理或不需磁盘重整。

OS拥有许多种内置文件系统。例如Linux拥有非常广泛的内置文件系统,如ext2、ext3、ext4、ReiserFS、Reiser4、GFS、GFS2、OCFS、OCFS2、NILFS与Google文件系统。Linux也支持非本地文件系统,例如XFS、JFS、FAT家族与NTFS。另一方面,Windows能支持的文件系统只有FAT12、FAT16、FAT32与NTFS。NTFS系统是Windows上最可靠与最有效率的文件系统。其他的FAT家族都比NTFS老旧,且对于文件长度与分区磁盘能力都有很大限制,因此造成很多问题。而UNIX的文件系统多半是UFS,而UNIX中的一个分支Solaris最近则开始支持一种新式的ZFS

大部份上述的文件系统都有两种建置方法。系统可以以日志式(Journaling file system)或非日志式建置。日志式文件系统可以以较安全的手法运行系统回复。如果一个没有日志式建置的文件系统遇上突然的系统崩溃,导致数据创建在一半时停顿,则此系统需要特殊的文件系统检查工具才能撤消;日志式则可自动回复。微软的NTFS与Linux的ext3、ext4、reiserFS与JFS都是日志式文件系统。

每个文件系统都实现相似的目录/子目录架构,但在相似之下也有许多不同点。微软使用“\”符号以创建目录/子目录关系,且文件名称忽略其大小写差异;UNIX系统则是以“/”创建目录架构,且文件名称大小写有差异。

网络: 许多现代的OS都具备操作主流网络通信协议TCP/IP的能力。也就是说这样的操作系统可以进入网络世界,并且与其他系统分享诸如文件、打印机与扫描仪等资源。

许多OS也支持多个过去网络启蒙时代的各路网络通信协议,例如IBM创建的SNA、DEC在它所生产的系统所设置的DECnet架构与微软为Windows制作的特殊通信协议。还有许多为了特殊功能而研发的通信协议,例如可以在网络上提供文件访问功能的NFS系统。现今大量用于影音流(Streaming media)及游戏消息传送的UDP协议等。

安全: 大多数OS都含有某种程度的信息安全机制。信息安全机制主要基于两大理念:

OS提供外界直接或间接访问数种资源的管道,例如本地端磁盘驱动器的文件、受保护的特权系统调用(System call)、用户的隐私数据与系统运行的程序所提供的服务。

OS有能力认证(Authorization)资源访问的请求。允许通过认证的请求并拒绝无法通过的非法请求,并将适当的权力授权(Authentication)给此请求。有些系统的认证机制仅简略地把资源分为特权或非特权,且每个请求都有独特的身份辨识号码,例如用户名称。资源请求通常分成两大种类:

内部来源:通常是一个正在运行的程序发出的资源请求。在某些系统上,一个程序一旦可运行就可做任何事情(例如DOS时代的病毒),但通常OS会给程序一个识别代号,并且在此程序发出请求时,检查其代号与所需资源的访问权限关系。

外部来源:从非本地端电脑而来的资源请求,例如远程登录本机电脑或某些网络连接请求(FTP或HTTP)。为了识别这些外部请求,系统也许会对此请求提出认证要求。通常是请求输入用户名称以及相对应的密码。系统有时也会应用诸如磁卡或生物识别数据的它种认证方法。在某些例子,例如网络通信上,通常不需通过认证即可访问资源(例如匿名访问的FTP服务器或P2P服务)。

除了允许/拒绝形式的安全机制,一个高安全等级的系统也会提供记录选项,允许记录各种请求对资源访问的行为(例如“谁曾经读了这个文件?”)。

肇因于军方与商业组织将敏感数据记录在电脑上,安全机制在OS历史上是一个被长久关注与讨论的问题。美国国防部(DoD)便创立了《可信赖之计算机系统评鉴程序》(TCSEC),此手册确立了评鉴安全机制成效的基本原则。这对OS作者来说非常重要,因为TCSEC是用于评鉴、分类与选拔出用于处理、存储与获取敏感或机密数据的电脑系统的标准程序。

内部信息安全: 内部信息安全可视为防止正在运行的程序任意访问系统资源的手段。大多OS让普通程序可直接操作电脑的CPU,所以产生了一些问题,例如怎样把可如OS一样处理事务、运行同样特殊指令的程序强迫停止,毕竟在此情境下,OS也只是另一个平起平坐的程序。为通用OS所生产的CPU通常于硬件层级上实践了一定程度的特殊指令保护概念。通常特权层级较低的程序想要运行某些特殊指令时会被阻断,例如直接访问像是硬盘之类的外部设备。因此,程序必须得经由询问OS,让OS运行特殊指令来访问磁盘。因此OS就有机会检查此程序的识别身份,并依此接受或拒绝它的请求。

在不支持特殊指令架构的硬件上,另一个也是唯一的保护方法,则是OS并不直接利用CPU运行用户的程序,而是借由模拟一个CPU或提供一p-Code系统(伪代码运行机),像是Java一样让程序在虚拟机上运行。

内部安全机制在多用户电脑上特别重要:它允许每个系统用户拥有自己个人的文件与目录,且其他用户不能任意访问或删除。因为任何程序都可能绕过OS的监控,更有可能绕过侧录程序的监控,拥有强制力的内部安全机制在侧录启动时也非常重要。

外部信息安全: 通常一个操作系统会为其他网络上的电脑或用户提供(主持)各种服务。这些服务通常借由端口或OS网络地址后的数字访问点提供。通常此服务包括提供文件共享(NTFS)、打印共享、电子邮件、网页服务与文件传输协议(FTP)。 外部信息安全的最前线,是诸如防火墙等的硬件设备。在OS内部也常设置许多种类的软件防火墙。软件防火墙可设置接受或拒绝在OS上运行的服务与外界的连接。因此任何人都可以安装并运行某些不安全的网络服务,例如Telnet或FTP,并且设置除了某些自用通道之外阻挡其他所有连接,以达成防堵不良连接的机制。

用户界面: 今日大部分的OS都包含图形化用户界面。有几类较旧的OS将图形化用户界面与核心紧密结合,例如最早的Windows与Mac OS实现产品。此种手法可提供较快速的图形回应能力,且实现时不需切割模块因而较为省工,但是会有强烈副作用,例如图形系统崩溃将导致整个系统崩溃,例如死亡蓝屏幕。许多近代的OS已模块化,将图形接口的副系统与核心分开(已知Linux与Mac OS X原先就是如此设计,而某些扩充版本的Windows终于也采用此手法)。

许多OS允许用户安装或创造任何他们喜欢的图形接口。大部分的Unix与Unix派生系统(BSD、Linux与Minix)通常会安装X Window系统配合GNOME或KDE桌面环境。而某些OS就没有这么弹性的图形化用户界面,例如Windows。这类的OS只能通过外加的程序来改变其图形化用户界面,甚或根本只能改变诸如菜单风格或颜色配置等部分。

图形化用户界面与时并进,例如Windows在每次新版本上市时就会将其图形化用户界面改头换面,而Mac OS的GUI也在Mac OS X上市时出现重大转变。

驱动程序: 所谓的驱动程序(Device driver)是指某类设计来与硬件交互的电脑软件。通常是一设计完善的设备交互接口,利用与此硬件连接的电脑汇排流或通信子系统,提供对此设备下令与接收信息的功能;以及最终目的,将消息提供给OS或应用程序。驱动程序是针对特定硬件与特定OS设计的软件,通常以操作系统核心模块、应用软件包或普通电脑程序的形式在OS核心底下运行,以达到通透顺畅地与硬件交互的效果,且提供硬件在处理异步的时间依赖性接口(asynchronous time-dependent hardware interface)时所需的中断处理程序(Interrupt handler)。

设计驱动程序的主要目的在于操作抽象化,任何硬件模块,既使是同一类的设备,在硬件设计面上也有巨大差异。厂商推出的较新模块通常更可靠更有效率,控制方法也会有所不同。电脑与其OS每每不能预期那些现有与新设备的变异之处,因此无法知道其操作方法。为解决此问题OS通常会主动制订每种设备该有的操作方式,而驱动程序功能则是将那些OS制订的行为描述,转译为可让设备了解的自定义操作手法。

理论上适合的驱动程序一旦安装,相对应的新设备就可以无误地运行。此新驱动程序可以让此设备完美地切合在OS中,让用户察觉不到这是OS原本没有的功能。

Sniffer是什么?怎么用?

Sniffer,中文可以翻译为嗅探器,是一种基于被动侦听原理的网络分析方式。使用这种技术方式,可以监视网络的状态、数据流动情况以及网络上传输的信息。当信息以明文的形式在网络上传输时,便可以使用网络监听的方式来进行攻击。将网络接口设置在监听模式,便可以将网上传输的源源不断的信息截获。Sniffer技术常常被黑客们用来截获用户的口令,据说某个骨干网络的路由器网段曾经被黑客攻入,并嗅探到大量的用户口令。但实际上Sniffer技术被广泛地应用于网络故障诊断、协议分析、应用性能分析和网络安全保障等各个领域。

本文将详细介绍Sniffer的原理和应用。

一、Sniffer 原理

1.网络技术与设备简介

在讲述Sniffer的概念之前,首先需要讲述局域网设备的一些基本概念。

数据在网络上是以很小的称为帧(Frame)的单位传输的,帧由几部分组成,不同的部分执行不同的功能。帧通过特定的称为网络驱动程序的软件进行成型,然后通过网卡发送到网线上,通过网线到达它们的目的机器,在目的机器的一端执行相反的过程。接收端机器的以太网卡捕获到这些帧,并告诉操作系统帧已到达,然后对其进行存储。就是在这个传输和接收的过程中,嗅探器会带来安全方面的问题。

每一个在局域网(LAN)上的工作站都有其硬件地址,这些地址惟一地表示了网络上的机器(这一点与Internet地址系统比较相似)。当用户发送一个数据包时,这些数据包就会发送到LAN上所有可用的机器。

如果使用Hub/即基于共享网络的情况下,网络上所有的机器都可以“听”到通过的流量,但对不属于自己的数据包则不予响应(换句话说,工作站A不会捕获属于工作站B的数据,而是简单地忽略这些数据)。如果某个工作站的网络接口处于混杂模式(关于混杂模式的概念会在后面解释),那么它就可以捕获网络上所有的数据包和帧。

但是现代网络常常采用交换机作为网络连接设备枢纽,在通常情况下,交换机不会让网络中每一台主机侦听到其他主机的通讯,因此Sniffer技术在这时必须结合网络端口镜像技术进行配合。而衍生的安全技术则通过ARP欺骗来变相达到交换网络中的侦听。

2.网络监听原理

Sniffer程序是一种利用以太网的特性把网络适配卡(NIC,一般为以太网卡)置为杂乱(promiscuous)模式状态的工具,一旦网卡设置为这种模式,它就能接收传输在网络上的每一个信息包。

普通的情况下,网卡只接收和自己的地址有关的信息包,即传输到本地主机的信息包。要使Sniffer能接收并处理这种方式的信息,系统需要支持BPF,Linux下需要支持SOCKET一PACKET。但一般情况下,网络硬件和TCP/IP堆栈不支持接收或者发送与本地计算机无关的数据包,所以,为了绕过标准的TCP/IP堆栈,网卡就必须设置为我们刚开始讲的混杂模式。一般情况下,要激活这种方式,内核必须支持这种伪设备Bpfilter,而且需要root权限来运行这种程序,所以sniffer需要root身份安装,如果只是以本地用户的身份进入了系统,那么不可能唤探到root的密码,因为不能运行Sniffer。

也有基于无线网络、广域网络(DDN, FR)甚至光网络(POS、Fiber Channel)的监听技术,这时候略微不同于以太网络上的捕获概念,其中通常会引入TAP (测试介入点)这类的硬件设备来进行数据采集。

3. Sniffer的分类

Sniffer分为软件和硬件两种,软件的Sniffer有 Sniffer Pro、Network Monitor、PacketBone等,其优点是易于安装部署,易于学习使用,同时也易于交流;缺点是无法抓取网络上所有的传输,某些情况下也就无法真正了解网络的故障和运行情况。硬件的Sniffer通常称为协议分析仪,一般都是商业性的,价格也比较昂贵,但会具备支持各类扩展的链路捕获能力以及高性能的数据实时捕获分析的功能。

基于以太网络嗅探的Sniffer只能抓取一个物理网段内的包,就是说,你和监听的目标中间不能有路由或其他屏蔽广播包的设备,这一点很重要。所以,对一般拨号上网的用户来说,是不可能利用Sniffer来窃听到其他人的通信内容的。

4.网络监听的目的

当一个黑客成功地攻陷了一台主机,并拿到了root权限,而且还想利用这台主机去攻击同一(物理)网段上的其他主机时,他就会在这台主机上安装Sniffer软件,对以太网设备上传送的数据包进行侦听,从而发现感兴趣的包。如果发现符合条件的包,就把它存到一个LOg文件中去。通常设置的这些条件是包含字“username”或“password”的包,这样的包里面通常有黑客感兴趣的密码之类的东西。一旦黑客截获得了某台主机的密码,他就会立刻进入这台主机。

如果Sniffer运行在路由器上或有路由功能的主机上,就能对大量的数据进行监控,因为所有进出网络的数据包都要经过路由器。

Sniffer属于第M层次的攻击。就是说,只有在攻击者已经进入了目标系统的情况下,才能使用Sniffer这种攻击手段,以便得到更多的信息。

Sniffer除了能得到口令或用户名外,还能得到更多的其他信息,比如一个重要的信息、在网上传送的金融信息等等。Sniffer几乎能得到任何在以太网上传送的数据包。

二、Sniffer产品介绍

网络的安全性和高可用性是建立在有效的网络管理基础之上的,网络管理包括配置管理、故障管理、性能管理、安全管理和计费管理五大部分。对于企业计算机网络来说,网络故障管理主要侧重于实时的监控,而网络性能管理更看中历史分析。

Sniffer网络分析仪是一个网络故障、性能和安全管理的有力工具,它能够自动地帮助网络专业人员维护网络,查找故障,极大地简化了发现和解决网络问题的过程,广泛适用于Ethernet、Fast Ethernet、Token Ring、Switched LANs、FDDI、X.25、DDN、Frame Relay、ISDN、ATM和Gigabits等网络。

1.1 Sniffer产品的基本功能包括:

• 网络安全的保障与维护

1. 对异常的网络攻击的实时发现与告警;

2. 对高速网络的捕获与侦听;

3. 全面分析与解码网络传输的内容;

• 面向网络链路运行情况的监测

1. 各种网络链路的运行情况;

2. 各种网络链路的流量及阻塞情况;

3. 网上各种协议的使用情况;

4. 网络协议自动发现;

5. 网络故障监测;

• 面向网络上应用情况的监测

1. 任意网段应用流量、流向;

2. 任意服务器应用流量、流向;

3. 任意工作站应用流量、流向;

4. 典型应用程序响应时间;

5. 不同网络协议所占带宽比例;

6. 不同应用流量、流向的分布情况及拓扑结构;

• 强大的协议解码能力,用于对网络流量的深入解析

1. 对各种现有网络协议进行解码;

2. 对各种应用层协议进行解码;

3. Sniffer协议开发包(PDK)可以让用户简单方便地增加用户自定义的协议;

• 网络管理、故障报警及恢复

运用强大的专家分析系统帮助维护人员在最短时间内排除网络故障;

1.2 实时监控统计和告警功能

根据用户习惯,Sniffer可提供实时数据或图表方式显示统计结果,统计内容包括:

 网络统计:如当前和平均网络利用率、总的和当前的帧数及字节数、总站数和激活的站数、协议类型、当前和总的平均帧长等。

 协议统计:如协议的网络利用率、协议的数、协议的字节数以及每种协议中各种不同类型的帧的统计等。

 差错统计:如错误的CRC校验数、发生的碰撞数、错误帧数等。

 站统计:如接收和发送的帧数、开始时间、停止时间、消耗时间、站状态等。最多可统计1024个站。

 帧长统计:如某一帧长的帧所占百分比,某一帧长的帧数等。

当某些指标超过规定的阈值时,Sniffer可以自动显示或采用有声形式的告警。

Sniffer可根据网络管理者的要求,自动将统计结果生成多种统计报告格式,并可存盘或打印输出。

1.3 Sniffer实时专家分析系统

高度复杂的网络协议分析工具能够监视并捕获所有网络上的信息数据包,并同时建立一个特有网络环境下的目标知识库。智能的专家技术扫描这些信息以检测网络异常现象,并自动对每种异常现象进行归类。所有异常现象被归为两类:一类是symptom(故障征兆提示,非关键事件例如单一文件的再传送),另一类是diagnosis(已发现故障的诊断,重复出现的事件或要求立刻采取行动的致命错误)。经过问题分离、分析且归类后,Sniffer将实时地,自动发出一份警告、对问题进行解释并提出相应的建议解决方案。

Sniffer与其他网络协议分析仪更大的差别在于它的人工智能专家系统(Expert System)。简单地说,Sniffer能自动实时监视网络,捕捉数据,识别网络配置,自动发现网络故障并进行告警,它能指出:

 网络故障发生的位置,以及出现在OSI第几层。

 网络故障的性质,产生故障的可能的原因以及为解决故障建议采取的行动。

 Sniffer 还提供了专家配制功能,用户可以自已设定专家系统判断故障发生的触发条件。

 有了专家系统,您无需知道那些数据包构成网络问题,也不必熟悉网络协议,更不用去了解这些数据包的内容,便能轻松解决问题。

1.4 OSI全协议七层解码

Sniffer的软件非常丰富,可以对在各种网络上运行的400多种协议进行解码,如TCP/IP、Novell Netware、DECnet、SunNFS、X-Windows、HTTP、TNS SLQ*Net v2(Oracle)、Banyan v5.0和v6.0、TDS/SQL(Sybase)、X.25、Frame Realy、PPP、Rip/Rip v2、EIGRP、APPN、TP等。还广泛支持专用的网络互联桥/路由器的帧格式。

Sniffer可以在全部七层OSI协议上进行解码,目前没有任何一个系统可以做到对协议有如此透彻的分析;它采用分层方式,从更低层开始,一直到第七层,甚至对ORACAL数据库、SYBASE数据库都可以进行协议分析;每一层用不同的颜色加以区别。

Sniffer对每一层都提供了Summary(解码主要规程要素)、Detail(解码全部规程要素)、Hex(十六进制码)等几种解码窗口。在同一时间,最多可以打开六个观察窗口。

Sniffer还可以进行强制解码功能(Protocl Forcing),如果网络上运行的是非标准协议,可以使用一个现有标准协议样板去尝试解释捕获的数据。

Sniffer提供了在线实时解码分析和在线捕捉,将捕捉的数据存盘后进行解码分析二种功能。

二、Sniffer的商业应用

Sniffer被 Network General公司注册为商标,这家公司以出品Sniffer Pro系列产品而知名。目前最新版本为Sniffer Portable 4.9,这类产品通过网络嗅探这一技术方式,对数据协议进行捕获和解析,能够大大帮助故障诊断和网络应用性能的分析鉴别。

Network General 已经被NetScout公司收购。

三、Sniffer的扩展应用

1、专用领域的Sniffer

Sniffer被广泛应用到各种专业领域,例如FIX (金融信息交换协议)、MultiCast(组播协议)、3G (第三代移动通讯技术)的分析系统。其可以解析这些专用协议数据,获得完整的解码分析。

2、长期存储的Sniffer应用

由于现代网络数据量惊人,带宽越来越大。采用传统方式的Sniffer产品很难适应这类环境,因此诞生了伴随有大量硬盘存储空间的长期记录设备。例如nGenius Infinistream等。

3、易于使用的Sniffer辅助系统

由于协议解码这类的应用曲高和寡,很少有人能够很好的理解各类协议。但捕获下来的数据却非常有价值。因此在现代意义上非常流行如何把协议数据采用更好的方式进行展示,包括产生了可以把Sniffer数据转换成Excel的BoneLight类型的应用和把Sniffer分析数据进行图形化的开源系统PacketMap等。这类应用使用户能够更简明地理解Sniffer数据。

4、无线网络的Sniffer

传统Sniffer是针对有线网络中的局域网而言,所有的捕获原理也是基于CA/CD的技术实现。随着WLAN的广泛使用,Sniffer进一步扩展到802.11A/B/G/N的无线网络分析能力。无线网络相比传统网络无论从捕获的原理和接入的方式都发生了较大改变。这也是Sniffer技术发展趋势中非常重要的部分.

关于linux 权限绕过的介绍到此就结束了,不知道你从中找到你需要的信息了吗 ?如果你还想了解更多这方面的信息,记得收藏关注本站。


数据运维技术 » 如何在Linux下规避权限限制? (linux 权限绕过)