Skip navigation.

王志军个人空间

工作、生活、健康

Posts tagged with "Linux"

【心得】必学的Linux系统安全命令

URL:http://www.caomeng.com/read.php?tid-871-page-e-fpage-7.html

1. 作用

更改一个或多个文件或目录的属主和属组。使用权限是超级用户。

2.格式

chown [选项] 用户或组 文件

3.主要参数

--dereference:受影响的是符号链接所指示的对象,而非符号链接本身。

-h, --no-dereference:会影响符号链接本身,而非符号链接所指示的目的地(当系统支持更改符号链接的所有者,此选项才有效)。

--from=目前所有者:目前组只当每个文件的所有者和组符合选项所指定的,才会更改所有者和组。其中一个可以省略,这已省略的属性就不需要符合原有的属性。

-f, --silent, --quiet:去除大部分的错误信息。

-R, --recursive:递归处理所有的文件及子目录。

-v, --verbose:处理任何文件都会显示信息。
4.说明

chown将指定文件的拥有者改为指定的用户或组,用户可以是用户名或用户ID;组可以是组名或组ID;文件是以空格分开的要改变权限的文件列表,支持通配符。系统管理员经常使用chown命令,在将文件拷贝到另一个用户的目录下以后,让用户拥有使用该文件的权限。

5.应用实例

1.把文件shiyan.c的所有者改为wan

$ chown wan shiyan.c

2.把目录/hi及其下的所有文件和子目录的属主改成wan,属组改成users。

$ chown - R wan.users /hi

chattr

1.作用

修改ext2和ext3文件系统属性(attribute),使用权限超级用户。

2.格式

chattr [-RV] [-+=AacDdijsSu] [-v version] 文件或目录

3.主要参数

-R:递归处理所有的文件及子目录。

-V:详细显示修改内容,并打印输出。

-:失效属性。

+:激活属性。

= :指定属性。

A:Atime,告诉系统不要修改对这个文件的最后访问时间。

S:Sync,一旦应用程序对这个文件执行了写操作,使系统立刻把修改的结果写到磁盘。

a:Append Only,系统只允许在这个文件之后追加数据,不允许任何进程覆盖或截断这个文件。如果目录具有这个属性,系统将只允许在这个目录下建立和修改文件,而不允许删除任何文件。

i:Immutable,系统不允许对这个文件进行任何的修改。如果目录具有这个属性,那么任何的进程只能修改目录之下的文件,不允许建立和删除文件。

D:检查压缩文件中的错误。

d:No dump,在进行文件系统备份时,dump程序将忽略这个文件。

C:Compress,系统以透明的方式压缩这个文件。从这个文件读取时,返回的是解压之后的数据;而向这个文件中写入数据时,数据首先被压缩之后才写入磁盘。

:Secure Delete,让系统在删除这个文件时,使用0填充文件所在的区域。

u:Undelete,当一个应用程序请求删除这个文件,系统会保留其数据块以便以后能够恢复删除这个文件。

4.说明

chattr命令的作用很大,其中一些功能是由Linux内核版本来支持的,如果Linux内核版本低于2.2,那么许多功能不能实现。同样-D检查压缩文件中的错误的功能,需要2.5.19以上内核才能支持。另外,通过chattr命令修改属性能够提高系统的安全性,但是它并不适合所有的目录。chattr命令不能保护/、/dev、/tmp、/var目录。

5.应用实例

1.恢复/root目录,即子目录的所有文件

# chattr -R +u/root

2.用chattr命令防止系统中某个关键文件被修改

在Linux下,有些配置文件(passwd ,fatab)是不允许任何人修改的,为了防止被误删除或修改,可以设定该文件的“不可修改位(immutable)”,命令如下:

# chattr +i /etc/fstab

sudo

1.作用

udo是一种以限制配置文件中的命令为基础,在有限时间内给用户使用,并且记录到日志中的命令,权限是所有用户。

2.格式

sudo [-bhHpV] [-s <shell>] [-u <用户>] [指令]
sudo [-klv]


3.主要参数

-b:在后台执行命令。
-h:显示帮助。
-H:将HOME环境变量设为新身份的HOME环境变量。
-k:结束密码的有效期,即下次将需要输入密码。
-l:列出当前用户可以使用的命令。
-p:改变询问密码的提示符号。
-s <shell>:执行指定的Shell。
-u <用户>:以指定的用户为新身份,不使用时默认为root。
-v:延长密码有效期5分钟。


4.说明

