강좌
클라우드/리눅스에 관한 강좌입니다.
리눅스 분류

파일시스템 디버거 debugfs모드에서 파일링크 삭제하기

작성자 정보

  • 관리자 작성
  • 작성일

컨텐츠 정보

본문

파일시스템 디버거 debugfs모드에서 파일링크 삭제하기






 

특정 파일시스템 내부에서 debugfs unlink명령어로 파일 또는 디렉토리링크를 삭제할 수 있습니다.

 

 

 

 

 

다음 예를 보시면 /home/sulinux 디렉토리에 있는 파일들을 ls로 먼저 확인하였습니다.

 

 

 

 

 

[root@su250 sulinux]# ls -l

합계 424

-rw-r--r-- 1 root root 410108 2009-01-0420:40 services

-r-------- 1 root root   1710 2009-01-0420:40 shadow

-rw-r--r-- 1 root root     32 2009-01-0420:40 shells

-rw-r--r-- 1 root root    212 2009-01-0420:40 statetab

drwxr-xr-x 2 root root   4096 2008-12-2302:55 www

[root@su250 sulinux]#

 

이 디렉토리에는 모두 5개의 파일(한 개는 www디렉토리)이 있고 shells라는 파일도 존재하고 있습니다.

 

 

 

 

 

그리고 다음은 debugfs -w옵션(읽고/쓰기모드)으로 실행하면서 /dev/sda3파일시스템을 오픈 하였습니다.

 

 

 

/dev/sda3파일시스템은 /home에 마운트되어 있습니다.

 

 

 

따라서 이렇게 debugfs를 실행하여 /dev/sda3파일시스템을 오픈 하면 debugfs /home위치를 초기 작업대상위치로 인식합니다.

 

 

 

그리고 cd전용명령어로 sulinux라는 디렉토리로 이동하였습니다.

 

 

 

 

 

[root@su250 sulinux]# debugfs -w /dev/sda3

debugfs 1.41.3 (12-Oct-2008)

debugfs: 

debugfs:  ls

 2  (12) .    2  (12) ..    11  (20) lost+found    51185  (16) bible  

 36561  (16) sspark    7313  (16) sulinux    21937  (4004) command  

debugfs:

debugfs:  cd sulinux

debugfs:  

 

그리고 다음과 같이 ls전용명령어로 파일리스트를 확인한 결과 sulinux디렉토리에는 .()으로 시작되는 여러 개의 파일들과 앞에서 확인했던 5개의 파일(한 개는 www디렉토리)이 존재하고 있습니다.

 

 

 

이런 상황에서 “unlink shells”라는 debugfs전용명령어를 실행하였습니다.

 

 

 

과연 어떤 결과가 발생하였을까요?

 

debugfs:  ls

 7313  (12) .    2  (12) ..    7314  (24) .bash_profile    7315  (16) .bashrc  

 7316  (16) .mozilla    7319  (20) .bash_logout    7320  (16) .gnome2  

 7321  (80) www    7328  (40) services    7330  (32) shadow  

 7332  (52) shells    7335  (3776) statetab  

debugfs: 

debugfs:  unlink shells

debugfs: 

debugfs:  ls

 7313  (12) .    2  (12) ..    7314  (24) .bash_profile    7315  (16) .bashrc  

 7316  (16) .mozilla    7319  (20) .bash_logout    7320  (16) .gnome2  

 7321  (80) www    7328  (40) services    7330  (84) shadow  

 7335  (3776) statetab  

debugfs:

 

그 결과 shells라는 파일의 링크가 삭제되었습니다.

 

 

 

“unlink shells”명령을 실행한 후에 “ls”를 실행하여 그 결과를 확인해 보면 shells라는 파일이 아예 존재하지 않고 있습니다.

 

 

 

링크가 삭제되었기 때문에 ls로 확인되지 않는 것입니다.

 

 

 

 

 

그리고 이번에는 debugfs에서 빠져 나와서(quit) 쉘상태에서 ls를 실행한 결과 shells라는 파일이 보이지 않습니다.

 

 

 

, 삭제된 것과 같이 나온다는 것입니다.

 

 

 

 

 

debugfs:  quit

[root@su250 sulinux]#

[root@su250 sulinux]# ls -l

합계 420

-rw-r--r-- 1 root root 410108 2009-01-0420:40 services

-r-------- 1 root root   1710 2009-01-0420:40 shadow

-rw-r--r-- 1 root root    212 2009-01-0420:40 statetab

drwxr-xr-x 2 root root   4096 2008-12-2302:55 www

[root@su250 sulinux]#

 

, debugfs에서 특정 파일의 링크를 삭제하면 debugfs 전용명령어 ls로도 그 파일은 보이지 않고 쉘상태로 돌아와서 쉘명령어 ls로도 그 파일은 보이지 않습니다.

 

 

관련자료

댓글 0
등록된 댓글이 없습니다.

공지사항


뉴스광장


  • 현재 회원수 :  60,037 명
  • 현재 강좌수 :  35,811 개
  • 현재 접속자 :  93 명