이 글에서는 리눅스 명령어 shred
의 사용법과 주요 옵션들에 대해 알아보고, 활용할 수 있는 유용한 팁들을 공유하겠습니다. 리눅스 환경에서 파일을 삭제하는 것은 일반적인 작업 중 하나입니다. 하지만 단순히 파일을 삭제한다고 해서 그 내용이 완전히 사라지는 것은 아닙니다. 삭제된 파일은 실제로 파일 시스템에 흔적이 남아 있어 데이터 복구 도구를 사용하면 다시 복구할 수 있습니다. 이러한 문제를 방지하기 위해 shred
라는 명령어를 사용합니다.
목차
shred 명령어란?
shred
는 파일을 단순히 삭제하는 것뿐만 아니라, 해당 파일의 데이터를 여러 번 덮어쓰며 복구할 수 없도록 만드는 명령어입니다. 이는 파일의 내용을 임의의 데이터로 여러 번 덮어씌운 후에 파일을 삭제하거나, 혹은 그냥 덮어쓰기만 하는 방식으로 이루어집니다.
shred 명령어의 기본 사용법
가장 기본적인 shred
명령어의 사용법은 다음과 같습니다.
shred 파일명
ShellScript이 명령어는 지정한 파일의 데이터를 여러 번 덮어쓴 후 파일을 그대로 유지합니다. 파일이 삭제되지 않기 때문에 shred
만으로는 파일의 흔적을 완전히 제거할 수 없습니다. 따라서 이 경우 파일을 삭제하기 위해 추가적인 명령어가 필요할 수 있습니다.
아래의 그림은 shred 명령어를 통해서 임의의 값이 덮어씌워진 것으로 최초 100바이트만 출력한 것입니다.
shred 명령어의 주요 옵션
-n
또는 --iterations
옵션
이 옵션은 파일을 덮어쓸 횟수를 지정합니다. 기본적으로 shred
는 파일을 세 번 덮어쓰지만, -n
옵션을 사용해 이를 조정할 수 있습니다.
shred -n 5 파일명
ShellScript위의 명령어는 파일을 5번 덮어쓰게 됩니다. 덮어쓰는 횟수가 많아질수록 파일을 복구하는 것이 어려워집니다.
-z
또는 --zero
옵션: 파일 내용 0으로 채우기
파일을 덮어쓴 후 마지막으로 파일을 0
으로 덮어써서 파일의 내용을 더욱 안전하게 감춥니다. 이는 파일이 무작위 데이터로 덮어쓰여진 후에도 단순히 0
으로 덮어쓰여져 있어, 누군가가 파일을 확인했을 때 파일이 덮어쓰여졌다는 사실을 알아차리지 못하도록 합니다.
shred -z 파일명
ShellScript파일의 크기는 4096바이트이지만, cat으로 내부를 보려고 했을 때 아무것도 출력되지 않는 것을 확인할 수 있습니다.
조금 더 확실하게 xxd 명령어를 사용해서 해당 파일의 내용을 hex 값 형태로 살펴보면 모두 0으로 채워진 것을 확인할 수 있습니다.
-u
또는 --remove
옵션
이 옵션은 덮어쓰기가 완료된 후 파일을 삭제합니다. 흔히 사용되는 옵션이며, 파일을 완전히 삭제하고 싶을 때 유용합니다.
shred -u 파일명
ShellScript위의 명령어를 사용하면 파일이 덮어쓰여진 후 자동으로 삭제됩니다. 이는 파일 시스템에서 파일을 복구할 가능성을 더욱 줄여줍니다.
-v
또는 --verbose
옵션
명령어 수행 과정을 화면에 출력하여 현재 진행 상태를 확인할 수 있습니다. 파일이 여러 번 덮어써지는 과정을 확인하고 싶을 때 사용됩니다.
shred -v 파일명
ShellScript아래의 그림을 보면 첫번째는 임의의 값으로 채우고, 그 다음은 모든 값을 1로 채우고, 다시 임의의 값으로 채우고, 모든 값을 0으로 채운 후, 마지막으로 다시 임의의 값으로 채우는 것을 확인할 수 있습니다.
shred 사용 시 주의사항
shred
명령어를 사용할 때 몇 가지 주의해야 할 사항이 있습니다.
- 파일 시스템 종류:
shred
명령어는 모든 파일 시스템에서 동일하게 작동하지 않을 수 있습니다. 예를 들어, 저널링 파일 시스템이나 SSD와 같은 일부 디스크에서는 덮어쓰기의 효과가 떨어질 수 있습니다. 이는 파일이 물리적으로 동일한 위치에 저장되지 않기 때문입니다. 이러한 경우 추가적인 보안 조치를 고려해야 합니다. - 파일 크기: 큰 파일을 덮어쓸 때는 시간이 오래 걸릴 수 있습니다. 특히 여러 번 덮어쓰기를 수행할 경우 파일 크기에 비례하여 시간이 증가하므로, 시간이 중요한 경우에는 덮어쓰기 횟수를 조정하는 것이 좋습니다.
- 디렉터리 삭제:
shred
는 디렉터리 자체를 삭제할 수 없습니다. 디렉터리 안에 있는 파일을 개별적으로 삭제해야 합니다. 이 경우, 디렉터리 내 모든 파일을 한 번에 삭제하려면 별도의 스크립트를 사용하거나, 해당 디렉터리에서 모든 파일을 대상으로 명령어를 적용해야 합니다.
유용한 활용 방법
자동화 스크립트에 사용
shred
명령어를 자동화 스크립트에 포함시켜 정기적으로 민감한 데이터를 삭제하는 데 활용할 수 있습니다. 예를 들어, 로그 파일이나 임시 파일을 주기적으로 안전하게 삭제하는 스크립트를 작성하여, 데이터 유출 가능성을 줄일 수 있습니다.
복구 방지
중요한 프로젝트 파일이나 고객 정보가 담긴 파일을 삭제할 때 shred
를 사용하여 복구 방지를 철저히 할 수 있습니다. 이는 회사 내에서의 보안성을 높이는 데 중요한 역할을 합니다.
외장 디스크 관리
외장 하드디스크나 USB 드라이브에 있는 데이터를 완전히 삭제하고 재사용하려 할 때 shred
를 사용하면 안전하게 데이터를 삭제할 수 있습니다. 특히, 외부로 반출되는 드라이브의 경우 중요한 데이터를 확실하게 삭제하는 것이 중요합니다.
정리
shred
명령어는 리눅스 환경에서 파일을 단순히 삭제하는 것 이상의 보안 기능을 제공합니다. 덮어쓰기를 통해 파일의 복구 가능성을 최소화하고, 옵션을 적절히 사용하여 다양한 상황에 맞게 데이터를 안전하게 관리할 수 있습니다. 하지만 모든 파일 시스템에서 완벽한 결과를 보장하지는 않으므로, 상황에 따라 적절한 추가 조치를 취하는 것이 중요합니다. 특히, 중요한 데이터를 다루는 경우에는 shred
명령어를 잘 활용하여 데이터 보안을 강화하는 것이 좋습니다.