udo命令的配置在/etc/sudoers文件中。当用户使用sudo时,需要输入口令以验证使用者身份。随后的一段时间内可以使用定义好的命令,当使用配置文件中没有的命令时,将会有报警的记录。sudo是系统管理员用来允许某些用户以root身份运行部分/全部系统命令的程序。一个明显的用途是增强了站点的安全性,如果需要每天以超级用户的身份做一些日常工作,经常执行一些固定的几个只有超级用户身份才能执行的命令,那么用sudo是非常适合的。

ps

1.作用

显示瞬间进程 (process) 的动态,使用权限是所有使用者。

2.格式

[options] [--help]

3.主要参数

该命令的参数非常多, 此出仅列出几个常用的参数。

-A:列出所有的进程。
-l:显示长列表。
-m:显示内存信息。
-w:显示加宽可以显示较多的信息。
-e:显示所有进程。
a:显示终端上的所有进程,包括其它用户的进程。
-au:显示较详细的信息。
-aux:显示所有包含其它使用者的进程。

4.说明

要对进程进行监测和控制,首先要了解当前进程的情况,也就是需要查看当前进程。ps命令就是最基本、也是非常强大的进程查看命令。使用该命令可以确定有哪些进程正在运行、运行的状态、进程是否结束、进程有没有僵尸、哪些进程占用了过多的资源等。下面给出了ps-aux命令详解。大部分信息都可以通过执行该命令得到。最常用的三个参数是u、a、x。下面就结合这三个参数详细说明ps命令的作用:ps aux

USER表示进程拥有者;PID表示进程标示符;%CPU表示占用的CPU使用率;%MEM占用的物理内存使用率;VSZ表示占用的虚拟内存大小;RSS为进程占用的物理内存值;TTY为终端的次要装置号码。 STAT表示进程的状态,其中D为不可中断的静止(I/O动作);R正在执行中;S静止状态;T暂停执行;Z不存在,但暂时无法消除;W没有足够的内存分页可分配;高优先序的进程;N低优先序的进程;L有内存分页分配并锁在内存体内 (实时系统或 I/O)。START为进程开始时间。TIME为执行的时间。COMMAND是所执行的指令。

4.应用实例

在进行系统维护时,经常会出现内存使用量惊人,而又不知道是哪一个进程占用了大量进程的情况。除了可以使用top命令查看内存使用情况之外,还可以使用下面的命令:

aux | sort +5n

who

1.作用

who显示系统中有哪些用户登陆系统,显示的资料包含了使用者ID、使用的登陆终端、上线时间、呆滞时间、CPU占用,以及做了些什么。 使用权限为所有用户。

2.格式

who - [husfV] [user]

3.主要参数

-h:不要显示标题列。
-u:不要显示使用者的动作/工作。
-s:使用简短的格式来显示。
-f:不要显示使用者的上线位置。
-V:显示程序版本。

4.说明

该命令主要用于查看当前在线上的用户情况。如果用户想和其它用户建立即时通信,比如使用talk命令,那么首先要确定的就是该用户确实在线上,不然talk进程就无法建立起来。又如,系统管理员希望监视每个登录的用户此时此刻的所作所为,也要使用who命令。who命令应用起来非常简单,可以比较准确地掌握用户的情况,所以使用非常广泛。


动手练习

1.使用Linux命令检测系统入侵者

安装过Mandrake Linux和Red Hat Linux的用户都会知道,Linux系统会内置三种不同级别(标准、高、更高)的防火墙,当进行了Linux服务器的安装和一些基本的设置后,服务器应该说是比较安全的,但是也会有黑客通过各种方法利用系统管理员的疏忽侵入系统。如何快速查找黑客非常重要。一般来说,可以使用命令查询黑客是否入侵,见表1。

表1 查询黑客入侵现象的命令对应表
黑客入侵现象 对应命令
处于混杂模式的网卡接口 ipconfig
不能解释的CPU活动 top ps
频繁的网络使用 netstat na
磁盘空间急剧减少 df du
日志文件丢失 cat syslog
其他网络管理员的通知 mail
没有权限的新用户 who
陌生的进程 top ps

举例说明,如果黑客嗅探网络,那么它必须使网卡接口处于混杂模式,使用下面命令进行查询:

#ifconfig -a
eth0 Link encap:Ethernet HWaddr 00:00:E8:A0:25:86
inet addr:192.168.1.7 Bcast:192.168.1.255 Mask:255.255.255.0
UP BROADCAST RUNNING PROMISCUOUS MTU:1500 Metric:1
......


