01. 심볼릭 링크 기능 파악
※ 하드 링크 기능 알아보기
➡️ 하드 링크 생성
🖥️ A.txt 파일을 관리자 소유로 /root 디렉터리에 생성하여, 파일 안에 적당한 문구를 생성한다.
➡️ A.txt 파일을 ls -al 했을 때 나오는 column 에서 '1'이 의미하는 바가 이번 실습에서 중요하다.
⭐ 해당 파일에 링크(Link)되어 있는 파일의 개수를 표시함을 기억하면서 실습해보도록 하자.
* 하드 링크 생성
🖥️ 다른 옵션 없이 두 파일(/root 디렉터리에 있는 A.txt 원본파일 & link.txt로 새로 생성한 하드 링크 파일)을 ln(link) 명령어로 연결한다.
ls -al 을 통해 링크된 파일의 권한 확인 : 원본파일인 A.txt와 같음
링크되어 있는 파일의 개수 : 2 -> 1개 증가함
소유자 : root 권한
파일 속성 : - 로, 일반 정규 파일을 뜻함
🖥️ 링크되어 있는 하드 링크 파일인 link.txt 를 수정한 후,
원본 파일인 /root/A.txt 파일을 확인해보자.
➡️ 수정된 그대로 원본 파일에도 적용된 것을 확인할 수 있다.
🖥️ 반대로, 원본 파일인 /root/A.txt 파일을 수정한 후,
링크되어 있는 하드 링크 파일인 link.txt 파일을 확인해보자.
➡️ 수정된 그대로 하드 링크 파일에도 적용된 것을 확인할 수 있다.
1) 심볼릭 링크 생성
🖥️ ln 명령에 -s 옵션을 이용하여 심볼릭 링크를 생성해보자.
➡️ 심볼릭 링크 파일인 symlink.txt 파일 속성은 'l'로, 링크되어 있는 파일을 뜻한다.
➡️ 링크되어 있는 파일의 개수는 여전히 1개로, 심볼릭 링크 파일은 링크 되어 있는 파일의 개수를 증가시키지 않는다는 것을 알 수 있다.⭐
➡️ 권한이 원본 파일과 다르다.
➡️ 심볼릭 링크 symlink.txt가 가리키고 있는 원본 파일을 가리키고 있다.
2) 심볼링 링크 파일 수정하기
🖥️ 링크되어 있는 심볼릭 링크 symlink.txt를 수정한 후,
원본 파일인 /root/A.txt 를 확인해보자.
➡️ 수정된 그대로 원본 파일에 적용되는 것을 확인할 수 있다.
🖥️ 원본 파일인 /root/A.txt 를 수정한 후,
링크되어 있는 심볼릭 링크 symlink.txt를 확인해보자.
➡️ 수정된 그대로 심볼릭 링크 symlink.txt 에 적용되는 것을 확인할 수 있다.
3) 원본 파일과 권한의 차이가 있는 심볼릭 링크 파일 수정하기
1. 원본 파일의 소유자, 소유그룹 계정을 root 계정이 아닌, 일반 사용자 계정으로 바꿔보자.
2. 심볼릭 링크 파일인 symlink.txt 를 수정(Fixed! 를 추가했다)해보자.
➡️ 심볼릭 링크 파일은 여전히 root 계정을 가지고 있으므로, 당연히 수정이 될 것이다.
🖥️ 1. 다시 원본 파일의 소유자, 소유그룹 계정을 root 계정으로 바꿔보자.
🖥️ 2. 심볼릭 링크 파일은 일반 계정의 소유로 바꿔보자.
이때, 심볼릭 링크 파일의 권한이 여전히 root 계정임을 알 수 있다.
🖥️ 심볼릭 링크 파일은 수정 시 아래와 같이 -h 옵션을 적용해야 한다.
➡️ 심볼릭 링크 파일의 소유자, 소유그룹 권한이 일반 사용자로 잘 바뀌었음을 확인할 수 있다.
🖥️ 3. 위 조건에서 일반 사용자 계정으로 심볼릭 링크 파일을 수정하기 위해, vim 에디터로 파일을 열어보도록 하자.
➡️ [Permission Denied] 가 뜨면서, 심볼릭 링크 파일을 읽고, 쓰고, 접근하지 못한다.
⭐ 일반 사용자 계정으로 심볼릭 링크 파일을 수정이 불가하다.
❓ 왜냐? 심볼릭 링크 파일이 가리키고 있는 원본 파일의 소유자가 관리자 계정이기 때문!
💡 심볼릭 링크 파일을 생성한 상태에서, 원본 파일을 삭제하면 어떻게 될까?
🖥️ rm 커맨드를 이용하여 root 디렉토리에 있는 원본 파일인 A.txt 를 삭제해보자.
➡️ 심볼릭 링크 파일이 가리키고 있는 원본 파일이 삭제되었음에도 불구하고, 이전에 가리키고 있던 파일의 위치를 여전히 가리키고 있다.
❓ 왜냐? 이 정보들이 심볼릭 링크 파일의 메타 데이터에 기록이 되어있기 때문!
🖥️ 하드링크 파일은 어떻게 됐는지 살펴보자.
➡️ 링크되어 있는 파일의 개수가 1개로 줄어들었다.
🖥️ cat 명령어를 통해 심볼릭 링크 파일인 symlink.txt 를 열어보자.
➡️ 'No such file or directory' 가 뜬다.
❓ 왜냐? 심볼릭 링크 파일이 가리키고 있던 원본파일이 삭제되었기 때문!
➡️ 이러한 점에서.. 윈도우에서의 '바로가기'랑 심볼릭 링크 파일이 동일한 기능을 하고 있다고 생각할 수 있겠다.
🖥️ cat 명령어를 통해 하드링크 파일인 link.txt 를 열어보자.
➡️ 원본 파일이 삭제되었음에도 불구하고, 삭제되기 전에 마지막으로 원본 파일에 저장되어 있던 데이터가 여전히 남아있다.
⭐ 이것이 심볼릭 링크 파일과 하드링크 파일의 차이점이다.
4) 동일 권한의 원본 파일 재생성하기
두 가지 방법이 있다.
1. root 권한으로 파일 생성 - 일반 사용자 권한으로 chown, chgrp 전환
2. 처음에 생성할 때, 일반 사용자 권한으로도 생성할 수 있도록 root 폴더를 바꾸어 생성
2번 방법으로 생성해보겠다.
🖥️ 먼저, root 디렉토리에 있는 root라는 폴더의 권한을 살펴보자.
➡️ '700' 이라는 권한을 가지고 있다.
➡️ 일반 사용자는 파일을 생성하지 못한다는 것이다.(소유자만 읽고, 쓰고, 접근 가능하다.)
🖥️ 권한을 임시로 '777' 로 바꿔주도록 하자.
그 후, root 디렉토리 밑에 A.txt 파일을 만들어주자. (touch 명령어 이용)
➡️ 일반 사용자 권한으로 파일을 생성시킬 수 있다.
❓ 왜냐? 위에서 root 디렉토리 권한을 바꿔줬기 때문!
🖥️ vim 에디터로 /root/A.txt 파일을 열어서 메시지(Hi again!)를 작성해보자.
🖥️ 이전에 생성했다가 - 원본 파일 삭제했다가 - 원본 파일에 경로에 동일한 파일명으로 다른 원본 파일을 생성했을 때
이때까지 우리가 사용했던 symlink.txt 파일을 열어보자.
➡️ 기존에 만들어뒀던 원본 파일이 아님에도 불구하고, symlink.txt 파일을 통해서 동일한 파일명을 가진 파일에 대한 데이터가 싱크가 돼서 보이는 것을 확인할 수 있다.
🖥️ 그럼 하드 링크 파일은 어떨까?
➡️ 동일한 파일명을 가진 파일을 생성한다고 하더라도, 기존에 싱크되어있던 파일이 삭제됐기 때문에 새롭게 만들어준 파일과 연관성이 없다는 것을 확인할 수 있다.
🖥️ 이번에는 symlink.txt 파일을 바꿔보도록 하자.
셸 스크립트를 통해 작성해보자. (리다이렉션 이용)
🖥️ 이러한 수정은 원본 파일에 영향을 미칠까?
➡️ 원본 파일에 영향을 미친다!
🖥️ 위 실습을 마쳤으면, root 디렉토리 권한을 다시 '700' 으로 복구해주도록 하자!
바로 다음 글에서 레이스 컨디션 수행 실습을 해보도록 할 것이다.