Chinaunix首页 | 论坛 | 博客
  • 博客访问: 369731
  • 博文数量: 83
  • 博客积分: 2213
  • 博客等级: 大尉
  • 技术积分: 835
  • 用 户 组: 普通用户
  • 注册时间: 2006-03-16 20:26
文章分类

全部博文(83)

文章存档

2015年(1)

2012年(1)

2011年(14)

2007年(20)

2006年(47)

我的朋友

分类: LINUX

2006-06-22 00:05:05

1.如何限制不允许某一用户登陆系统,但可以su到该用户?

解决方法:
vi /etc/pam.d/login
在account行下添加一行:
account required pam_access.so

vi /etc/security/access.conf
添加一行:
-:root:ALL  

2.问题: 如何配置使用rcp?  

解决方法:
rcp的在需要配置才可以使用。在红旗的产品中做如下的操作:
vi /etc/xinetd.d/rlogin 将其中的"disable=yes"改为"disable=no"
vi /etc/xinetd.d/rsh 将其中的"disable=yes"改为"disable=no"
vi /root/.rhosts 写入客户端的IP地址
/etc/init.d/xinetd start
然后再执行rcp命令。  

3. 问题: 我安装的是2000+LINUX系统,LINXU系统是后装的,我把linux的引导程序安装在MBR中了。但是现在我想让2000系统作为一开始的启动项目并且引导linux,我要怎么做呢?  

解决方法:

您需要做的操作如下:
1、启动linux,在终端中执行
dd if=/dev/hda of=/mnt/winC/bootsect.lnx bs=512 count=1
注意:“if=/dev/hda”,而不是“/dev/hda1”;还有,最好将bootsect.lnx放在C盘的根目录下;其中bs是“block size”,代表输出1块的大小;“count”表示输出多少块,上面的命令执行后表示将MBR中的前512字节输出到windowsC盘中。
grub-install /dev/hda*
注意!*代表linux的安装分区位置号!
2、启动windows,编辑C盘中的boot.ini文件,在文件最后添加一句
c:\bootsect.lnx="RedFlag DeskTop 4.1"
保存退出。
3、要清除GRUB返回以前的Windows启动界面;最快速、可靠的办法是使用Windows的故障恢复控制台。故障恢复控制台可以从Windows安装光盘引导,也可以安装到系统上。
如果要从Windows安装光盘运行故障恢复控制台,假设机器的主操作系统是Windows2000,先用Windows安装光盘启动机器,出现提示时,选择手工恢复(按R键)。
然后在命令行上,输入
fixmbr
系统提示说已经有一个不合法的启动记录存在,不必理会,只需确认继续操作即可。重新启动,Windows启动菜单又回来了。
如果要直接把故障恢复控制台安装到系统上可以加快处理速度。首先,打开Win XP的命令行窗口(选择菜单“开始”→“运行”,执行cmd);然后,在CD-ROM中插入WinXP光盘,在命令行上运行D:\i386\ winnt32.exe/cmdcons命令,其中D:是CD-ROM驱动器的盘符。安装结束后,下一次启动时就可以从Windows启动屏幕选择故障恢复控制台了。
如果机器上安装了一个以上的Windows系统,故障恢复控制台会提示要修复的是哪一个Windows。这时,应当选择最后安装的系统,然后输入管理员的密码登录该Windows;再修复引导。  

4. 问题: 我ssh远程登录服务器,在后台执行了一个脚本,比如
./start.sh &
但是我的ssh连接中断后,这个进程也就退出了,怎么样解决让连接中断但是进程还能继续执行?  .

解决方法:
可以用
nohup ./start.sh &  

5.问题: 如何配置ssh使用密钥登录,禁止口令登录?  

解决方法:
1、配置私钥
a、使用命令ssh-keygen -t rsa生成密钥,会生成一个私钥和一个公钥,在提示输入passphrase时如果不输入,直接回车,那么以后你登录服务器就不会验证密码,否则会要求你输入passphrase,默认会将私钥放在/root/.ssh/id_rsa公钥放在
/root/.ssh/id_rsa.pub。
b、将公钥拷贝到远程服务器上的/root/.ssh/authorized_keys文件
(scp /root/.ssh/id_rsa.pub server:/root/.ssh/authorized_keys),注意,文件名一定要叫authorized_keys。
c、客户端上保留私钥,公钥留不留都可以。也就是服务器上要有公钥,客户端上要有私钥。这样就可以实现无密码验证登录了。
2、如果想要获得最大化的安全性,禁止口令登录,可以修改上/etc/ssh/sshd_conf中的
PasswordAuthentication yes 改为
PasswordAuthentication no
也即只能使用密匙认证的openssh,禁止使用口令认证。  