从这个命令的输出中,可以看到上面讲到的这些概念。第一行的00:00:E8:A0:25:86是mac地址,第二行的192.168.1.7是IP地址,第四行讲的是接收数据状态,这时正在被黑客嗅探。一般而言,网卡有几种接收数据帧的状态,如Broadcast、Multicast、Promiscuous等。Broadcast是指接收所有类型为广播报文的数据帧;Multicast是指接收特定的组播报文;Promiscuous则是通常说的混杂模式,是指对报文中的目的硬件地址不加任何检查、全部接收的工作模式。

2.限制su命令的滥用

我们知道,超级用户在Linux中有最大的权利,几乎所有黑客都想得到这个目标。Linux可以增加对切换到超级用户的限制。使用PAM(Pluggable Authentication Modules)可以禁止除在wheel组以外的任何人su成root,修改/etc/pam.d/su文件,除去屏蔽标识#。使用/usr/sbin/usermod G10 bjecadm将bjecadm这个账号加入gid为10的组,就是wheel组。命令如下:

/etc/pam.d/su # 使用密码验证#
auth sufficient /lib/security/pam_wheel.so debug
# 限制只有wheel组用户才可以切换到root#
auth required /lib/security/pam_wheel.so use_uid
chmod -G10 bjecadm

另外,每当用户试图使用su命令进入系统用户时,命令将在/usr/adm/sulog文件中写一条信息,若该文件记录了大量试图用su进入root的无效操作信息,则表明了可能有人企图破译root口令。

Linux命令有着强大的功能。对于Linux系统管理员来说,往往只需要通过各种安全命令技巧,组合构成安全防线。从计算机安全的角度看,世界上没有绝对安全的计算机系统,Linux系统也不例外。

Concurrent programming - Principles and introduction to processes

,

URL: http://www.linuxfocus.org/ChineseGB/November2002/article272.shtml

摘要:

本系列文章着眼于向读者介绍多任务处理(multitasking)概念及其在Linux系统中的实施。首先阐述多任务处理的理论基础,做后讲解一个使用简单高效的通讯协议来演示进程间通讯的完整程序。所需背景知识:

* 对shell的起码了解
* 对C语言的基本了解(语法,循环,库函数)

所有对手册页(man page)的引用放在命令后的括号中。所有glibc函数在gnu info页中说明(info Libc,或在konqueror中键入info:/libc/Top)。

简介
操作系统历史上最重要的转折点之一就是多道程序设计(multiprogramming)概念的出现,这是一种交错执行(interlacing)几个程序以达到对系统资源更稳定利用目的的技术。设想一下,在一台工作站上,用户可以同时运行字处理器,音频播放器,打印队列,浏览器或更多程序。这是现代操作系统的一个重要概念。我们所举的例子仅仅是在计算机上运行的所有程序中很小的一部分,尽管它们很引人注目(visual-striking)。
进程概述

交错执行程序会给操作系统带来显著的复杂化。为了防止程序运行时互相冲突,必然要将程序及其运行时所需的所有信息封装起来。

在探讨Linux系统内部细节前,我们先定义一些术语:给定一个运行的程序(PROGRAM), 在某一时刻,代码(CODE)是组成程序的指令,内存空间(MEMORY SPACE)是被程序数据占用的部分内存,处理器状态(PROCESSOR STATUS)是微处理器的参数,例如标记(flag)和程序计数器(Program Counter,下一条要被执行的指令的地址)。

我们定义运行态程序(RUNNING PROGRAM)为代码,内存空间,处理器状态等对象的集合。在计算机运行的某一时刻,我们保存一个运行态程序的数据,调用另一运行态程序的数据并执行,之后再让此程序从先前中断处继续执行,如此实现先前所述的交错执行。进程(PROCESS)或任务(TASK)用来描述此类运行态程序。

我们解释一下简介中提到的工作站的运行机制:在任一时刻都只有一个任务在执行(单处理器不能同时做两件事),计算机执行它的代码,在持续一时间段(QUANTUM)后将其挂起。之后保存它的数据并加载另一等候进程的数据,执行一时间段后切换。这就是所谓的多任务处理。

以上所述的多任务处理带来许多问题需要解决,其中大部分是不能被忽视的,例如等待进程队列的管理(SCHEDULING)。然而这是操作系统设计时要考虑的问题,我们会在以后的文章中讨论,也许也会讨论一些Linux内核代码。
Linux/Unix进程

能够显示计算机中运行进程信息的命令是ps(1),它是“进程状态(process status)”的缩写。打开shell窗口并输入ps,可以得到以下输出:

