중요한 파일에는 "cp" 대신 "mv"를 사용합니다. 앞으로는 어떻게 이런 일을 피할 수 있나요?

중요한 파일에는 "cp" 대신 "mv"를 사용합니다. 앞으로는 어떻게 이런 일을 피할 수 있나요?

저는 직장에서 Centos 7을 사용하여 데이터 세트를 관리하고 있습니다. 이 데이터 세트의 데이터 파일은 모든 것이 "myuser:group"에 속하는 파일 구조로 되어 있어 불행한 일이 발생하는 것을 방지하기 위해 myuser(일명 나)에게만 쓰기 액세스를 허용합니다.

하지만 오늘은 프로젝트의 전체 파일을 직접 복사하고 "cp" 대신 "mv"를 사용했습니다. 이것이 아프지는 않았지만 뭔가 나쁜 일이 일어날 수 있다는 것을 상기시켜주었습니다.

목표는 "그룹"의 사용자가 이 디렉터리 구조 외부에서 파일을 "cp"할 수 있지만 쓰기 권한은 갖지 않도록 하는 것입니다. 파일은 이미 다른 곳에 백업해 두었기 때문에 앞으로는 어리석은 짓을 하지 않도록 하는 게 목표이지, 어리석은 상황이 닥쳤을 때 파일을 복구하는 게 아니다.

루트를 이 파일의 소유자로 만드는 것을 고려 중이므로 피해를 입히기 전에 "sudo"를 수행해야 합니다.

실수로 이러한 파일을 편집/삭제하는 것을 방지하려면 어떻게 해야 합니까?

답변1

글쎄, 당신이 할 수 있는 일이 여러 가지가 있습니다. 각 방법에는 장단점이 있습니다.

rw사용자가 액세스 권한을 소유하고 (또는 r) 그룹이 을 소유하는 적절한 소유권(현재처럼)을 설정할 수 있습니다 r.

파일을 변경할 수 없게 만들 수 있습니다. 파일 속성을 수정하면 파일이 삭제되거나 수정되는 것을 방지할 수 있습니다(그러나 권한이 있으면 읽을 수 있습니다 r) chattr +i file. 나중에 파일을 수정해야 하는 경우 이 +i플래그를 비활성화하면 됩니다 chattr -i.

어느 쪽을 선택하든 조직에서 구현하기로 결정한 정책, 워크플로 및 절차를 엄격하게 따라야 합니다. 그들은 당신이 그런... 실수를 저지르는 것을 방지할 것입니다.

답변2

내 솔루션이 도움이 될지는 모르겠지만 어리석은 일을 하지 않도록 도와줍니다. 열고 ~/.bashrc다음을 추가합니다.

alias mv="ensure && mv"

ensure() {
    echo Are you sure about that? Type uppercase yes
    read ans
    if [[ $ans = YES ]] ; then
    return 0
    else
    return 1
    fi
}

YES이제 필요할 때마다 입력해야 합니다 mv.

답변3

별칭 mv ---> "mv -i"는 어떻습니까? 그러면 파일을 이동할 때 프롬프트가 표시됩니다.

csh에서는 이것을 ~/.cshrc에 넣을 수 있습니다:

 alias    mv     "mv -i"

관련 정보