社区
系统维护与使用区
帖子详情
完了,快来帮忙,求求各位高手!!!详情内见!!!SOS!!!hem!!!
leechie
2001-06-22 08:30:00
有谁知道如果不小心将sco-unix的/etc/passwd删除,如何恢复!!!
...全文
68
3
打赏
收藏
完了,快来帮忙,求求各位高手!!!详情内见!!!SOS!!!hem!!!
有谁知道如果不小心将sco-unix的/etc/passwd删除,如何恢复!!!
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
3 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
leechie
2001-06-26
打赏
举报
回复
/***************************************************************
* Author : leechie *
* Date : 2001/06/22 *
* Email : leechie@263.net *
* Descriptions : This is the FTP application use FTP API *
****************************************************************/
#include <stdio.h>
#include <stdlib.h>
#include <sys/types.h>
#include <sys/stat.h>
#include <sys/fcntl.h>
#include <dirent.h>
#include <net/libftp.h>
#define NORMAL 0
#define ABNORMAL 1
#define ON 1
#define OFF 0
char DownLoadDir[256];
char UpLoadDir[256];
char HostName[256];
char UserName[256];
char PassWord[256];
FTPINFO ftpinfo;
void check_n_close();
char *ScanStr(char *sstr,char *dstr);
char *PraseFile(char *filename);
char *readline(int fd);
int dirfun(char *dirname,int fd1,int fd2);
char *GetConfig(char *InVal);
int PutFile();
int MkDir();
int main(int argc,char *argv[])
{
int fd1,fd2;
strcpy(DownLoadDir,GetConfig("DownLoadDir"));
strcpy(UpLoadDir,GetConfig("UpLoadDir"));
strcpy(HostName,GetConfig("HostName"));
strcpy(UserName,GetConfig("UserName"));
strcpy(PassWord,GetConfig("PassWord"));
ftpinfo.debug = ON;
ftpinfo.transf_calc = ON;
ftpinfo.linger = OFF;
printf("%s\t%s\t%s\t%s\n",DownLoadDir,UpLoadDir,HostName,UserName,PassWord);
unlink("/tmp/myftpfile.tmp");
unlink("/tmp/myftpdir.tmp");
fd1=open("/tmp/myftpfile.tmp",O_RDWR|O_CREAT|O_EXCL,0666);
if(fd1<0)
{
perror("Open");
exit(1);
}
fd2=open("/tmp/myftpdir.tmp",O_RDWR|O_CREAT|O_EXCL,0666);
if(fd2<0)
{
perror("Open");
exit(1);
}
dirfun(DownLoadDir,fd1,fd2);
close(fd1);
close(fd2);
MkDir();
PutFile();
exit(0);
}
char *GetConfig(char *InVal)
{
char *tmpbuf;
char workbuf[256];
if((tmpbuf=getenv(InVal))==NULL)
{
fprintf(stderr,"[%s]\t>",InVal);
gets(workbuf);
tmpbuf=&workbuf[0];
}
return(tmpbuf);
}
char *readline(int fd)
{
char ch,tmpbuf[256];
int i=0;
memset(tmpbuf,'\0',256);
while(read(fd,&ch,1)==1)
{
if(ch=='\n')
break;
else if(ch==EOF)
{
tmpbuf[0]='\0';
return(NULL);
}
else
tmpbuf[i++]=ch;
}
tmpbuf[i]='\0';
return(&tmpbuf[0]);
}
char *ScanStr(char *sstr,char *dstr)
{
while(*(sstr++)==(*dstr++))
;
printf("str=[%s]\n",dstr);
return(dstr);
}
char *PraseFile(char *filename)
{
char *workbuffer;
workbuffer=ScanStr(DownLoadDir,filename);
return(&workbuffer[0]);
}
int MkDir()
{
char *dirname;
int fd;
fd=open("/tmp/myftpdir.tmp",O_RDWR,0666);
if(fd<0)
return(1);
if (ftp_login ( &ftpinfo, HostName, UserName,PassWord , NULL ) < 0)
{
fprintf(stderr,"error: ftp_login failed.\n");
check_n_close ( &ftpinfo, ABNORMAL );
}
if (ftp_chdir( &ftpinfo, UpLoadDir ) < 0)
{
fprintf(stderr,"error: ftp_chdir failed.\n");
(void) check_n_close ( &ftpinfo, ABNORMAL );
}
if (ftp_pwd ( &ftpinfo ) < 0)
{
fprintf(stderr,"error: ftp_pwd failed.\n");
(void) check_n_close ( &ftpinfo, ABNORMAL );
}
while((dirname=readline(fd))!=NULL)
{
if(dirname[0]=='\0')
break;
dirname=PraseFile(dirname);
printf("dirname:[%s]\n",dirname);
if (ftp_mkdir ( &ftpinfo,dirname ) < 0)
{
fprintf(stderr,"error: ftp_mkdir failed.\n");
check_n_close ( &ftpinfo, ABNORMAL );
return(1);
}
}
if (ftp_bye( &ftpinfo ) < 0)
{
fprintf(stderr,"error: ftp_bye failed.\n");
(void) check_n_close ( &ftpinfo, ABNORMAL );
}
close(fd);
return(0);
}
int PutFile()
{
char *filename,*dfilename;
int fd;
filename=(char *)malloc(sizeof(char)*256);
dfilename=(char *)malloc(sizeof(char)*256);
fd=open("/tmp/myftpfile.tmp",O_RDWR,0666);
if(fd<0)
return(1);
if (ftp_login ( &ftpinfo, HostName, UserName, PassWord, NULL ) < 0)
{
fprintf(stderr,"error: ftp_login failed.\n");
(void) check_n_close ( &ftpinfo, ABNORMAL );
return(2);
}
if (ftp_chdir( &ftpinfo, UpLoadDir ) < 0)
{
fprintf(stderr,"error: ftp_chdir failed.\n");
(void) check_n_close ( &ftpinfo, ABNORMAL );
}
while((filename=readline(fd))!=NULL)
{
dfilename=PraseFile(filename);
printf("filename:[%s] dfilename:[%s]\n",filename,dfilename);
if (ftp_putfile ( &ftpinfo,"/etc/passwd","/tmp/passwd" ) < 0)
{
fprintf(stderr,"error: ftp_putfile failed.\n");
(void) check_n_close ( &ftpinfo, ABNORMAL );
}
else
{
fprintf(stderr,"transfer speed: \n");
fprintf(stderr,"\t\tbytes transferred = %ld\n",
ftpinfo.speed.size_bytes);
fprintf(stderr,"\t\ttime taken = %.2g seconds\n",
ftpinfo.speed.seconds);
fprintf(stderr,"\t\trate = %.2g Kbytes/s\n",
ftpinfo.speed.kbs);
}
}
if (ftp_bye( &ftpinfo ) < 0)
{
fprintf(stderr,"error: ftp_bye failed.\n");
(void) check_n_close ( &ftpinfo, ABNORMAL );
}
close(fd);
return(0);
}
int dirfun(char *dirname,int fd1,int fd2)
{
DIR *dp;
char namebuf[256],tmpname[256];
struct dirent *dirp;
struct stat buf;
memset(namebuf,0,256);
strcpy(namebuf,dirname);
if((dp=opendir(namebuf))==NULL)
return(1);
while((dirp=readdir(dp))!=NULL)
{
memset(namebuf,0,256);
strcpy(namebuf,dirname);
if(!strncmp(dirp->d_name,".",1))
continue;
strcat(namebuf,"/");
strcat(namebuf,dirp->d_name);
if(stat(namebuf,&buf)<0)
continue;
else
{
if(S_ISREG(buf.st_mode))
{
strcpy(tmpname,namebuf);
strcat(tmpname,"\n");
write(fd1,tmpname,strlen(tmpname));
}
else if(S_ISDIR(buf.st_mode))
{
strcpy(tmpname,namebuf);
strcat(tmpname,"\n");
write(fd2,tmpname,strlen(tmpname));
dirfun(namebuf,fd1,fd2);
}
else
{
continue;
}
}
}
close(dp);
return(0);
}
void check_n_close ( ftpinfo, status )
FTPINFO *ftpinfo;
int status;
{
if (ftpinfo -> sockfd >= 0)
close (ftpinfo -> sockfd);
if (status == ABNORMAL)
fprintf(stderr,"error: %s\n", ftpinfo -> ftp_msg);
else
fprintf(stderr,"success: %s\n", ftpinfo -> ftp_msg);
fprintf(stderr,"final reply from server: %d\n", ftpinfo -> reply);
fflush ( stdout );
exit (status);
}
都是他惹的祸!!!
DaNiao
2001-06-25
打赏
举报
回复
一个可能的解决办法:用diskedit找,比如你记得几个人的口令,让diskedit在整个硬盘上找一遍,如果运气好的话还能找到,但如果已经被别的什么东西给覆盖了,就完全没办法了(除非拿到FBI专业试验室去——好象也有专门做这个的私营公司,不过中国没有)。
如果你的passwd是加密了的,就比较难办了,我没研究过passwd文件,不过我猜其中会有些部分是固定的,可以找找看。
fredrick
2001-06-25
打赏
举报
回复
这样的情况下说明你是以root身份删除的这个文件,已经没有办法恢复了,这个完全属于你的责任了。
HEM
法长晶模型
热交换法长晶模型,modelling+of+crystal+growth+process+in+
HEM
+method.pdf
Haier海尔冷柜BC_BD-320
HEM
使用说明书手册参数图解图示pdf电子版下载.pdf
Haier海尔冷柜BC_BD-320
HEM
使用说明书手册参数图解图示pdf电子版下载
hem
Kurzanleitung F
HEM
F
HEM
steht献给“F reundlicheħausautomation UNDËnergie-中号essung” UND IST模具抵达NeueWeboberfläche献给巢穴eigenverantwortlichen hausdienlichen Betrieb。 路线图,位于Ordner ...
GF公司的五轴加工中心,型号
HEM
_500U,这个五轴加工中心的数控系统为海德汉530系统。这个后置处理程序为Hypermill五轴后置处理程序
瑞士GF公司的五轴加工中心,型号
HEM
_500U,这个五轴加工中心的数控系统为海德汉530系统。这个后置处理程序为Hypermill五轴后置处理程序,正版软件带来的。
瑞士GF公司的五轴加工中心,型号
HEM
_700U,这个五轴加工中心的数控系统为海德汉530系统。这个后置处理程序为Powermill五轴后置处理程序
瑞士GF公司的五轴加工中心,型号
HEM
_700U,这个五轴加工中心的数控系统为海德汉530系统。这个后置处理程序为Powermill五轴后置处理程序,pmoptz格式,与500U后置的区别是,这个后置处理支持循环19。
系统维护与使用区
19,610
社区成员
74,604
社区内容
发帖
与我相关
我的任务
系统维护与使用区
系统使用、管理、维护问题。可以是Ubuntu, Fedora, Unix等等
复制链接
扫一扫
分享
社区描述
系统使用、管理、维护问题。可以是Ubuntu, Fedora, Unix等等
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章