PID TTY TIME CMD
2241 ttyp4 00:00:00 bash
2346 ttyp4 00:00:00 ps

我们先声明此输出结果并不完整,但还是可以说明问题:ps列给出了所有从当前终端运行的进程。最后一列给出了运行此进程的命令(例如用 mozilla运行Mozilla Web浏览器,用gcc运行GNU编译器)。显然ps应该出现在输出中,这是因为ps列出正在运行的进程时其本身也正在运行。输出的另一进程是 Bourne Again Shell,是运行在此终端上的shell。

我们暂不考虑TIME列和TTY列,先讨论PID(Process IDentifier,进程标志符)列。pid是分配给每一进程的正整数(非零,不重复),在进程结束后可以重复使用,在进程运行期间保持不变。所以在你的计算机上运行ps得到的结果和上面的例子可能不会一样。我们打开另外一个shell窗口并输入ps,同时并不关闭前一shell窗口。我们得到同样的输出项,但是进程标志符不一样,证明了即使是相同的程序,也可以是不同的进程。

我们可以列出Linux系统中运行的所有进程:Linux手册页中提到ps的-e选项意谓着“选择所有进程”。 在shell窗口输入“ps -e”,可以得到和上面例子相同格式的长长的进程列表。为了方便分析结果,我们将ps的输出重定向到ps.log文件中:

ps -e > ps.log

现在我们可以使用我们喜欢的编辑器阅读和编辑这个文件(或者仅仅使用less命令)。如文章开始所述,正在运行的进程数量比我们预期的多。在此指出输出结果不但包括我们启动的进程(通过命令行或图形环境启动),还包括其他一些进程,其中有些名字很奇怪。输出的进程数量和进程名称由你的系统配置决定,但是其中有一些共同点。首先,不管你如何配置系统,pid为1的进程必然是init进程,它是所有其它进程的父进程。init进程永远是操作系统中最先执行的进程,因而拥有的pid为1。另一点需要指出的是,输出结果中有许多名字以d结尾的进程,它们被称为守护进程(daemon),是系统中最重要的一些进程。有关init进程和守护进程的细节将在以后的文章中讨论。
libc中的多任务处理

我们现在阐述了进程的概念和它在系统中的重要性,下面将介绍一些多任务处理程序的代码:从简单的进程同时执行到并行进程间通信和同步(synchronization)。我们将讨论进程间通信和同步的两个成熟的解决方案:消息(message)和信号量(semaphore)。介绍完消息概念后将在此基础上开发我们自己的应用程序,信号量将在以后的文章中和线程(thread)一起详加讨论。

C语言标准库函数(libc,在Linux中由glibc实施)使用Unix System V的多任务处理机制。Unix System V(现在称为SysV)是一个商业化的Unix实施版本,是两个最重要的Unix家族之一的基础。另一个Unix家族的基础是BSD Unix。

在libc中数据类型pid_t被定义为能够表达pid的整数。从现在开始我们用pid_t类型表示pid的值,这样会更清楚一些,虽然用整型可以同样表达pid的值。

以下函数返回调用此函数的进程的pid。

pid_t getpid (void)

(pid_t在unistd.h和sys/types.h中定义)我们编写一个程序,用来输出它自己的pid。在你喜欢用的编辑器中键入以下代码:

#include <unistd.h>
#include <sys/types.h>
#include <stdio.h>

int main()
{
pid_t pid;

pid = getpid();
printf("The pid assigned to the process is %d\n", pid);

return 0;
}

将程序存为print_pid.c并编译:

gcc -Wall -o print_pid print_pid.c

此命令生成一个名为print_pid的可执行程序。如果当前目录没有包括在path环境变量中,需要用“./print_pid”命令来执行此程序。执行结果并不会让我们感到意外:输出一个正整数。如果执行多次,输出结果会逐渐增大。增大值并不固定,因为其它程序可能在两次 print_pid执行间运行。例如,试验在两次print_pid执行间运行ps。

现在讨论如何创建进程,首先描述一下创建的过程。当一个程序(进程A)创建另外一个进程B时,两个进程是相同的。它们有相同的代码,内存空间的数据相同(不同的内存空间),处理器状态相同,但之后可能有不同的执行流程。例如根据用户输入或某些随机数据的不同而不同。进程A是父进程而进程B是子进程,现在我们可以更好的了解为什么init进程是所有其它进程的父进程。创建新进程的函数为:

pid_t fork(void)

