![데이터 백업을 위한 파일 권한](https://linux55.com/image/82316/%EB%8D%B0%EC%9D%B4%ED%84%B0%20%EB%B0%B1%EC%97%85%EC%9D%84%20%EC%9C%84%ED%95%9C%20%ED%8C%8C%EC%9D%BC%20%EA%B6%8C%ED%95%9C.png)
내 파일 중 일부에서 관련 실수를 저지른 후 rm
(백업이 있어서 좋았음) 그러한 실수를 방지할 수 있는 방법에 대해 생각하기 시작했습니다. 파일 권한에 대해 아무 작업도 하지 않았기 때문에 이에 대해 읽기 시작했지만 뭔가 빠졌을 수도 있다는 생각이 들었습니다. 본질적으로 내 데이터의 백업을 설정하고 싶습니다(하나: Windows NT 파일 시스템 외부 하드 드라이브, 두 개: UNIX 기반 서버, 그러나 정확한 세부 정보는 모르겠습니다). 내 파일이 없으면 다른 재정의 없이는 이 작업을 수행할 수 없거나 sudo
"확실합니까?"라는 메시지가 표시됩니다. 아니면 사람들이 사용하는 일종의 "표준" 파일 백업 권한이 생각보다 나을까요?
다양한 설정을 시도했지만 chmod
제대로 설정되지 않는 것 같습니다. 내가 이해한 바로는 이것이 755
표준인 것 같지만, 내가 이해한 바에 따르면 이것이 내가 저지른 실수를 저지르는 것을 막지는 못합니다. 무엇에 대해 555
? 폴더를 파일과 다르게 설정해야 합니까? 사람들은 장기 저장소, 즉 자주 액세스하지 않는 파일을 보호하기 위해 일반적으로 무엇을 사용합니까?
답변1
"w" 비트를 제거하면 "w" 비트를 제거하는 항목을 실수로 덮어쓰는 일이 발생하지 않습니다. 그것이 디렉터리라면 해당 디렉터리에서 파일을 추가하거나 제거할 수 없다는 뜻입니다. 파일이라면 해당 파일을 변경할 수 없다는 의미입니다. 그러나 이 방법의 단점은 데이터가 손실된다는 것입니다(IMO, 파일 권한은 백업 데이터의 일부입니다).
또 다른 접근 방식은 "불변" 확장 속성을 사용하는 것입니다:
chattr +i file_or_directory
약점은저것이 접근 방식의 한 가지 단점은 혼란스러울 수 있다는 것입니다. ls -l
파일에 쓸 수 있다고 알려주지만 이를 시도하면 커널은 "Permission Denied"라고 말합니다. 루트 사용자라도 확장 속성(이것은 lsattr
)에 대해 알려줄 수 있습니다.
마지막 한마디: 자주 액세스할 필요가 없는 파일을 실수로 변경하는 것을 방지하는 가장 좋은 방법은 간단히 말해서,사용 가능하게 하지 마세요정상적인 사용. 파일 시스템을 자동으로 마운트하지 마십시오. 이 mount
단계를 백업 프로세스의 일부로 만드십시오. 이렇게 하면 이 모든 문제가 사라질 것입니다.
답변2
일반적으로 이 모든 것을 방지 sudo
하고 의도적으로 파일에 액세스하지 못하게 합니다. 이는 문제를 일으킬 수 있고 너무 짜증나서 어쨌든 자체 보호 메커니즘을 무시할 수 있습니다.
대신에 데스크톱 유형의 휴지통처럼 작동하는 이를 사용하여 trash-cli
나중에 실수한 경우 파일을 복구할 수 있습니다.
APT 패키지 관리자를 사용하는 경우 다음 명령을 사용하여 설치할 수 있습니다.
apt-get install trash-cli
또는 패키지 관리자가 yum
무엇 이든 사용하고 기본적으로 명령을 명령 으로 바꾸십시오 . 그런 다음 나중에 파일을 복원할 수 있으므로 데이터 손실에 대한 걱정 없이 미친 듯이 파일을 삭제할 수 있습니다. verbose를 사용하면, 휴지통-cli는 파일이 삭제된 디렉터리를 나열합니다.pacman
rm
trash
trash -v <file>
답변3
별칭은 어떻습니까? 명령줄에 별칭을 입력하면 정의된 모든 별칭이 표시됩니다. 다음과 같은 것을 추가하는 것이 좋습니다.
alias rm='rm -i'
~/.bashrc에 정의하세요. (그러면 나중에 필요에 맞게 제거하거나 변경할 수 있습니다.)
[mal@localhost ~]$ touch 123
[mal@localhost ~]$ rm 123
[mal@localhost ~]$ touch 123
[mal@localhost ~]$ rm -i 123
rm: remove regular empty file ‘123’? y
[mal@localhost ~]$
또는
여기 또 다른 트릭이 있습니다.
-i
해당 디렉토리에서 다음과 같은 파일을 사용하거나 생성하십시오.touch -- -i
touch ./-i
지금 시도해보세요 rm -rf *
:
[mal@localhost stack]$ touch {1..10}
[mal@localhost stack]$ touch -- -i
[mal@localhost stack]$ ls
1 10 2 3 4 5 6 7 8 9 -i
[mal@localhost stack]$ rm -rf *
rm: remove regular empty file ‘1’? n
rm: remove regular empty file ‘10’? n
rm: remove regular empty file ‘2’? n
이는 명령줄로 *
확장되므로 결국 명령은 가 됩니다 . 이 명령은 삭제하기 전에 메시지를 표시합니다.-i
rm -rf -i
또는
사용보안 관리
Safe-rm은 절대 삭제해서는 안 되는 구성 가능한 파일 및 디렉터리의 블랙리스트와 비교하여 지정된 매개변수를 확인하는 래퍼로 /bin/rm을 대체하여 중요한 파일이 실수로 삭제되는 것을 방지하도록 설계된 보안 도구입니다.
Users who attempt to delete one of these protected files or directories will not be able to do so and will be shown a warning
대신 메시지:
$ rm -rf /usr Skipping /usr