실수로 삭제하지 않도록 폴더와 해당 파일을 읽기 전용으로 만들려고 합니다.
나는 달렸다
chmod -R 444 myfolder/
하지만 폴더를 마우스 오른쪽 버튼으로 클릭하고 속성 > 권한으로 이동하면 여전히 읽기 및 쓰기라고 표시됩니다. 파일을 수정해서 테스트도 해보았더니 수정이 성공했습니다.
또한 파일 관리자 GUI에서 권한을 읽기 전용으로 변경하려고 하면 즉시 읽기 및 쓰기 권한으로 전환됩니다.
내 생각에 4는 읽기 전용 액세스를 의미한다는 것입니다. 맞습니까?
편집하다:
내 문제는 드라이브를 마운트하는 방법과 관련이 있다고 생각합니다. 이것은 fstab 항목입니다.
UUID=6F7C5E910607D747 /media/storage1 ntfs-3g uid=1000,gid=1000,umask=0022,auto,rw 0 0
답변1
노트
이 게시물은 OP가 Linux 시스템에서 Windows 파일 시스템(NTFS) 사용에 대한 추가 정보를 제공하기 전에 게시되었습니다. 내 생각에는 그가 로컬 Linux 파일 시스템을 사용하고 있는 것 같습니다.
소유자에 대한 읽기, 쓰기 및 실행 가능 플래그와 그룹에 대한 읽기, 실행 가능 플래그를 설정해야 합니다.내 디렉토리. 이 폴더에 들어가려면 실행 가능한 플래그가 필요합니다. 이것이 없으면 cd myfolder
이 그룹이나 다른 그룹에 속한 사용자로 행동하려고 할 때 "권한 거부" 메시지가 표시됩니다.
chmod 755 myfolder
그룹과 다른 사람에게 액세스 권한을 부여하거나,
chmod 750 myfolder
그룹에만 액세스 권한을 부여하고 다른 사람은 제외합니다.
소유권을 다음으로 설정뿌리및 그룹사용자:
sudo chown root:users myfolder
이제 루트만 myfolder에 새 파일을 만들 수 있습니다. sudo touch mytest
새 파일은 소유권 root
과 그룹을 갖습니다 root
.
새 파일을 강제로 그룹 가져오기사용자, SGID 비트를 myfolder로 설정해야 합니다.
이는 두 가지 방법으로 수행할 수 있으며 결과는 동일합니다.
sudo chmod +s myfolder
(sgid 비트 추가) 또는
sudo chmod 2755 myfolder
(동일 + 사용자, 그룹, 기타)
수행하면 ls -l
다음과 같이 표시됩니다.
drwsr-sr-x myfolder # last x optional depending on your others setting
sudo touch mytest2
지금 이라면 mytest2는 myfolder
644 권한을 가진 root
그룹 에 속해 있습니다.users
기존 파일은 다음 위치에 있습니다.내 파일다음과 같이 처리됩니다.
cd myfolder
sudo chown root:users *
sudo chmod 644 *
1 = execute
2 = write
4 = read
읽기 + 쓰기 = 4 + 2 = 6
추신: 루트는 모든 사용자 또는 사용자 그룹으로 대체될 수 있습니다.
고쳐 쓰다 @Rastapopoulos의 요청에 따른 추가 설명
myfolder가 다음에 속한다고 가정합니다.톰
이렇게 하면 chmod -R 444 myfolder/
폴더를 사용자(tom), 그룹, 기타 및 그 안에 있는 모든 파일에 대해 읽기 전용으로 만들므로 톰(루트 제외)도 포함하여 누구도 폴더에 들어갈 수 없습니다. 실행 가능한 로고.
톰을 할 때 아직도 폴더에 들어가질 못해요 chmod 644 myfolder
. 올바른 방법은 tom에 대해 읽기, 쓰기 및 실행 가능 플래그를 설정하고 group/other에 대해 읽기 실행 가능 플래그를 설정하는 것입니다.
(executable flag = 1)
즉. chmod 755 myfolder
(파일이 아닌 내 폴더의 권한만 설정)
다음 파일에 대한 권한만 변경하세요.내 파일그러나 myfolder의 권한 대신 다음을 수행합니다.
chmod 444 myfolder/*
하지만 여전히 소유자/Tom으로 파일을 편집/쓰기를 원할 수 있으므로 그렇게 하는 것이 좋습니다.
chmod 644 myfolder/* (or 640)
답변2
이 질문에서는 업데이트 항목이 /etc/fstab
매우 중요합니다.
UUID=6F7C5E910607D747 /media/storage1 ntfs-3g uid=1000,gid=1000,umask=0022,auto,rw 0 0
즉, NTFS 파일 시스템이고, uid
및 gid
옵션 umask
은 기본적으로 실제 NTFS ACL과 관계없이 해당 디스크에 대한 모든 Linux 표시 권한을 하드코딩합니다. 기본적으로 이러한 마운트 옵션은 사용자에게 파일 시스템과 해당 파일에 대한 전체 액세스 권한을 부여합니다. 일반 명령은 마운트 옵션에 의해 할당된 권한을 변경할 수 없습니다.
일부 일회성 작업을 통해 실제 NTFS 파일 및 디렉터리 권한을 대신 사용할 수 있습니다.
먼저 UUID에 해당하는 장치 이름을 찾습니다.
sudo blkid | grep 6F7C5E910607D747 | cut -d : -f 1
그런 다음 파일 시스템을 마운트 해제하고 실행하면 ntfsusermap /dev/<device w/the NTFS filesystem you unmounted>
파일 시스템의 일부 파일이 나열되고 파일을 소유한 Windows 사용자/그룹에 가장 적합한 사용자 또는 그룹을 식별하라는 메시지가 표시됩니다. 충분한 사용자/그룹이 식별되면 명령은 UserMapping
현재 디렉터리에 파일을 생성합니다. (예제를 실행하세요:http://jp-andre.pagesperso-orange.fr/ntfsusermap.html)
이제 NTFS 파일 시스템을 다시 마운트하고 정확히 동일한 이름의 디렉터리를 만들고 해당 디렉터리에 파일을 배치합니다 /media/storage1/.NTFS-3G
. UserMapping
NTFS 파일 시스템을 다시 마운트 해제하고 uid
및 옵션 gid
을 제거합니다 umask
.
세 번째로 NTFS 파일 시스템을 마운트하면 이제 파일 권한에 실제 NTFS ACL이 반영됩니다. 이제 일반적인 Linux 명령을 사용하여 파일 및 디렉터리 권한을 수정할 수 있으며 Windows에서 파일 시스템을 사용할 때 변경 사항이 적용됩니다.
답변3
이 chattr +i <file>
명령을 사용하여 파일을 변경할 수 없게 만들 수 있습니다. 나는 이것을 테스트하지는 않았지만 기본 파일 시스템이 ntfs일 때 작동할 것이라고 확신합니다.
chattr -i <file>
그런 다음 불변 플래그를 제거 해야 합니다 .
업데이트: 주석에서 지적했듯이 이는 ext* 파일 시스템에서만 작동합니다.