它的名字来源于它使进程的执行路径分叉的特性,返回值是pid。值得注意的是,当前进程复制自己生成父进程和子进程,和其它进程一起交错执行,完成不同的工作。当复制刚刚完成时哪一个进程会被执行,父进程还是子进程?答案很简单:二者之一。(译者注:也可能二者都不执行)操作系统调度程序决定执行哪个进程,它并不关心等待执行的进程是父进程还是子进程,调度算法由其它参数决定。

知道哪个进程在执行是重要的,因为它们的代码相同。两个进程都包含父进程和子进程的代码,但是每个进程都只执行其中的一部分。为了澄清此概念,我们考虑如下算法:

- FORK
- IF YOU ARE THE SON EXECUTE (...)
- IF YOU ARE THE FATHER EXECUTE (...)

以上算法由伪码表达,基于以下事实:fork函数在子进程中返回0,在父进程中返回子进程的pid。所以根据fork函数返回的pid是否为0可以有效地判断下面需要执行哪部分代码。将此算法放入C语言程序中:

int main()
{
pid_t pid;

pid = fork();
if (pid == 0)
{
CODE OF THE SON PROCESS
}
CODE OF THE FATHER PROCESS
}

现在我们编写第一个真正的多任务处理程序。以下代码可以存为fork_demo.c并按前述方法编译,代码中的行号可以方便阅读,但在编译时要删除。此程序创建一个子进程,然后父进程和子进程分别输出一些字符。如果没有出错的话,父进程和子进程应该交错输出。

(01) #include <unistd.h>
(02) #include <sys/types.h>
(03) #include <stdio.h>

(04) int main()
(05) {
(05) pid_t pid;
(06) int i;

(07) pid = fork();

(08) if (pid == 0){
(09) for (i = 0; i < 8; i++){
(10) printf("-SON-\n");
(11) }
(12) return(0);
(13) }

(14) for (i = 0; i < 8; i++){
(15) printf("+FATHER+\n");
(16) }

(17) return(0);
(18) }

(01)-(03)定义必要的头文件(标准I/O,多任务处理)。
main函数(GNU常规做法)在程序正常结束,没有错误的情况下返回0,如果出错则返回错误(05)定义pid类型,(06)定义循环控制变量。这两种类型其实是相同的,但在此为了让程序更清楚而区分开来。
(07)调用fork函数,在子进程中返回0,在父进程中返回子进程pid,返回值在(08)中测试。子进程执行(09)-(13),父进程执行(14)-(16)。
两部分代码根据是父进程还是子进程分别输出8次字符串“-SON-”和“+FATHER+”,然后返回0结束。返回0结束对子进程很重要,因为子进程循环结束后如果不返回,会继续执行父进程的代码(可以试验一下,对计算机无害,只是无法正确完成我们所期望的功能)。因为多任务处理程序(尤其是复杂程序)的多次运行结果不一定相同,所以这类错误不容易被发现,因而根据结果调试程序通常不太可能。

你可能对执行结果并不满意:两个进程并不一定严格地交错输出结果。这是因为两个循环的执行速度可能不同。你的输出结果可能是一组“+FATHER+”字符串接着一个“-SON-"字符串或者正好相反。试着执行多次程序你会发现输出结果会变化。

在printf函数前插入一个随机的延迟会使输出结果看起来更有多任务处理效果:我们用sleep和rand函数来实现。

sleep(rand()%4)

这会使进程挂起0到3之间的一个随机秒数(%返回整数除法的余数)。现在代码变为:

(09) for (i = 0; i < 8; i++){
(->) sleep (rand()%4);
(10) printf("-FIGLIO-\n");
(11) }

父进程中也做同样的修改,存为fork_demo2.c,然后编译执行。程序的执行速度变慢,但我们可以观察到输出顺序的改变。

[leo@mobile ipc2]$ ./fork_demo2
-SON-
+FATHER+
+FATHER+
-SON-
-SON-
+FATHER+
+FATHER+
-SON-
-FIGLIO-
+FATHER+
+FATHER+
-SON-
-SON-
-SON-
+FATHER+
+FATHER+
[leo@mobile ipc2]$

现在我们面临一个新的问题:在一个并行处理环境中父进程可以创建一定数量的子进程,子进程执行的操作和父进程执行的操作不同。父进程经常需要和子进程通信或至少要和子进程同步(synchronize)以在正确的时间执行特定操作。进程间同步的第一种解决方法是调用wait函数。(译者注: synchronization通常指进程或线程间防止同时读写相同变量或系统资源的机制,在此作者指父进程需知道子进程结束的时间)

pid_t waitpid (pid_t PID, int *STATUS_PTR, int OPTIONS)

