1.GNU/GPL/LGPL是为了保证Linux源码开放性的三项措施,请分别解释出这三项措施的含义和作用?请说明linux版本2.0.36每一部分的代表的含义及它是属于稳定版本还是开发版本?
答案:
1)、GNU是GNU Is Not UNIX的递归缩写,旨在消除对计算机软件拷贝、分发、修改的限制
GPL:General Public License,通用公共许可证。它要求软件以源代码的形式发布,并规定,任何用户都能够以源代码的形式将软件复制或发布给别的用户;它提醒每个用户,对于该软件不提供任何形
式的担保;如果用户的软件使用了受GPL保护的任何软件的一部分,那么,该软件就继承了GPL软件;GPL并不排斥对自由软件进行商业性质的包装和发行
LGPL:Libraray General Public License,程序库通用公共许可证。允许在使用者自己的应用程序中使用程序库,并获得程序库的源代码。
2)、Linux的版本分为主版本号、次版本号和末版本号。主版本号代表较大改动,次版本号表示功能性的改动,末版本号表示BUG的改动。次版本号为奇数是开发版本,偶数是稳定版本。2.0.36是稳定版
本。
2、 在Linux9.0的安装过程中,当系统引导起来,在boot:提示符下输入Linux askmethod命令选择安装方式,一共有哪几种安装方式?选择其中一种安装方式,并选择安装新的Linux系统后,有几种安装
类型可以选择,它们都用于哪种环境?若手工进行磁盘分区,至少要分哪几分区,每个分区的功能、大小和文件类型都应该是什么?在安装完成的文件系统中,下面几个目录(/bin, /etc, /dev, /home,
/root)都存放了什么文件?
答案:
1)、有五种安装方式,分别是:本地CDROM,硬盘驱动器,NFS,FTP,HTTP
2)、有四种安装类型可供选择:
个人桌面:创建一种带有图形化环境的系统,适于Linux新手。
工作站:安装一个图形化桌面环境和X窗口系统,以及软件开发工具。
服务器:只安装基本Linux运行环境,不安装图形界面,其他常用应用服务软件。
定制:最大的灵活性,可以选择系统引导程序和想要的软件包等等。
3)、手工建立分区,至少以下三种:
/boot 包含操作系统的内核以及引导文件 128MB etx3
/swap 支持虚拟内存 物理内存的2倍,小于2GB swap
/ 其他都可以放在这个分区 1.7---5.0GB etx3
4)、/bin 存放可执行文件,大多是系统中常用的命令。Ls,su等
/dev 都是特殊文件,Linux把所有的外设都看成是一个文件。如/dev/fd0就代表软盘驱动器。
/etc 存放系统的配置文件,一般与系统关系十分密切的培植文件都在这里。如inittab、lilo.conf等
/home 是系统缺省普通用户的主目录的根目录,如:/home/[userid]
/root 超级用户root的缺省主目录,一般用户是没有对这个目录的写权限的。
3、 请说出vi编辑器的三种模式以及他们之间的相互转换。请写出下面操作的步骤:用vi命令同时打开两个文件file1和file2,水平分割放置;在file1文件中查找包含test字符的行;copy 有test字符
的一行到file2的末尾;保存退出。
答案:
1)、Vi工作有三种模式:命令模式、文本输入模式和末行模式。用Vi打开一个文件后,处于命令模式。利用文本插入命令,如i,a,o等可以进入输入模式,用[Esc]键可以从输入模式退回命令模式。在命
令模式中按“:”键可以进入到末行模式,当执行完命令或按[Esc]键可以回到命令模式。
2)、命令如下:
vi –o file1 file2 #水平分割打开两个文件
/test #在file1文件中查找test字符串,可以在命令模式或末行模式执行
光标移动到test行,用V命令选中该行
用yy命令复制该行到缓冲区
用ctrl-w ctrl-w 命令进行窗口切换,切到file2文件中
光标定位到文件末尾,用p命令进行粘贴
:wq #保存退出
4、在Linux中创建testgroup用户组,指定其GID为600。创建一个用户testuser,使该帐户的默认shell是cshell,并给他加入到testgroup中,另外指定该用户在2010年12月31日过期,最后设置testuser
的密码。请写出以上操作的具体命令,如果要检查用户、密码和组的配置情况,需要查看那些文件?
答案:
1)、groupadd –g 600 testgroup
2)、useradd –e 12/31/2010 –g testgroup –s /bin/csh testuser
passwd testuser
3)、查看用户用/etc/passwd 文件
查看用户密码用/etc/shadow文件
查看组信息用/etc/group文件
6、 在Linux系统中有重定向和管道的功能,他们都能把前面的输出作为后面的输入,他们的区别是什么?请说出如下两个命令的意思:
wc output.wc 2>error.wc
ls –al ,/ | wc > ls.wc
答案:
1)、重定向是把前面运行命令的结果输入到后面的文件中;而管道功能是把前面命令运行的结果作为后面命令的输入。主要区别在于>后是一个文件名,而 | 后是一个命令。
2)wc output.wc 2>error.wc 表示把/etc/passwd文件作为wc的输入,统计出passwd文件的行数、单词数和字符数,并输出到文件output.wc中,错误记录输出到 error.wc中。
3)、ls –al ./ | wc > ls.wc表示把./目录下的文件列出来,由wc统计出行数、单词数和字符数,并记录到文件ls.wc中。
7、 在Red Hat Linux 的应用程序的安装中可以分为哪两种安装方式?它们的特点各是什么?请写出用RPM包管理程序安装、查询、卸载、升级和校验时的命令?编译安装时的安装步骤是什么?
答案:
1)、在Red Hat Linux 的应用程序的安装中可以分为RPM包管理程序安装和应用程序源代码安装两种方式。RPM包管理系统提供了方便的生成软件包、安装、查询、卸载、校验软件包的操作手段;而源代
码的编译安装能够提供灵活的系统定制功能,可以使应用程序更加贴近用户要求的形式建立。
2)、安装:rpm –ivh file
其中:i 表示安装, v 表示显示附加信息, h表示显示进度
查询:rpm –q file
卸载:rpm –e fiel
升级:rpm –U file
校验:rpm –V file
3)、在源代码安装中,一般在发布的软件中都会有configure和makefile.in两个文件,通过执行./configure 命令可以生成makefile的文件,在用make 和 make install两条命令即可安装完成应用程序
9、 请写出在linux系统中查看CPU的信息,PCI的信息和内核模块信息的命令?内核定制的几种方式和命令分别是什么?在内核与模块的编译与安装的命令和顺序是什么?
答案:
1)、查看CPU的信息: more /proc/cpuinfo
查看PCI设备的信息: lspci
查看内核模块的信息:more /proc/modules
2)、内核定制有四种方式:
文本交互问答方式: make config
文本窗口交互问答方式:make menuconfig
图形窗口交互方式: make xconfig
使用现有配置文件: make oldconfig
3)、编译安装内核文件命令:make dep, make bzImage, make install
编译安装内核模块的命令:make modules, make modules_install
安装的顺序:make dep-----make bzImage----make modules----make modules_install---make install
10、 请简述Red Hat Linux 9的启动过程? Red Hat Linux 中系统的运行级别有几个,它们分别代表的意思是什么?查看系统启动级别的命令和查看服务在各级别的运行状态的命令分别是什么?
答案:
1)、Linux的启动过程要以下几个阶段:
1、POST后读取硬盘MBR中的启动引导程序。
2、启动引导程序负责引导硬盘中的操作系统。(如用lilo,或grub程序引导操作系统。)
3、Linux内核程序负责操作系统启动前期的工作,并进一步加载系统的INIT进程。
4、INIT进程是Linux系统运行的第一个进程,该进程将根据其配置文件执行相应的启动程序,并进入指定的系统运行级别。(配置文件在/etc/inittab中,如rc.sysinit, rc 0 6, 等)
5、在不同运行级别中,根据系统的设置将启动相应的服务程序。(如/etc/init.d中的服务,xinit服务等。)
6、在启动过程的最后,将运行控制台程序,提示并允许用户输入帐户和密码进行登录。(rc.local 来进行维护本机的启动命令)
2)、Linux系统的运行级别从 0-6 共7个。
0 停机
1 单用户模式
2 多用户模式,不能使用NFS
3 完全多用户模式,缺省状态
4 未分配使用
5 图形登录的多用户模式
6 重新启动
3)、runlevel 显示系统运行模式
chkconfig –list 用于查看系统中服务在各级别的启动状态。
2)、对文件目录进行归档
tar cf files.tar files
对文件和目录进行压缩备份
tar czf files.tar.gz files
列出tar归档文件中的目录列表
tar tf files.tar
查看压缩归档文件中的目录列表
tar tzf files.tar.tz
恢复tar备份文件
tar xf files.tar
恢复压缩tar备份文件
tar xzf files.tar.gz
需要修改Selinux设置的相关服务
1, 通过FTP服务访问用户主目录需要修改Selinux如下:
setsebool -P ftp_home_dir=1
2, SMB服务的共享目录:
chcon -R -t samba_share_t /共享目录
3, WEB服务器的主页文件所在的目录
chcon -R --reference=/var/www/html /自已的web主页所在的目录
如果做的下确的话只需要修改以上三项就可以了. 如果你的配置步骤与我们平常上课不一样的话, 就有可能需要修改一些其它项目, 这样你只能 依赖setroubleshootd工具了, 所以最好先安装此工具.
使用以下命令:
yum install setroubleshootd
6.yum配置
YUM 服务器的配置
第一步:将系统光盘的/Server目录和/VT目录完全拷贝到/var/ftp/pub目录下;
第二步:从光盘上直接安装createrepo RPM包,执行以下命令:
rpm -ivh /光盘挂载点/Server/createrepo*
第三步:创建RPM包列表, 执行以下命令:
1、 createrepo -g /var/ftp/pub/Server/repodata/comps*.xml /var/ftp/pub/Server
可能会报错:根据出错信息,删除已存在的目录,再执行以上命令。
2、createrepo -g /var/ftp/pub/VT/repodata/comps*.xml /var/ftp/pub/VT
第四步:创建软连接:
在/var/www/html目录下创建软连接:执行以下命令:
ln -s /var/ftp/pub pub
第五步:重启http和vsftp服务,执行以下命令:
1、service httpd restart
2、service vsftpd restart
保证计算机重启后服务能自动启动,执行以下命令:
1、chkconfig httpd on
2、chkconfig vsftpd on
客户端配置:
在/etc/yum.repo.d/目录下创建以下文件(文件扩展名必须是.repo)
vim myserver.repo
[base] #方括号内的名称为自定义
name=自定义名称
baseurl=http://servername/pub/Server 或:
# baseurl=ftp://servername/pub/Server 或:
# baseurl=file:///var/ftp/pub/Server 指本地yum服务器
# 以上内容重写一次去定义 VT 库
[base] #方括号内的名称为自定义, 与上一个定义不能相同
name=自定义名称, 与前面的定义不能相同
baseurl=http://servername/pub/VT 或:
# baseurl=ftp://servername/pub/VT 或:
# baseurl=file:///var/ftp/pub/VT 指本地yum服务器
# 以上内容重写一次去定义 VT 库
验证:
在客房端执行以下命令:
yum list available
7.https(证书)
cd /etc/pki/tls/certs
make server.key
make server.crt
cp server.key /etc/pki/tls/private
vi /etc/httpd/conf.d/ssl.conf
修改 SSLCertificatekeyFile
8.log日志服务器
服务器:
vi /etc/sysconfig/syslog
SYSLOGD_OPTIONS="-r -m 0"
vi /etc/syslog.conf
mail.info /var/log/maillog1
service syslog restart
客户端:
vi /etc/syslog.conf
mail.info @remote(ip)
service syslog restart
chkconfig syslog on
chkconfig --list syslog
测试:
客户端:logger -p mail.info abcd
服务器查看: /var/log/maillog1
9.apache服务器虚拟主机
vi /etc/httpd/conf/httpd.conf
NameVirtualHost *:80
<VirtualHost *:80>
ServerAdmin test@example.com
DocumentRoot /var/www/html/1
ServerName test.example.com
</VirtualHost>
关闭 DocumentRoot "/var/www/html"
主页认证
<Directory "/var/www/html/1">
AuthType Basic
AuthName "Hello"
AuthUserFile /etc/httpd/my123
Require user abc
</Directory>
htpasswd -cm /etc/httpd/my123 abc
echo 123123 > /var/www/html/1/test.html
service httpd restart
修改默认端口号:Listen 80
修改代理服务器:
vi /etc/squid/squid.conf
http_port 8080
acl deny-lan 192.168.1.0/255.255.255.0
http_access deny deny-lan
http_access allow all
service squid restart
chkconfig squid on
在apache server 中允许使用 .htaccess 做目录安全保护, 欲读受保护目录需要进行用户验证.
可用此技术在 Web 服务器上设置会员专区. 详细配置如下描述:
首先在要保护的目录下创建文件名 .htaccess 的文件, 内容如下:
AuthName "会员专区"
AuthType Basic
AuthUserFile /etc/httpd/.htpasswd
Require Valid-user
第二, 创建 Apache 的用户帐户文件 .htpasswd 文件, 使用以下命令:
htpasswd -cm /etc/httpd/.htpasswd user1
创建第二个以后的用户就不要使用 -c 参数了, 如下:
htpasswd -m /etc/httpd/.htpasswd user2
最后重启 httpd 服务, 当你访问被保护目录时,会提示你输入用户名和口令.
挂载共享目录
mount -t nfs 192.168.80.77:/var/ftp/pub /abc
16 SMB服务
首先安装SMB服务器, 执行:
yum install samba samba-common samba-client
修改主配置文件/etc/samba/smb.conf, 添加共享文件;如下:
[sharename] #这是共享名, 访问时用此名访问此共享, 与NFS的访问不相同.
comment=xxxxxx #此行只是注释
path=/var/spool/samba #共享文件路径
public=yes #此共享允许guest用户访问
#valid users = user1 user2 #允许指定用户访问
#write list = @devel 允许指定组的用户访问
#writable = no 关闭写功能
#printable = yes 指定此共享为打印机
修改访问控制, 在主配置文件中;
host allow= ip地址列表
修改Selinux上下文:
chcon -R -t samba_share_t /共享路径
添加Samba用户;
smbpasswd -a username #此用户在系统中已存在
重启服务:
service smb restart
chkconfig smb on
客户端访问;
1, 检查samba 服务器的共享:
smbclient -L hostname
2, 访问samba服务器的共享:
smbclient -U username //server/sharename
也可以匿名访问: smbclient //server/sharename
3, 也可以使用mount命令:
mount -t cifs //server/sharename /mountpoint user=username
禁用网段:hosts allow或者hosts deny
hosts allow = 192.168.80.0/255.255.255.0
hosts deny = all
18. iptables防火墙
1. 一个几乎关闭的系统:
iptables -A INPUT -j DROP/REJECT
2. 接受/拒绝192.168.1.0/24网段的数据包:
iptables -A INPUT -s 192.168.1.0/24 -j ACCEPT/DROP/REJECT
3. 抵挡住进入本机的21号端口的tcp数据包:
iptables -A INPUT -s 192.168.1.0/24 -p tcp --dport=21 -j DROP
iptables -A INPUT -s 192.168.1.0/24 -p tcp --dport=21 -j REJECT
4. 抵挡进入本机137,148端口的udp数据包
iptables -A INPUT -s 192.168.1.0/24 -p upd --dport=137:148 -j DROP/REJECT
5. ICMP数据包的控制:
语法: iptables -A INPUT -s 网段 -p icmp --icmp-type 类型 -j ACTION
实例: 禁止192.168.1.15 用ping访问本机:
iptables -A INPUT -s 192.168.1.15 -p icmp --icmp-type echo-request -j REJECT/DROP
或者:
iptables -A INPUT -s 192.168.1.15 -p icmp --icmp-type 8 -j REJECT/DROP
=> "echo-request"的 icmp-type是8。 如此容易记忆多了。
注意: 规则的次序很重要!!!
例如:
# iptables -L INPUT
Chain INPUT (policy ACCEPT)
target prot opt source destination
ACCEPT all -- 192.168.1.0/24 anywhere
REJECT icmp -- 192.168.1.15 anywhere icmp echo-request reject-with icmp-port- unreachable
第一条规则接受该网段的所有包,第二条规则就被屏蔽了。。。。郁闷。 15号机器照样能ping通本机。 如何处理呢?
解决方案:删掉第一条规则。^_^ #iptables -D INPUT 1
6. 禁止192.168.1.0/24网段使用ssh登录到本机:
iptables -A INPUT -s 192.168.1.0/24 -p tcp --dport 22 -j REJECT/DROP
最后别忘记,为了保证下次启动后规则保存,执行:service iptables save 或者/etc/init.d/iptables save
19.设置网卡
system-config-network
service network restart
设置dns
/etc/resolv.conf
20.防ping,ip地址转发
vi /etc/sysctl.conf
net.ipv4.ip_forward = 1
sysctl -p
echo 1 > /proc/sys/net/ipv4/icmp_echo_ignore_all
使重启生效后生效:
vi /etc/rc.local
echo 1 > /proc/sys/net/ipv4/icmp_echo_ignore_all
21.grub加密
grub-md5-crypt > /boot/grub/a.c
cd /boot/grub/
vi a.c(删除不需要的行)
vi /boot/grub/grub.conf
在title前添加
password --md5 (. !/boot/grub/a.c)
sync
22.自动挂载
vi /etc/auto.master
/abc /root/abc.c
vi /root/abc.c
rhce 192.168.80.77:/var/www/html
service autofs restart
chkconfig autofs on
23.grub恢复
rm -f /boot/grub/grub.conf
sync
重新启动后
进入grub
grub>root (hd0,0)
grub>kernel /vmlinuz-2.6.18-8.el5 ro root=LABEL=/
grub>initrd /initrd-2.6.18-8.el5.img
grub>boot
创建grub
vi /etc/boot/boot.conf
default=0
timeout=5
title RHEL
root (hd0,0)
kernel /vmlinuz-2.6.18-8.el5 ro root=LABEL=/ rhgb quiet
initrd /initrd-2.6.18-8.el5.img
(. !ls /boot)
boot目录删除
进入救援模式F12
用CDROM启动
boot:linux rescue
#chroot /mnt/sysimage/
#mount /dev/hdc /tmp
下载kernel文件
rpm -ivh kernel-2.6.18-8.el5.i686.rpm --root=/ --force
grub-install /dev/sda
配置grub文件
加入fstab坏无法挂载
e2label /dev/sda1 看挂载点