6.问题: 能否简单提供常用软件的安装方法,tgz/tar.gz以及rpm等等都怎么进行安装么?

解决方法:
简单提供常用软件的安装方法:
1、下载新驱动后的安装
如果下载包是.tar.gz或者.tgz格式的就需要先解压。
命令是tar zxvf 文件保存路径/文件名,解压后会在当前目录下生成一个新的解压目录,进入这个目录,最好参看README文档和INSTALL文档,里面有详细地安装方法,一般来说,如果有绿色
configure文件就
要先配置,执行./configure。然后执行make以及make install;
2、如果下载的文件是.o文件并且有类似install.sh或者类似setup.sh的安装脚本就可以直接执行这些安装脚本安装;
如果没有这个安装脚本就只好参看README文档了,一般会写出.o文件的copy路径,copy以后一般会执行
modprobe 模块名
3、如果是.rpm文件就只要直接执行
   rpm -ivh 文件路径/文件名  

7.问题: 在IBM365上安装本地scsi磁带机
机器配置如下:
qlogic 23xx光纤子卡连接IBM3582磁带库
使用ECRIX VXA-1 外置磁带机作灾备
现象:
系统启动后,找到ibm3582和ECRIX VXA-1
使用tar命令只能对st0作操作
对st1操作报错,出错信息如下:
[root@app3 etc]# tar cvf /dev/st1 hosts
hosts
tar: /dev/st1: Wrote only 0 of 10240 bytes
tar: Error is not recoverable: exiting now

dmesg信息中有这样的提示:
st1: Write not multiple of tape block size.


解决方法:
请先执行
mt -f /dev/st1 status
会显示block size的信息,例如:
# mt -f /dev/st1 status
SCSI 2 tape drive:
File number=0, block number=0, partition=0.
Tape block size 65536 bytes. Density code 0x42 (no translation).
Soft error count since last status=0
General status bits on (41010000):
BOT ONLINE IM_REP_EN
然后再执行tar命令,加-b的参数
tar -cvf /dev/st1 hosts -b 65536

8.问题: 问:我机器上的Linux 每次启动时钟日期就多了 8 小时,这是什么原因 ?  

解决方法:
答:计算机系统有两个时钟,一个是 BIOS,或者CMOS,或者说“硬件时钟”,还有一个就是“系统(操作系统)时钟”, 如果这两个时钟的设置上有问题,或者Linux 的时钟配置文件不正确的话,就会产生系统时钟差 8 小时的问题。
让我们先查看 /etc/sysconfig/clock 的内容:
[root@www /root]# cat /etc/sysconfig/clock
ZONE=Asia/Shanghai ;/usr/share/zoneinfo 下面的文件。
UTC=false ; 硬件时钟是否为 UTC 或者说 GMT 时钟。
ARC=false ;如果是在 Alpha 机器上,则设置为 true 。
把硬件时钟设置为 UTC 的好处就是他能自动设置夏时制,缺点时,在安装有多重操作系统启动的机器上,在另外的操作系统上时钟会错误。
Linux 的时钟设置文件为:/etc/localtime ,实际上这个文件是 /usr/share/zoneinfo 目录下对应文件的符号连接。

9.问题: 我们新购了HP dl380服务器,安装了redflag.dc 4.0版本,怎样才能找到磁带机(hp StorageWorks DAT tape)?

解决方法:

配置磁带机步骤:
首先需要连接在SCSI上的磁带机在SCSI控制器的BIOS中被识别,然后启动操作系统,执行
demsg
通常磁带机设备名称是/dev/st0,如果识别到这个设备,就可以用tar命令来备份数据,最简单的命令用法,备份的目录名是/xxx
tar cvf /dev/nst0 /xxx


