등의 파일을 심볼릭 링크로 바꾸는 것이 좋은 생각입니까?

등의 파일을 심볼릭 링크로 바꾸는 것이 좋은 생각입니까?

나는 기계를 자주 바꾸지는 않지만 하나의 기계에 얽매이고 싶지 않습니다. 내가 하드웨어를 업그레이드하지 않는 이유는 대개 새 시스템을 설정하고 싶지 않기 때문입니다.

지금까지 나는 새 컴퓨터에 쉽게 백업하고 배포할 수 있도록 대부분의 내용을 홈 디렉터리에 중앙 집중화하려고 노력했습니다.

가장 큰 문제는 몇 가지(보통 사소한) 변경을 했지만 해당 파일이 없으면 새 컴퓨터에서 작동하지 않는 구성 파일(아마도 수백 개)입니다.

스크립트를 만들 생각이 있어요인상등의 파일을 내 홈 디렉토리에 배치하고 원본 파일을 심볼릭 링크로 바꿉니다. 그런 다음 새 컴퓨터에서 가져온 파일을 확인하고 원본 파일을 심볼릭 링크로 바꾸는 또 다른 스크립트를 갖게 됩니다.

이것이 얼마나 혼란스럽게 들릴지 잘 모르겠습니다. 여기에 간단한 예가 있습니다.

#!/bin/bash

FILE=$(realpath $1)
TARGET=$(realpath ~/snatched)$FILE

mkdir -p $TARGET
mv $FILE $TARGET
ln -s $TARGET $FILE

그런 다음 실행

snatch /etc/hosts

원래 위치에 들러 심볼릭 링크를 만듭니다 /etc/hosts.~/snatched/etc/hosts

물속에 있는 암석이 걱정되고 나중에 후회하게 될 일은 기본적으로 경험이 많은 사용자의 조언입니다.

감사해요!

답변1

아니요!

  1. 비표준 시스템을 갖게 될 것입니다. 파일에 대한 향후 시스템 업데이트로 인해 /etc기호 링크가 중단됩니다.
  2. 많은 보안 및 인증 프로그램은 구성 파일을 /etc파일이 아닌 공격의 징후로 간주하여 작동하지 않습니다.
  3. 비표준 구성을 갖게 됩니다. 앞으로도 매번 기억해주실 거죠? 당신을 대신할 것인가 아니면 보조할 것인가?
  4. etckeeper도움이 될 수 있는 도구( , tar, ...) 가 있습니다 .

마지막으로 이것은 다시 규칙입니다!

파일 시스템 계층 표준을 참조 https://refspecs.linuxfoundation.org/fhs.shtml하거나 읽어보세요 man hier.

상황이 어디로 가는지 설명합니다.

답변2

홈 디렉터리가 루트 파일 시스템에 있으면 작동할 수 있습니다. 최대. 몇 가지 매우 중요한 주의 사항이 있습니다.

특정 보안에 민감한 파일(예: /etc/sudoers)은 심볼릭 링크로 교체되면 유효하지 않게 될 수 있습니다. 이는 파일을 사용하는 하위 시스템이나 도구가 파일의 실제 경로를 구체적으로 확인하기 때문입니다. 심볼릭 링크를 찾으면 일반적으로 일종의 보안 취약성 시도가 진행 중이라고 가정하고 일반적으로 심볼릭 링크 파일의 내용을 완전히 무시하고 기본값으로 돌아가거나 모든 것을 거부하여 안전(보안) 측면을 유지합니다. .

그러나 별도의 파일 시스템이 있는 경우(일반적으로 권장되는 접근 방식) /home아직 마운트되지 않은 상태에서 이를 시작하면 어떤 일이 발생할지 고려하십시오. 부팅이 마운트 지점으로 진행될 /home때까지 모든 "스냅된" 파일을 읽을 수 없습니다(심볼릭 링크가 손상되었기 때문에) . /home부팅 프로세스의 초기 단계에 이러한 파일이 필요한 경우 해당 단계가 실패할 가능성이 높습니다.

극단적인 예는 "rob"하는 경우입니다 /etc/fstab. /home파일 시스템이 아직 마운트되지 않았으므로 시스템은 이를 읽을 수 없으므로 /etc/fstab특정 파일 시스템을 마운트해야 한다는 것을 알지 못합니다 /home. 시스템은 루트 파일 시스템이 마운트된 상태에서만 부팅되며 /home사용 가능 여부에 의존하는 모든 서비스는 실패할 수 있습니다.