PID是我们等待结束的进程的pid,STATUS_PTR是指向子进程状态的整形指针(如不需要此信息可置为NULL),OPTIONS是一些选项,我们现在不需要考虑。下面是一个父进程创建子进程并等待其结束的例子:

#include <unistd.h>
#include <sys/types.h>
#include <stdio.h>

int main()
{
pid_t pid;
int i;

pid = fork();

if (pid == 0){
for (i = 0; i < 14; i++){
sleep (rand()%4);
printf("-SON-\n");
}
return 0;
}

sleep (rand()%4);
printf("+FATHER+ Waiting for son's termination...\n");
waitpid (pid, NULL, 0);
printf("+FATHER+ ...ended\n");

return 0;
}

父进程已加入sleep函数的调用,可使输出交错进行。将此程序存为fork_demo3.c,编译执行。这样我们就完成了第一个同步的多任务处理程序。

下篇文章中我们将讨论更多的进程间通信和同步问题。你们可以用上面介绍的函数编写程序并发给我,这样我可以用其中的一些作为优秀解答和错误实例。请发送带注释的C文件和包含程序说明,你的名字,email地址的说明文件给我。
推荐阅读文章

* Silberschatz, Galvin, Gagne, Operating System Concepts - Sixth Edition, Wiley&Sons, 2001
* Tanenbaum, WoodHull, Operating Systems: Design and Implementation - Second Edition, Prentice Hall, 2000
* Stallings, Operating Systems - Fourth Edition, Prentice Hall, 2002
* Bovet, Cesati, Understanding the Linux Kernel, O'Reilly, 2000

Linux security

Linux tips

此贴搜集一些常用command和trick。

To send the output of a CLI program to a file, or send the output to /dev/null we use the > charater.
To send the output of cat to less we use the | .
Using the && will execute all commands but stop if there is an error.
Using the ; will execute all commands but will not stop when an error occurs.

相关链接:
http://my.opera.com/wangzhijun/blog/show.dml/108350 Linux一句话问答
http://my.opera.com/wangzhijun/blog/show.dml/108169 设置我的Linux环境
http://my.opera.com/wangzhijun/blog/show.dml/108168 Linux中服务相关命令
http://my.opera.com/wangzhijun/blog/show.dml/108118 Linux中硬件相关命令
http://downloads.techrepublic.com.com/download.aspx?&docid=173037 12 useful Linux file manipulation commands you should know
http://downloads.techrepublic.com.com/download.aspx?&docid=173116 Linux 101: Use the ifconfig utility in Linux to configure your network
http://downloads.techrepublic.com.com/download.aspx?&docid=172891 10 things you should know about the Linux bash shell

Linux各种版本相关术语

一、Fedora 是什么,与Redhat的关系;
Fedora 是什么?如果您是初学Linux,可能在 LinuxSir.Org 上看到 Fedora&Redhat 讨论区,之所以把Fedora和Redhat这两个Linux的发行版放在一起,主要是他们的联系太密切了。Redhat 自9.0以后,不再发布桌面版的,而是把这个项目与开源社区合作,于是就有了Fedora 这个 Linux 发行版。Fedora 可以说是Redhat 桌面版本的延续,只不过是与开源社区合作。

可能有的初学者会问,什么是Linux发行版呢??Fedora是不是能装在电脑上的独立系统??是的,Fedora 是一个独立的操作系统,是Linux的一个版本,Linux有好多版本,比如 Debian、SuSE、Archlinux、Mandrakelinux以及Slackware 等;因为Linux是开放源代码的操作系统,所以如果您技术精通一点的话,您自己完全有能力做出自己的Linux发行版。

二、Fedora 和 Redhat 的官方地址;
Fedora 的官方地址是 http://fedora.redhat.com
Redhat 的官方地址: http://www.redhat.com


---URL: http://fedora.linuxsir.org/main/?q=node/7

MEPIS http://www.mepis.org

相关资料:
http://www.tipmonkies.com/2005/06/16/linux-distros/ Beginner’s guide to Linux distros

Ok, minor correction: None of the Linux distributions are based on BSD or AT&T UNIX. Slackware resembles the filesystem layout of the BSD systems, and the others tend to resemble the filesystem layout of System V, from AT&T.

But they’re not really descendants. Just filesystem hierarchy layout.


You mixed up the Debian trees: stable is for production issues, testing for the “mostly up-to-date desktop” and unstable.
I think you got the Debian’s testing vs unstable mixed up… unstable is bleeding edge, testing is newer stuff that will become the next “stable”…