进行简单的全备份、增量备份和差量备份的方法:
记住全备份和上一次增量备份的时间:f_time,i_time;
(现在的办法是以job为单位记录这两个时间:
全备份: tar cvf /dev/nst0 /xxx
增量备份: tar cvf /dev/nst0 /xxx -N i_time
差量备份: tar cvf /dev/nst0 /xxx -N f_time

控制磁带机的常用命令:
mt -f device options
控制磁带,其中device是磁带机设备,/dev/st0是到带设备,写完数据后会自动倒带,/dev/nst0是不倒带设备(通常建议使用,否则您就需要手动倒带了),options是
mt命令的参数,几个常用参数是:
rewind 倒带
eod 定位磁带到最后一个有效文件的结尾
fsf n 向前倒带跳过n个文件
tar cvf device files
向磁带(device是设备名)中写数据,files可以是文件也可以是目录
增量备份可以使用tar cvf device files --newer DATA命令,其中DATA是日期,可以写为类似
07/11/2002(月/日/年)的格式。  

10.问题: 我得服务器是用来运行通讯方面程序的,近来报错:
(scsi0:A:0:0)Locking max tag conunt at 64.去国外网站查过,说问题很普通,但很严重,却好像不影响程序的使用,请问是怎么回事

解决方法:
这似乎是核心的bug,这个报错是没有影响的,通过升级内核可以解决。  

11.问题: 如何配置/etc/X11/XF86Config-4配置文件调用frambuffer驱动?  

解决方法:
调用framebuffer驱动,请您在按照下面的步骤配置:
1、执行lspci命令,将输出信息VGA前面的一段显卡ID信息记录下来,例如,我执行lspci的输出如下:
...........
01:00.0 VGA compatible controller: nVidia Corporation NV5M64 [RIVA TNT2 Model 64/Model 64 Pro] (rev 15)
需要记录的参数就是“01:00.0”,这个参数随主板芯片组不同而不同。
2、编辑XF86Config-4文件,增加对framebuffer驱动的调用语句
vi /etc/X11/XF86Config-4
在“Section "Screen"”段上面加上一段
Section "Device"
Identifier "framebuffer"
Driver "fbdev"
BoardName "Unknown"
BusID "01:00.0"
EndSection
其中“BusID”后引号中的内容是第一步执行lspci输出中记录下来的显卡ID信息,这里就以我的配置为例,请您根据实际情况做修改。
然后将“Section "Screen"”段下面的“Device "xxx"”修改为“Device "framebuffer"”,与刚刚添加的Identifier引号中的内容相同,然后保存退出,重新启动X就可以了。  

12.问题: 在服务器4系列产品种,如何挂装USB硬盘?  

解决方法:
链接好USB硬盘后,在终端中输入dmesg命令,查看系统检测到的硬盘信息,并确定硬盘的设备名。然后手动挂装,使用命令:
mount /dev/sdc1 /mnt/sdc1
(当然,mount前先要建好/mnt/sdc1这个目录,也可以使用其他名称。)
然后到目录/mnt/sdc1,看看是否是您想要的东西?   

13.问题: 怎样才能查看当前系统是哪个版本?  

解决方法:
可以执行
cat /etc/issue
查看。

14.问题: 进程状态中的S R T SW都有什么含义呀。谢谢。  

解决方法:
一般情况下,S是指停止,SW指停止并等待状态,R是指运行中,T指traces or stoped。
更具体的内容可以参考ps的信息。在终端中执行
man ps
就可以了。  

15.问题: 邮件系统中显示的时间不正确怎么办?  

解决方法:
邮件系统上所有显示的时间都是以服务器端操作系统平台的时间为准的,跟客户机上系统时间无关。若时间有误,只要修正服务器端系统平台时间即可。  

16.问题: 两台linux,已经由网络连接互通,如何将A机的桌面系统放在B机上显示和操作?  

解决方法:
两台linux,要将A机的X系统放在B机上面显示,A机上先将KDE启动,然后在B机上shell上操作执行:
xinit
xhost +
然后从B机telnet或者ssh到A机上,以root用户权限执行:
export DISPLAY=x.x.x.x:0.0
(x.x.x.x是B机的ip)
startkde  

17.问题: 怎么用tar命令简单实现数据的全备份、增量备份、差量备份呢?  

解决方法:
命令基本格式是:
tar cvzf TARGET SOURCES -N TIME
e.g
tar cvzf foo.tgz /bak -N "2004-03-03 16:49:17"
记住全备份的时间f_time和上一次增量备份的时间i_time;(现在的办法是以job为单位记录这两个时间: " [JobName] [F_TIME] [I_TIME] '\n' ")
全备份: tar cvzf foo.tgz /bak
增量备份: tar cvzf foo.tgz /bak -N i_time
差量备份: tar cvzf foo.tgz /bak -N f_tim  

18.问题: 如何修改网卡的Mac地址?  

解决方法:
首先必须关闭网卡eth0,否则会报告系统忙,无法更改。命令是:
ifconfig eth0 down
ifconfig eth0 hw ether 00:AA:BB:CCD:EE
ifconfig eht0 up
网卡的MAC地址更改就完成了。
如果想下次启动的时候,保持原来的设置,可以在/etc/rc.d/rc.sysinit文件中加入命令:
ifconfig eth0 down
ifconfig eth0 hw ether 00:AA:BB:CCD:EE
ifconfig eth0 up
这个脚本运行在network之前,所以MAC跟IP就是对应的了。  

19.问题: 如何制作第二张引导软盘  

解决方法:
使用能够支持加载第二张引导软盘的引导软盘来引导进行安装,系统可以加载第二张引导软盘,通过第二张引导软盘可以替换或增加安装程序中的一些文件,从而达到修改或增加安装程序功能的目的。

软盘的格式要求是DOS/Windows格式,只要将文件拷贝上去就可以了,有一个配置文件,名>字是files.conf,只要编辑这个文件将软盘中的文件名和要拷贝的位置写入就可以了,该文件为文本格式,每行两列,第一列为软盘上的文件名,第二列为要拷贝的位置,注意要写全,不能只写路径,举例如下:
anaconda /bin/anaconda
上面的写法表示将软盘上的anaconda文件拷贝为/bin/anaconda。

注意,不是所有的文件都可以替换,也不是所有的目录都可以写入,下面是可以替换文件的目录和可以写入的目录:
/lib下的所有文件可以替换,这个目录可以写入
/usr/lib下的所有文件(不包括目录)可以替换,这个目录可以写入
/usr/lib/python1.5下的所有文件可以替换,这个目录可以写入
其他目录,如/etc和/usr下的其他目录都不能替换

另外,由于支持加载第二张引导软盘的引导软盘中将调用的anaconda的位置改为了/bin/anaconda,所以如果你修改了anaconda想替换,需要替换/bin/anaconda,而不再是/usr/bin/anaconda了。

20.问题: 如何在一个系统上编译多个核心版本的驱动模块  

解决方法:
我们可以只在一个系统中使用一份核心源代码就编译出来不同的驱动模块,方法如下:
1、安装相应版本的核心源代码。
2、进入/usr/src目录,假设你安装的是2.4.17-1的源代码,那么需要建立联结linux指向/usr/src/linux-2.4.17-1目录,因为许多驱动源代码都需要使用/usr/src/linux目录。
3、检查你系统中下面两个目录:
/usr/include/linux
/usr/include/asm
如果不存在或不是联结,那么需要建立联结,指向/usr/src/linux/include/linux和/usr/src/linux/include/asm:
ln -s /usr/src/linux/include/linux /usr/include/linux
ln -s /usr/src/linux/include/asm /usr/include/asm
4、下面开始修改核心源代码的配置以适应编译不同版本的驱动模块:
*首先进入/usr/src/linux目录,执行命令make mrproper,
然后确定你需要编译的版本,假设是2.4.17-1BOOT,那么首先进入/usr/src/linux目录,修改Makefile文件,文件前几行如下:
VERSION = 2
PATCHLEVEL = 4
SUBLEVEL = 17
EXTRAVERSION = -1custom
将最后一行改为你需要的-1BOOT,然后保存退出。
然后将configs/kernel-2.4.18-i386-BOOT.config文件拷贝到当前目录下,命名为.config
然后执行命令make oldconfig进行配置,完成后执行命令make dep,之后就完成了核心源代码的设置工作。
如果你需要编译其他版本,比如SMP的,那么需要重复上面几个步骤,将Makefile中那行改为-1smp,然后将configs/kernel-2.4.18-i686-smp.config文件拷贝到当前目录下命名为.config,然后也是连续执行make oldconfig和make dep命令,之后就可以重新编译你的驱动源代码了。
5、编译驱动源代码时可以参考其中的README或INSTALL文件,修改还核心源代码配置后就可以开始编译了,编译好一个版本之后一定要记得备份,因为下次编译会冲掉原来的驱动模块。驱动模块编译好之后可以通过查找其中的关键字kernel_version来查看相应的版本。
6、如果你只是拿到了几个C文件和头文件,说明中说要替换掉核心源代码中相应的文件然后重新编译核心模块,那么就会需要很长的编译时间,这里有一个简单的方法,就是只编译这个驱动而不需要重新编译所有核心模块,使用命令:
gcc -DMODULE -D__KERNEL__ -O6 -c filename.c
可以直接将C程序编译成驱动模块,在当前目录下生成。
*如果有多个C程序,可以分别使用上述命令编译,然后使用命令ld -r -o destname.o sourcename.o进行连接就可以了。
7、如果是需要放在核心源代码中编译的,可以执行这个命令:make -n modules > cmd.sh
这个命令不是编译模块,只是将编译时要执行的命令打出来,所以我们可以编辑cmd.sh文件,
找到编译你的那些模块的命令,然后将他们拷贝出来,另存为一个脚本文件,然后在相应的目录下执行你的脚本文件就可以得到驱动的模块了。  

21.问题: 在写CGI程序时出现问题,浏览器总是报错:
Internal Server Error
......  

解决方法:
CGI程序理论上可以使用所有编程语言,但最主要注意:
一定要在输出内容之前输出Content-type: text/plain这样一行字,告诉Apache 这个CGI程序的结果要送回用户的浏览器,否则就会出“Internal Server Error”的错误。例如下面这段C程序:

#include "stdio.h"

main()
{
printf ("content-type: text/html\n\n");
printf ("");
printf ("hello world!\n");
}
阅读(3416) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~