사용자의 홈 디렉터리에 있는 파일을 해당 사용자가 편집할 수 없도록 만들고 홈 디렉터리는 편집 가능한 상태로 두려면 어떻게 해야 합니까?

사용자의 홈 디렉터리에 있는 파일을 해당 사용자가 편집할 수 없도록 만들고 홈 디렉터리는 편집 가능한 상태로 두려면 어떻게 해야 합니까?

나는 많은 chmod와 chown 및 이들의 조합을 시도했습니다.

나는 여전히 해당 사용자의 홈 디렉터리에 있는 파일을 해당 사용자가 읽을 수는 있지만 쓰기나 실행은 불가능하게 하고 싶습니다. 그러나 나는 여전히 해당 사용자가 사용자의 홈 폴더에 쓸 수 있도록 하여 사용자가 폴더에 파일을 추가할 수는 있지만 이러한 명령을 실행한 폴더 내의 파일을 삭제할 수는 없도록 하고 싶습니다.

더 많은 데이터:

  1. 이 홈 디렉터리는 암호화되어 있습니다.
  2. bash 스크립트에 넣을 수 있는 한 내가 요구하는 솔루션이 여러 줄인지 여부는 별로 신경 쓰지 않습니다.

답변1

내가 아는 유일한 방법은 이름에서 알 수 있듯이 파일 속성을 변경하는 chattr(1)을 사용하는 것입니다.

속성 섹션에서 다음을 읽을 수 있습니다.

"'i' 속성이 있는 파일은 수정할 수 없습니다. 삭제하거나 이름을 바꿀 수 없고, 파일에 대한 링크를 만들 수 없으며, 파일의 메타데이터 대부분을 수정할 수 없으며, 파일을 쓰기 모드로 열 수 없습니다. 수퍼유저 또는 소유자 CAP_LINUX_IMMUTABLE 기능이 있는 프로세스만 이 속성을 설정하거나 지울 수 있습니다.

--실제 사례:

: lsattr example.file
------------------- example.file
: ls -lh example.file 
-rw------- 1 tntx tntx 15 Dec 23 20:43 example.file
: su -
Password:
root@foo: chattr +i example.file
root@foo: exit
logout
: lsattr example.file 
----i-------------- example.file
: cat example.file 
testing chattr
: echo "adding text" >> example.file 
ksh93: example.file: cannot create [Operation not permitted]

Same with vi:
Read-only file, not written; use ! to override.
:w!
Error: example.file: Operation not permitted.

And then trying to mv:
: mv example.file example.file2 
mv: cannot move 'example.file' to 'example.file2': Operation not permitted

What about cp:
: ls -lh example.file*
-rw------- 1 tntx tntx 15 Dec 23 20:43 example.file
-rw------- 1 tntx tntx 15 Dec 23 21:02 example.file2
: /usr/bin/lsattr example.file*
----i-------------- example.file
------------------- example.file2

따라서 사용자만 읽을 수 있도록 파일을 잠글 수 있지만 자유롭게 cp(1)하고 새 파일에서 편집할 수 있기 때문에 실패합니다.

답변2

사용자가 모드를 변경할 수 있으므로 chmod로는 충분하지 않습니다.

먼저 사용자가 파일을 편집하지 못하도록 방지합니다.

  • chmod go-w «파일 이름»
  • chown «다른 사용자» «파일 이름»

이제 사용자는 여전히 파일을 삭제할 수 있으므로 이를 방지해 보겠습니다. (파일이 포함된 디렉터리에서 파일을 제거하면 파일이 삭제됩니다. 중지해야 합니다.)

  • chown «다른 사용자» «디렉토리 포함»
  • chmod +t «디렉토리 포함»

이제 사용자가 쓸 수 있는 포함 디렉터리를 만듭니다.

  • chown «사용자 이름» «디렉토리 포함»
  • chmod g+w «디렉토리 포함»

실행을 막을 수는 없습니다. 실행 비트를 설정할 수는 없지만 사용자가 파일을 읽을 수 있으면 복사할 수 있습니다. 복사할 수 있으면 실행 가능하게 만들 수 있습니다.

관련 정보