http://www.zegeniestudios.net/ldc/index.php Linux Distribution Chooser
http://techrepublic.com.com/5102-10877-5960961.html 10 things you should know about every Linux installation

(转)三分钟让linux可以mount ntfs分区

URL: http://www.linuxfans.org/nuke/modules.php?name=News&file=print&sid=158

传统编译内核模块的方法繁琐而费时,本文将告诉我们一种快速编译所需要内核模块的新方法。
当你安装完Linux系统,并且已经启动,恭喜你!如果你的硬盘上还安装了WinNT/2000系统,你试图去访问另一个NTFS分区时却遇到了麻烦。因为你所用的Linux系统没有已编译的支持 NTFS文件系统的模块。怎么办?也许你会运行make menuconfig,重新定制你需要的所有模块,接着运行make modeules;make modeules_install来安装。这样不仅繁琐、费时,还可能会出现问题。或者因为编译内核对你有些棘手,太多的选择让你手足无措,你根本没有太好的方法。本文给你提供一个简单的方法,你可以轻松地去编译你所需要的支持NTFS系统的模块(ntfs.o)。以此为例,但愿对你编译其他模块有所帮助。

写此文时我用的系统是Red Hat Linux release 7.0 (Guinness) Kernel 2.2.16-22 on an i686。从一个新安装的系统开始,我们一起去编译一个自己想要的支持NTFS文件系统模块。

一、找到编译内核所需要的.config文件。
在/usr/src/linux/configs目录下有若干编译内核所用的配置。选择我们想要的配置,将它复制到/usr/src/linux目录下,改名为.config。
cp /usr/src/linux/configs/kernel-2.2.16-i686.config /usr/src/linux/.config

二、修改.config文件,去掉不用的模块,加上自己想要的模块。
打开.config,有许多XXXX=m的项,这些都是要被编译为模块的项,因为我们不希望编译这些模块,所以要把XXXX=m的项统统去掉。然后再加上我们想要的模块,将# CONFIG_NTFS_FS is not set 改为CONFIG_NTFS_FS=m 当然,可以用你熟悉各种工具来做这件事。
注:我用grep -v =m .config > cfg1来去掉XXXX=m项


三、编译NTFS模块。
在/usr/src/linux目录下运行命令make modules来编译我们想要的NTFS模块。

四、安装NTFS模块。
编译后得到的ntfs.o在/usr/src/linux/fs/ntfs目录下,手动将它复制到正确的目录下。
cp /usr/src/linux/fs/ntfs/ntfs.o /lib/modules/2.2.16-22/fs/
注:我的/lib/modules/2.4.21-20.EL下没有fs目录,我就
mkdir /lib/modules/2.4.21-20.EL/kernel/fs/ntfs
cp /usr/src/linux-2.4.21-20.EL/fs/ntfs/ntfs.o /lib/modules/2.4.21-20.EL/kernel/fs/ntfs

注意:千万不能运行命令make modules_install,否则将带来严重的后果,它会删除你系统中的所有模块,只安装刚刚编译的模块(ntfs.o)。

五、载入NTFS模块.
运行命令depmod;modprobe ntfs 试着访问你的NTFS文件系统吧,祝你成功!

有些模块依赖于你的系统内核,所以不适用本文所提供的方法。还有些模块和其他模块有依赖关系。如果你不熟悉这些依赖关系的话,建议你在第二步去掉不用的模块选项后,通过make menuconfig来加上自己想要的模块。

我用此方法用了三分钟编译了支持NTFS文件系统的模块,你呢?

作者简介
刘军民,海辰天泽公司的工程师(www.hisen.com),源码开放运动的追随者,业余时间喜欢用写程序打发时光。您可以通过电子邮件
fancao0515@0451.com

安装多个操作系统的心得和Grub的使用(未完)

这星期一(2006/3/27)上午10点是我苦难历程的开始。在我将操作系统由Red hat切换到Win2K过程时,Shut down Red hat时,在clean swap处hang住了。这个问题以前经常发生,于是按老办法强制切断电源。可是在重新进行Red hat时,XWindow起不来,显示器指示灯不停的在绿灯和黄灯间切换,也不能用login进入shell。(我忘记了从grub可以进入single mode)

于是准备重装系统。
删除Win2K的D盘导到Red hat的Grub菜单无法显示

由于我的RAM为1G,我将Red hat的swap的分区由1.9G增加到2.1G。

Debian安装:
安装界面显得比较土
Grub太霸道了,虽然我选择不安装Grub到mbr,但不知道为什么选择原来
Grub比Red hat下的Grub丑多了


