명령을 실행하는 동안 touch file
오류가 발생했습니다.
touch: cannot touch 'file': permission denied
파일을 만들려는 디렉터리에 대해 777 권한이 있어도 특정 사용자로 파일을 만들 수 없지만 일부 다른 사용자가 해당 디렉터리에서 파일을 만들 수 있습니다.
근본 원인을 찾으려고 노력하고 있지만 strace
strace 출력을 이해할 수 없습니다. 내가 생각하기에 strace 출력과 관련이 있는 줄은 다음과 같습니다.
open("file", O_WRONGLY|O_CREATE|O_NOCTTY|O_NONBLOCK, 0666) = -1 EACESS (Permission denied)
또한 특정 권한이 있는 파일을 생성하려고 시도했지만 권한 오류가 발생했습니다. 시도한 명령은 다음과 같습니다.
install -b -m 511 /dev/null file
답변1
파일 시스템 액세스 제어 목록에 의해 재정의될 수 있습니다. 어쩌면 리눅스 ACL일까요? 를 사용하여 이를 결정할 수 있습니다 lsfacl
.
현재 ACL 가져오기- getfacl을 사용하여 모든 파일이나 디렉터리의 권한을 확인할 수 있습니다. 아래 예를 참조하세요.
# getfacl dir/ file: dir owner: root group: root user::rwx group::--- other::---
ACL을 사용하여 권한 설정- 액세스 제어 목록에서 상속된 디렉터리에 대해 "모드" 0777을 설정할 수 있습니다.setfacl -d -m o::rwx /directory
답변2
나는 또한이 문제에 직면했습니다. 나에게 문제는 상위 디렉토리에 필요한 rwx 권한을 부여했다는 것입니다.
chmod 777 parent_dir
touch
하지만 권한이 없는 하위 디렉터리의 파일에 액세스하려고 합니다 .
> touch parent_dir/subdir/file.txt
touch: cannot touch 'parent_dir/subdir/file.txt': Permission denied
이것이 문제라면 찾고 있는 명령은 다음과 같습니다.
chmod -R 777 parent_dir
답변3
때로는 파일을 생성하려는 현재 디렉터리에 대한 충분한 권한이 있지만 계층 구조의 상위 디렉터리에 대한 권한이 없는 경우가 있습니다.
루트 디렉터리에서 현재 디렉터리까지 권한 문제가 있는지 한 번 확인해 보시기 바랍니다.
또 다른 이유는 selinux가 활성화되어 있는지 확인하는 것입니다.