리눅스에서 파일을 완전히 삭제하는 방법

1. rm 명령을 사용하여 삭제합니다.

  1. 직접 rm을 사용
    하고 먼저 ls -alt를 사용하여 파일 정보와 소유자를 확인하면
    소유자가 eve 사용자인 것을 알 수 있으므로 eve 사용자의 터미널에서 rm 명령을 실행하면 됩니다.
    root인지 other인지는 root 또는 다른 계정을 먼저 삭제하세요.
(base) eve@Eve:~$ ls -alt a.txt
-rw-rw-r-- 1 eve eve 0 226 16:17 a.txt
(base) eve@Eve:~$ rm a.txt
(base) eve@Eve:~$
  1. 폴더 삭제라면 rm -rf가 필요합니다.
(base) eve@Eve:~$ rm -rf a
(base) eve@Eve:~$

2. rm을 삭제할 수 없는 경우 chattr을 사용하여 파일의 확장 속성을 수정해야 합니다.

현상은 다음과 같습니다. 관리자 권한이나 루트 권한을 사용해도 삭제할 수 없습니다.

(base) eve@Eve:~$ rm a.txt
rm: cannot remove 'a.txt': Operation not permitted
(base) eve@Eve:~$ sudo rm a.txt
rm: cannot remove 'a.txt': Operation not permitted
(base) eve@Eve:~$ su root
Password:
root@Eve:/home/eve# rm a.txt
rm: cannot remove 'a.txt': Operation not permitted

동시에 다음과 같이 a.txt의 속성을 볼 수 있습니다.

root@Eve:/home/eve# ls -alt a.txt
-rw-rw-r-- 1 eve eve 0 226 15:58 a.txt

3. 해결책:

lsattr 파일 확장자 속성 보기

root@Eve:/home/eve# lsattr a.txt
----i---------e----- a.txt
说明:(更多说明参考四:lsattr及chattr介绍)
i:设置文件或目录不可修改、不可删除、不可重命名、不可移动;
e:设置文件或目录只在系统重新启动后才能访问。

해결 방법은 chattr 명령을 통해 i 속성을 수정하고 삭제하는 것입니다.

(base) eve@Eve:~$ sudo chattr -i a.txt  
(base) eve@Eve:~$ lsattr a.txt
--------------e----- a.txt
(base) eve@Eve:~$ rm a.txt
(base) eve@Eve:~$

참고: chattr은 관리자 권한으로만 수정할 수 있으므로
sudo를 추가하여 수정한 후에는 lsattr을 통해 수정된 확장 권한을 볼 수 있으며 더 이상 i가 없으므로 rm을 삭제하면 성공적으로 삭제할 수 있습니다.

참고: chattr이 i 속성을 제거하면 다음과 같은 오류가 계속 보고됩니다.

(base) eve@Eve:~$  sudo chattr -i a.txt
Usage: chattr [-RVf] [-+=aAcCdDeijsStTu] [-v version] files...

chattr 명령에 문제가 있다는 의미이므로 github 에서 소스코드를 다운로드하거나 , 여기에서 소스코드를 다운로드하는 것을 권장합니다 :
그런 다음 gcc chattr.c -o chattr.out을 실행한
후 생성된 chattr.out을 사용하여 i 속성을 삭제합니다. 명령 참조는 다음과 같습니다.

(base) eve@Eve:~$  gcc chattr.c -o chattr.out
(base) eve@Eve:~$ ls
chattr.out
(base) eve@Eve:~$ sudo ./chattr.out -i a.txt

성공적으로 삭제하려면 삭제를 다시 실행하세요.

(base) eve@Eve:~$ rm a.txt
rm: cannot remove 'a.txt': Operation not permitted

4. lsattr 및 chattr 소개

lsattr 命令是用于显示 Linux 文件和目录的扩展属性的工具。
这些属性是文件系统提供的一种机制,用于控制文件和目录的访问、更改和删除等行为。

lsattr 命令的常用选项如下:

-a:显示隐藏文件和目录的属性;
-d:如果指定的参数是目录,那么只显示目录的属性;
-R:递归显示目录及其子目录中的所有文件和目录的属性;
-v:显示每个文件或目录的版本号。
常用的文件或目录属性如下:

i:设置文件或目录不可修改、不可删除、不可重命名、不可移动;
a:设置只能在文件或目录中添加内容,不能修改和删除;
c:设置自动压缩文件或目录;
d:设置目录被删除时,其内容应该被保留在磁盘上,但不可访问;
s:设置文件或目录在被删除时,其空间将被清空,但数据可以恢复;
u:设置文件或目录被删除时,可以通过恢复工具来恢复;
e:设置文件或目录只在系统重新启动后才能访问。
这些属性可以通过 chattr 命令进行设置和修改。例如,chattr +i filename 将文件 filename 的属性设置为不可修改、不可删除、不可重命名、不可移动。

chattr 是 Linux 系统下的一个命令,用于修改文件或目录的属性。chattr 命令可用于设置或清除某些扩展属性,这些属性有助于在文件或目录中启用或禁用某些高级功能。chattr 命令只能被 root 用户或具有 CAP_LINUX_IMMUTABLE 许可的用户执行。

chattr 命令的一些常用选项和属性如下:

-R 递归地更改目录及其下面的所有文件和子目录的属性。
-v 显示修改属性的详细信息。
+ 启用某个属性。
- 禁用某个属性。
= 设置属性,删除不在命令行中指定的所有属性。
a 使文件或目录只能以追加方式打开(只允许在文件末尾添加数据)。
c 允许文件自动压缩。
d 允许文件被写入后进行同步写入。
i 防止文件被修改、重命名、删除或链接。
j 允许文件被写入后进行同步写入,但仅适用于 Ext3 和 Ext4 文件系统。
s 允许文件被安全地删除。
u 允许文件被恢复。
例如,要将 /var/log/messages 文件设置为不允许被修改,可以使用以下命令:

css
Copy code
sudo chattr +i /var/log/messages
如果要取消该属性,则可以使用以下命令:

css
Copy code
sudo chattr -i /var/log/messages

추천

출처blog.csdn.net/sinat_29891353/article/details/129227812