답변3

수정 중인 파일이 패키지 관리 시스템에서 "구성 파일"로 간주되어 덮어쓰여지지 않는 경우 제안하는 내용은 다음과 같습니다.가능한일부 상황에서는 작동합니다.

/etc/hosts예를 들어, 홈 디렉토리가 NFS 마운트된 경우 오류를 확인할 수 없고 NFS 마운트가 실패할 수 있으므로 실패를 예상해야 합니다 . fstab에서 IP 주소를 사용하더라도 문제를 일으키는 종속성 문제가 있을 수 있습니다.

홈 디렉토리가 NFS가 아닌 경우 "동기화 유지" 문제를 처리해야 합니다.

더 나은 해결책은 모든 머신에 "플레이북"(또는 스크립트 등)을 적용할 수 있는 ansible과 같은 구성 관리 시스템을 사용하는 것입니다. 따라서 /etc/hosts를 직접 수정하는 대신 플레이북 구성을 수정한 다음 이를 모든 시스템에 적용합니다.

또는 신뢰할 수 있는 소스의 로컬 "/etc/myconfig" 유형 디렉터리와 rsync콘텐츠를 보유합니다(구성 솔루션과 유사하지만 구조가 더 적음).

답변4

다른 사람들은 그것이 나쁜 생각이고 그들이 옳으며 생각보다 더 많은 이유가 있다고 강조합니다.

좀 더 긍정적으로 말하자면, 완벽하게 합리적인 목표를 달성하기 위해 제가 한 일은 다음과 같습니다.

  1. 기본 설정을 좋아하는 방법을 배우십시오. 그들을 아끼는 사람들이 신중하게 고려하고 그것이 최고라고 생각하기 때문에 그것은 기본값입니다. 나는 수십 년과 여러 기계를 통해 이것이 마찰이 가장 적은 방법이라는 것을 배웠기 때문에 그 사람이 너무 빨리 추측하는 것에 적극적으로 저항합니다. 나는 업무 시간 동안 다양한 기계를 사용하는데, 어떤 기계는 다른 기계보다 개인화가 훨씬 덜 되어 있고 기본 또는 최소 구성에 만족합니다. vi이는 이것이 반드시 번거롭지는 않다는 것을 의미합니다.

  2. 개인 도트 파일( ~/.*rc 파일)을 저장소에 넣고 새 시스템에 복제합니다. 내 ~/.zshrc~/.bashrc파일(기본 설정이 있지만 의도적으로 설정하지 않음)또한특정 컴퓨터에서 어떤 것을 사용하고 있는지 걱정하려면 일부 환경 변수를 설정한 다음 사용된 실제 쉘과 일치하도록 파일을 source $HOME/checkouts/.../bashrc조건화해야 합니다. bashrcinit.el900개 이상의 행은 다음과 같습니다.방법원래 있어야 할 것보다 더 크지만, 그 중 상당수는 제가 첫 번째 항목에 대해 엄격하지 않았던 수십 년 동안의 오랜 중복이며, 제가 눈치채지 못한 채 크기가 절반으로 줄어들 수 있었습니다.

  3. 손가락으로 기본값을 기억할 수 없는 부분에 대해 를 실행하고 unalias -a여러 함수와 환경 변수를 정의하는 원격 셸에 붙여넣을 수 있는 문자열이 있습니다.

  4. 나는 첫 번째 요점을 염두에 두고 실제로 새 상자에 적용하고 싶은 구성 조정 텍스트 목록을 가지고 있습니다.

  5. 다른 답변 중 하나는 Knicks를 언급했습니다. 닉스 포장중대하다.

  6. 만약 당신이 정말로 이 일을 하고 있다면많은기계(...정말?! 알았어...) 그리고안시푸르조사해 볼 가치가 있을 것 같습니다.

  7. 저는 쉘 구성보다는 전반적인 시스템 구성에 중점을 두고 /etc버전 관리에 중점을 두고 로컬 변경 사항의 결과를 커밋하는 것을 강조합니다. 이것은 다른 컴퓨터에 무엇이든 복사하는 데 도움이 되지 않습니다.생각하다다른 상자에 복사하는 것에 대해! ) 하지만 이해하게 되었어요무엇특정 시스템을 변경하고 시기와 이유를 문서화했습니다.

관련 정보