입력으로 사용하는 원본 파일이 있는데, 해당 프로그램이 입력/출력으로 같은 파일명을 사용하는 경우라서..
원본을 손상시키지 않기 위해 입력으로 원본 파일에 대한 symbolic link 를 만들어서 쓰고 있는 상황으로 이해되는데.. 맞나요..?
그렇다면 입/출력 파일명을 서로 다르게 바꾸거나, 원본 파일에 대한 복사본을 사용해야 맞을 것 같군요.
symbolic link 는 원본 파일에 대한 pointer 와 같습니다.
결과적으로 원본 파일을 그대로 사용하는 것이기 때문에.. 원본 파일의 속성을 변경해야 합니다.
원본 파일에서 write 권한을 빼면, 쓰기방지는 될지 모르겠지만, 출력 내용을 저장할 수 없고..
더구나 root 라면 w 없어도 덮어 쓰기가 가능합니다.
되면 한다! / feel no sorrow, feel no pain, feel no hurt, there's nothing gained.. only love will then remain.. 『 Mizz 』
되면 한다! / feel no sorrow, feel no pain, feel no hurt, there's nothing gained.. only love will then remain.. 『 Mizz 』
"원본을 손상시키지 않기 위해 입력으로 원본 파일에 대한 symbolic link 를 만들어서 쓰고 있는 상황"은 맞습니다. 그런데, "해당 프로그램이 입력/출력으로 같은 파일명을 사용하는 경우"는 아니고요,
제 경험상 실수로 출력 파일이 입력 파일과 같은 파일명을 사용할 경우, 원본이 지워지는 대형사고가 발생했기 때문에, 이러한 사고를 미연에 방지하기 위하여 애시당초 원본을 수정하지 못하게 막고자 하는 것입니다.
질문하신 상황이 잘
질문하신 상황이 잘 이해가 안됩니다.
왜 심볼릭링크가 필요하신거지요?
원본데이터는
원본데이터는 프로그래밍할 때 입력자료로만 사용하기 때문에 망가뜨리면(!?) 안되기 때문입니다.
그런데 실수로 출력파일이름을 링크된 파일이름과 동일하게 하는 바람에,
프로그램 실행 후 출력데이터가 원본데이터를 덮어버려 원본데이터가 망가져버린 경험이 있어서요 ㅠㅠ
쓰기전에 이미
쓰기전에 이미 파일이 있는지 또는 해당 파일이 링크인지 확인하는게 맞지 싶네요.
------식은이 처------
길이 끝나는 저기엔 아무 것도 없어요. 희망이고 나발이고 아무 것도 없어.
심볼릭 링크 걸 때,
심볼릭 링크 걸 때, 파일 퍼미션을 쓰기방지가 되게 할 수는 없을까요?
안됩니다. 다른
안됩니다.
다른 방법을 통해서 해결하는 것이 나아보이네요.
예를들면 고치면 안되는 행동을 할때의 사용자와, 고쳐도 될때의 사용자를 구분하는거죠.
언제나 삽질 - http://tisphie.net/typo/
프로그래밍 언어 개발 - http://langdev.net
언제나 삽질 - http://tisphie.net/typo/
프로그래밍 언어 개발 - http://langdev.net
잘 이해가 안가는
잘 이해가 안가는 군요.
symlink 대신 복사해서 쓰면 되지 않나요?
아니면 원본을 따로 백업을 만들어 두는 것도 괜찮을 것 같은데요.
--
C FAQ: http://www.eskimo.com/~scs/C-faq/top.html
Korean Ver: http://www.cinsk.org/cfaqs/
C FAQ: http://www.eskimo.com/~scs/C-faq/top.html
Korean Ver: http://cinsk.github.io/cfaqs/
아..복사를 안하려는
아..복사를 안하려는 이유는,
파일 크기가 너무 크기 때문입니다. 복사시간 들이는 것보다 링크를 이용하여 바로 접근하는 것이 효율적일 것 같구요.
게다가 백업이 아닌바에는 동일한 파일을 여러군데 분산시키는 것은 왠지 산만해지는 느낌이 들기도 하고요.
동일한 파티션이라면
동일한 파티션이라면 하드링크를 써보세요. 지금 확인해볼수가 없어서 확실친 않은데, 하드링크라면 두 파일 각각 상관없이 권한을 줄수 있을 것 같습니다.좀더 찾아보니 하드링크도 마찬가지로 하나바꾸면 양쪽다 바뀐다는 군요. 위는 무시해주세요.
그냥 파일의 소유자, 그룹권한으로 해결할 수 없는 문제인건가요?
루트만 수정할 수 있게하고, 평소엔 사용자권한으로 읽기만 하다가 수정이필요할 땐 루트로 수정하는 방식으로 하면 될것같은데요...
꼭 루트일 필욘 없고 수정전용 사용자를 따로 두고 su를 쓰면 될것같습니다.
음 ..
입력으로 사용하는 원본 파일이 있는데, 해당 프로그램이 입력/출력으로 같은 파일명을 사용하는 경우라서..
원본을 손상시키지 않기 위해 입력으로 원본 파일에 대한 symbolic link 를 만들어서 쓰고 있는 상황으로 이해되는데.. 맞나요..?
그렇다면 입/출력 파일명을 서로 다르게 바꾸거나, 원본 파일에 대한 복사본을 사용해야 맞을 것 같군요.
symbolic link 는 원본 파일에 대한 pointer 와 같습니다.
결과적으로 원본 파일을 그대로 사용하는 것이기 때문에.. 원본 파일의 속성을 변경해야 합니다.
원본 파일에서 write 권한을 빼면, 쓰기방지는 될지 모르겠지만, 출력 내용을 저장할 수 없고..
더구나 root 라면 w 없어도 덮어 쓰기가 가능합니다.
되면 한다! / feel no sorrow, feel no pain, feel no hurt, there's nothing gained.. only love will then remain.. 『 Mizz 』
되면 한다! / feel no sorrow, feel no pain, feel no hurt, there's nothing gained.. only love will then remain.. 『 Mizz 』
감사합니다...
"원본을 손상시키지 않기 위해 입력으로 원본 파일에 대한 symbolic link 를 만들어서 쓰고 있는 상황"은 맞습니다. 그런데, "해당 프로그램이 입력/출력으로 같은 파일명을 사용하는 경우"는 아니고요,
제 경험상 실수로 출력 파일이 입력 파일과 같은 파일명을 사용할 경우, 원본이 지워지는 대형사고가 발생했기 때문에, 이러한 사고를 미연에 방지하기 위하여 애시당초 원본을 수정하지 못하게 막고자 하는 것입니다.
가령, 원본파일이름으로 쓰기를 시도할 경우 에러를 발생시키면 될 듯도...
전달이 잘 되었는지 모르겠습니다 ^^;;
음 ..
그럼 다른 분들이 말씀하신 대로, write 퍼미션 제거로 충분할 듯 싶네요.
물론 root 로 실행하는 경우에는 무용지물이겠지만요..
SELinux 라던가, ACL 로도 가능할 것 같기는 한데, 이쪽은 익숙한 부분은 아니라서...
아니면 프로그램에서 입력파일명과 출력파일명이 같은 경우..
에러를 찍던가 무조건 출력 파일명을 변경하도록 수정하시는 편이 안전해 보입니다.
되면 한다! / feel no sorrow, feel no pain, feel no hurt, there's nothing gained.. only love will then remain.. 『 Mizz 』
되면 한다! / feel no sorrow, feel no pain, feel no hurt, there's nothing gained.. only love will then remain.. 『 Mizz 』
다양한 관심 덕분에
다양한 관심 덕분에 해결책에 근접해가고 있습니다.
write 퍼미션 제거...가 가장 좋아보이네요.
링크 걸때 자동으로 r-- 만 되게 한다면, 문제가 해결되는데요...
링크를 걸면 rwx가 다 작동을 하게 나오네요.
쩝...
음 ..
link 파일의 퍼미션은 아무런 의미가 없습니다. 아마 변경조차 안 될겁니다.
실제 원본 파일의 퍼미션을 체크하기 때문에, 얘만 관리하시면 됩니다.
되면 한다! / feel no sorrow, feel no pain, feel no hurt, there's nothing gained.. only love will then remain.. 『 Mizz 』
되면 한다! / feel no sorrow, feel no pain, feel no hurt, there's nothing gained.. only love will then remain.. 『 Mizz 』
댓글 달기