下面是我的磁盘分区情况。其中/dev/hda1是Window 2000分区(即C盘), /dev/hda6和/dev/hda7是Red hat WS3的Root和swap分区, /dev/hda3和/dev/hda8是Debian 31r1的Root和swap分区, /dev/hda5做为/home分区系统自动mount.
#fdisk -l

Disk /dev/hda: 40.0 GB, 40027029504 bytes
255 heads, 63 sectors/track, 4866 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes

   Device Boot    Start       End    Blocks   Id  System
/dev/hda1             1      1044   8385898+   c  Win95 FAT32 (LBA)
/dev/hda2          1045      4127  24764197+   f  Win95 Ext'd (LBA)
/dev/hda6          1045      2878  14731542   83  Linux
/dev/hda5          2879      3822   7582648+  83  Linux
/dev/hda7          3823      4090   2152678+  82  Linux swap
/dev/hda8          4091      4127    297171   82  Linux swap
/dev/hda3   *      4128      4866   5936017+  83  Linux

以上是我磁盘上的实际分区顺序


心得:
1. 一定要将你的个人数据和customized程序单独放在一个分区(customized程序也可以单独放在另一个分区,然后mount到/usr/local下),千万不要在重装系统时删除该分区或将它指定mount point为/home(因为Red hat会format指定的分区)。
修改/etc/fstab,增加下面一行
dev/hda5                /home                  auto    defaults 0 0


2. XWindow的配置文件为/etc/X11/XF86Config。修改前的参数保存在/etc/X11/XF86Config.backup。
3. thunderbird, opera, kylix原来安装在~/bin下,现在不用再安装了。
thunderbird的email帐号设置和opera的上次访问网页都保存着。

Desktop, openoffice, XMMS和Gaim的设置
firefox的bookmark丢失了。
由于fcitx原来装在/usr下,需要重新编译安装。这次我也安装到~/bin下了。但原来的设置文件放在~/.fcitx目录下,所以不用改动。整个过程用时两分钟。
mysql原来安装在/usr/local/bin下,现在要重装。apache2和php安装在~/bin下,不用再装了
printer需要设置
快速启动工具栏还要设置()
3. printer需要重新设置
参数:网络打印机 IP:152.69.88.12 Port:9100 Type: HP LaserJet 8150 PS
4. 需要重新编译内核,增加支持NTFS分区格式
5. 安装后,使用up2date在线更新

问题:
1. Red hat的swap要2G, 而Debian才280M左右。为什么?
2. 修改firefox菜单,使用~/bin/firefox命令,但它实际使用的是/usr/bin/firefox.

参考链接:
更改分区后,linux无法启动,恢复小记
419的debian安装记录
设置我的Linux环境
三分钟让linux可以mount ntfs分区

Linus谈Linux

URL: http://www.qqread.com/itlife/y012929000.html

  SW:Linux对Windows NT的威胁有多大?

  LT:我确实不知道。但已经能看出NT的拙劣设计,就象NT 5.0的不可靠性。从我所听到的来看,他们的问题积重难返,可靠性不佳。他们在基础的维护方面存在问题。

  SW:Linux也有很广泛的资源基础,它比Windows NT好在何处?

  LT:Linux只有NT的一半大小,可能就有一亿行代码。由于软件包是独立开发的,所以他们就没有彼此牵制的问题。我不在乎GCC [GNU C Compiler]有无数行代码,因为对我没有影响。NT的维护工作对微软不应是问题,但显然是。



  SW:你对Java有何看法?

  LT:我认为没人想要桌面上的Java。Java常被提及,但去年有关Java 的说法都是将其作为服务器语言,而不是桌面语言。而前年人们还谈论桌面上的Java。它不再是了,它已经过时了。我个人认为,一旦在桌面上过时就永远过时了。为什么你认为Sun、 HP各家公司都对微软感到不安?不是因为它做的是大型服务器,而是因为它控制着桌面。一旦控制桌面,就等于控制了服务器。

  它不再是能带来业界革命的东西,如果在桌面,本可以产生些影响。但我看不到可能性。我真希望我错了,但我认为就是这样。



我也感觉是这样。现在用Java开发桌面应用不多了(除非考虑跨平台开发),大部分在使用J2EE和EJB开发网络计算。

FreeBSD

,

常用软件

编程:java,php语言采用SciTE,缺点对中文支持不够
css采用TopStyle lite。虽然有破解版,但我要的功能它能达到了。
看书p:df采用FoxitReader
pdg采用pdg浏览器


http://my.opera.com/jamesliu/blog/show.dml/173821