标签存档: Linux

863 查看

Linux用户和组,su和sudo的理解

对Linux的用户和组概念的理解,对配置Linux安全来说是很重要的。 这里我不进行说明用户和组的添加删除之类的使用说明! 主要进行说明该如何理解Linux中的用户和组的概念。 为了更好的理解这些概念,我们引入下面这个例子,其中可能有些地方不妥当,但都是为了方便我们理解。 先介绍下出场角色: root:Linux系统用户     饰演  房东 anykoro:Linux普通可登陆用户 饰演  房客 gardener:Linux不可登陆用户(nologin) 饰演  园丁 nginx:HttpServer  饰演  WebServerUser varnish:CacheServer  饰演  CacheServerUser naigos:Linux监控程序  饰演  PerformanceMonitor crontab或rc.local  : Linux执行任务  饰演 管家 注:以上的WebServerUser,CacheServerUser,PerformanceMonitorUser代表对应程序所属的用户,同时我们认为不使用root作为他们的用户。 我们的故事是这样开始, root买了一栋很大的房子,一直一个人悠闲自得的住在里面。突然有天root碰到了朋友anykoro,两个人一见如故,聊得很是开心。所以root让anykoro搬到自己这里来书,anykoro欣然同意了。于是root给anykoro一个房间(对应/home/anykoro),但是root没有告诉anykoro的活动范围(对应权限),所以anykoro就只能在自己的屋子里摆弄东西或者到外面大厅走走看看。root一看,不能这样,anykoro可是他的挚友啊。于是他和anykoro说,这里、这里、这里,这些等等,你都是可以用的,同时告诉他,你和他是同一战线(都属于root组),所以只要写着战友可用的,anykoro你就可以用。(对应权限系统中的gourp部分的执行权限)。anykoro大悦,果然生活多了很多自由。 光阴荏苒,2个月转眼间就过去了,root惊觉,屋外的花园中杂草丛生。这样放人不管也有点不像话,于是root亲自上阵,出去除草(对应 su root 除草)。可能长期不锻炼,root感觉太累了,而且还修剪的不好。root觉得他要找个园丁专门除草,于是他到中介(yum repo之类的地方)找了个园丁gardener(对应使用的程序)。但是园丁,毕竟是外人,是不能让他进屋子的,另外也没有必要让他进屋子,所以root就和gardener说,你就在外面收拾花草就行,我就不让你进屋子了。(对应指定useradd gardener -s …

继续阅读 »

898 查看

操作系统中的几个重要概念

先看一个完整的场景,以下的场景和解释主要解释大致的原理。 Linux 在操作系统运行中运行一个程序,首先,系统会先起一个进程,此时进程会首先处在用户态,运行自己的代码,然后随着程序的不断执行,到了需要通过系统调用使用操作系统内核的阶段,此时进程就要进入内核态。此时有个最主要的事情要做,就是从用户态向内核态传送数据(进程上下文)。然后执行完内核程序,又回到用户态。如果执行完毕,进程进入睡眠状态。 里面涉及几个重要的概念 1、进程:执行一段代码,管理资源,但是线程的话,只是执行代码,不会管理资源。 2、用户态:进程执行用户自己编写的代码时,称为处于用户(运行)态。 3、内核态:当一个进程执行系统调用时,会进入内核代码运行,此时称进程处于内核(运行)态。 4、进程上下文:包含了一系列的进程用到的参数、数据和环境变量(包括了硬件和软件的)。 扩展: 内核空间(栈)和用户空间(栈): 这两种空间在Linux的虚拟空间中,对于32位Linux其寻址能力为(0×00000000~0xFFFFFFFF)其实就是4G的空间。这个大小也决定了32位Linux支持的内存大小,对于64位能支持的内存就大多了(可以自己算)。这里我们假定内存为4G,Linux中会把高位的1G(0xC0000000~0xFFFFFFFF)作为内核空间(栈),余下的3G作为用户空间栈。这里在操作系统的角度看,每个进程都共用了这4G的内存,大家共享资源。对于进程来说,他们看起来是每个都有一个4G的虚拟空间。这里说虚拟空间,是指,实际上是没有这么多的,因为是共享的。所以在使用很多Service程序时,在意其用户态和内核态的资源使用情况也是很重要的。因为过高的话,会影响其他的程序运行,并且这两个态会有短板效应,要兼顾。 地址: 逻辑地址 —-(段表)—> 线性地址 — (页表)—> 物理地址             启用分段时               启用分页时 注意:Linux在2.6时,实现了真正意义上的线程,但针对PHP来说,并没有办法使用线程。这边,为了利于PHP理解,就没有体现线程。 Windows 在操作系统运行中运行一个程序,首先,系统会先起一个进程,此时进程会创建一个主线程,主线程开始执行程序,根据程序的代码,会决定是否创建其他的辅助线程。首先进程处在用户态,然后随着程序的不断执行,到了需要通过系统调用使用内核程序的阶段,同时还会用户态会向内核态传递数据(进程上下文),此时进程就处在内核态。然后执行完内核程序,又回到用户态。如果执行完毕,进程进入睡眠状态。 里面涉及几个重要的概念 1、进程:进行资源管理,创建线程。 2、线程:执行代码片断。 3、用户态:进程执行用户自己编写的代码时,称为处于用户(运行)态。 4、内核态:当一个进程执行系统调用时,会进入内核代码运行,此时称进程处于内核(运行)态。 …

继续阅读 »

681 查看

Linux中最需要知道的基础知识(不断更新)

1、硬盘硬件结构 硬盘是由一片一片的盘片组成,每个盘片有两面,每面都有磁头。 扇区:盘片上扇形的区域,每个扇区都有特点的字节数。 磁道:一个盘片上一个同心圆为一个磁道。 柱面:各盘片同一磁道组成的面为柱面。   2、linux中对设备的理解 在linux中将所有的设备都映射成了文件,并存放在/dev/目录下,每个设备对会对应其中的一个文件,注意是文件不是目录。    3、linux和windows的分区差别,及命名方式 linux: hd(IDE硬盘),sd(SCSI硬盘) 硬盘插槽:a,b 分区((这个个windows是一致的最多四个)) 主分区、扩展分区等:1-4 逻辑分区:5-更大 eg: hda1(第一块IDE硬盘的第一分区) sdb2(第二块SCSI硬盘的第二分区)   windows: C D E F等分区 分区 主分区,扩展分区等最多4个,一般划分更多的分区是通过在扩展分区中创建更多的逻辑分区达到的。  eg: windows中的E盘,如果用linux的对应关系的话就是hda6   4、linux中如何理解分区的概念,以及挂载点的概念 前一个问题所说的linux的分区是在硬件上进行了分区。这些hda1之类的会在/dev/目录下反映出来。 前面已经说了设备在linux中是文件,连目录都不是,那么该如何访问磁盘中的内容呢?为了,能够访问磁盘中的内容,使其类似目录,但同时又不影响其设备对应文件的特性,所以引入了挂载点的概念。挂载点的概念,简单理解就是把一个硬件设备挂载到一个指定的目录上,那么我们就可以通过访问该目录来实现访问磁盘内容了。所以我们一般看到的诸如/ /root /var /boot等这些分区,其实就是不同的硬盘设备挂载到了这些目录上。如果不挂在的话,他们也仅仅是目录而访问的硬盘也即其父级目录的挂载硬盘。   5、linux常用分区的说明  /    Linux文件系统的入口 ,最高一级的目录 /bin   基础系统所需命令的存放处。也是最小系统所需要的命令:比如ls,cp,mkdir等。注意该目录中的内容是普通用户也可以使用的。 …

继续阅读 »

无觅相关文章插件,快速提升流量