질문) 심볼릭 링크 파일의 권한 변경

ytt123의 이미지

초보 질문입니다.

심볼릭링크를 걸어준 후, 파일을 변경하면 원본 파일도 변경이 됩니다.
제 작업에는 치명적인 문제인지라....링크를 걸도라도 원본 파일이 수정되는 일이 없게 하고 싶습니다.
방법이 있을까요?

웹에서 찾아봤는데....먼소린지 도통 이해가 되지를 않는군요..ㅠㅠ

klyx의 이미지

질문하신 상황이 잘 이해가 안됩니다.
왜 심볼릭링크가 필요하신거지요?

ytt123의 이미지

원본데이터는 프로그래밍할 때 입력자료로만 사용하기 때문에 망가뜨리면(!?) 안되기 때문입니다.

그런데 실수로 출력파일이름을 링크된 파일이름과 동일하게 하는 바람에,

프로그램 실행 후 출력데이터가 원본데이터를 덮어버려 원본데이터가 망가져버린 경험이 있어서요 ㅠㅠ

nthroot의 이미지

쓰기전에 이미 파일이 있는지 또는 해당 파일이 링크인지 확인하는게 맞지 싶네요.

------식은이 처------
길이 끝나는 저기엔 아무 것도 없어요. 희망이고 나발이고 아무 것도 없어.

ytt123의 이미지

심볼릭 링크 걸 때, 파일 퍼미션을 쓰기방지가 되게 할 수는 없을까요?

mithrandir의 이미지

안됩니다.
다른 방법을 통해서 해결하는 것이 나아보이네요.

예를들면 고치면 안되는 행동을 할때의 사용자와, 고쳐도 될때의 사용자를 구분하는거죠.

언제나 삽질 - http://tisphie.net/typo/
프로그래밍 언어 개발 - http://langdev.net

언제나 삽질 - http://tisphie.net/typo/
프로그래밍 언어 개발 - http://langdev.net

cinsk의 이미지

잘 이해가 안가는 군요.

symlink 대신 복사해서 쓰면 되지 않나요?

아니면 원본을 따로 백업을 만들어 두는 것도 괜찮을 것 같은데요.

--
C FAQ: http://www.eskimo.com/~scs/C-faq/top.html
Korean Ver: http://www.cinsk.org/cfaqs/

ytt123의 이미지

아..복사를 안하려는 이유는,
파일 크기가 너무 크기 때문입니다. 복사시간 들이는 것보다 링크를 이용하여 바로 접근하는 것이 효율적일 것 같구요.
게다가 백업이 아닌바에는 동일한 파일을 여러군데 분산시키는 것은 왠지 산만해지는 느낌이 들기도 하고요.

klyx의 이미지

동일한 파티션이라면 하드링크를 써보세요. 지금 확인해볼수가 없어서 확실친 않은데, 하드링크라면 두 파일 각각 상관없이 권한을 줄수 있을 것 같습니다.

좀더 찾아보니 하드링크도 마찬가지로 하나바꾸면 양쪽다 바뀐다는 군요. 위는 무시해주세요.

그냥 파일의 소유자, 그룹권한으로 해결할 수 없는 문제인건가요?
루트만 수정할 수 있게하고, 평소엔 사용자권한으로 읽기만 하다가 수정이필요할 땐 루트로 수정하는 방식으로 하면 될것같은데요...
꼭 루트일 필욘 없고 수정전용 사용자를 따로 두고 su를 쓰면 될것같습니다.

ymir의 이미지

입력으로 사용하는 원본 파일이 있는데, 해당 프로그램이 입력/출력으로 같은 파일명을 사용하는 경우라서..
원본을 손상시키지 않기 위해 입력으로 원본 파일에 대한 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 』

ytt123의 이미지

"원본을 손상시키지 않기 위해 입력으로 원본 파일에 대한 symbolic link 를 만들어서 쓰고 있는 상황"은 맞습니다. 그런데, "해당 프로그램이 입력/출력으로 같은 파일명을 사용하는 경우"는 아니고요,
제 경험상 실수로 출력 파일이 입력 파일과 같은 파일명을 사용할 경우, 원본이 지워지는 대형사고가 발생했기 때문에, 이러한 사고를 미연에 방지하기 위하여 애시당초 원본을 수정하지 못하게 막고자 하는 것입니다.

가령, 원본파일이름으로 쓰기를 시도할 경우 에러를 발생시키면 될 듯도...

전달이 잘 되었는지 모르겠습니다 ^^;;

ymir의 이미지

그럼 다른 분들이 말씀하신 대로, 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 』

ytt123의 이미지

다양한 관심 덕분에 해결책에 근접해가고 있습니다.

write 퍼미션 제거...가 가장 좋아보이네요.
링크 걸때 자동으로 r-- 만 되게 한다면, 문제가 해결되는데요...
링크를 걸면 rwx가 다 작동을 하게 나오네요.

쩝...

ymir의 이미지

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 』

댓글 달기

Filtered HTML

  • 텍스트에 BBCode 태그를 사용할 수 있습니다. URL은 자동으로 링크 됩니다.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>
  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.

BBCode

  • 텍스트에 BBCode 태그를 사용할 수 있습니다. URL은 자동으로 링크 됩니다.
  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param>
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.

Textile

  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • You can use Textile markup to format text.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>

Markdown

  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • Quick Tips:
    • Two or more spaces at a line's end = Line break
    • Double returns = Paragraph
    • *Single asterisks* or _single underscores_ = Emphasis
    • **Double** or __double__ = Strong
    • This is [a link](http://the.link.example.com "The optional title text")
    For complete details on the Markdown syntax, see the Markdown documentation and Markdown Extra documentation for tables, footnotes, and more.
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>

Plain text

  • HTML 태그를 사용할 수 없습니다.
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.
  • 줄과 단락은 자동으로 분리됩니다.
댓글 첨부 파일
이 댓글에 이미지나 파일을 업로드 합니다.
파일 크기는 8 MB보다 작아야 합니다.
허용할 파일 형식: txt pdf doc xls gif jpg jpeg mp3 png rar zip.
CAPTCHA
이것은 자동으로 스팸을 올리는 것을 막기 위해서 제공됩니다.