RAIDiator OS의 ext3 파일 시스템에서 루트 사용자로 디렉토리의 단일 파일에 대한 권한이 거부되었습니다.


9

데비안을 기반으로하는 "스토리지"라는 ReadyNAS 상자가 있습니다. 나는 루트로 그것을 ssh 할 수 있습니다. 웹 서버를 재구성하려고하는데 이해하지 못하는 파일 권한 문제가 발생합니다. 나는 /etc/frontview/apache/apache.pem뿌리처럼 아무것도 할 수 없습니다 ! 동일한 디렉토리의 다른 파일과 비교할 때 특별한 권한이없는 것으로 보이며 그와 함께 작업 할 수 있습니다.

storage:~# whoami 
root
storage:~# cd /etc/frontview/apache/   
storage:/etc/frontview/apache# ls -lah apache.pem*         
-rw-------    1 admin    admin        4.0k Jul 10  2013 apache.pem
-rw-------    1 admin    admin        4.0k Jun  9 05:57 apache.pem.2017-02-04
-rw-------    1 admin    admin        1.5k Jun  9 05:57 apache.pem.orig
storage:/etc/frontview/apache# touch apache.pem            
touch: creating `apache.pem': Permission denied
storage:/etc/frontview/apache# touch apache.pem.2017-02-04 
storage:/etc/frontview/apache# rm -f apache.pem
rm: cannot unlink `apache.pem': Operation not permitted

만질 수없는이 파일의 특별한 점은 무엇입니까? 삭제할 수 없습니다. 그것에 대한 권한을 변경할 수 없습니다. 소유자를 변경할 수 없습니다.

디렉토리는 괜찮은 것 같습니다. 남은 공간이 있으며 읽기 전용으로 마운트되지 않습니다. 사실 같은 디렉토리에서 다른 파일을 편집 할 수 있습니다.

# ls -ld /etc/frontview/apache
drwxr-xr-x    8 admin    admin        4096 Jun  9 05:44 /etc/frontview/apache
# df /etc/frontview/apache
Filesystem           1k-blocks      Used     Available Use% Mounted on
/dev/hdc1            2015824        504944   1510880   26% /

ls -ld /etc/frontview/apache및 의 출력도 표시하십시오 df /etc/frontview/apache. 폴더가 디스크 공간에 마운트되어 ro있습니까?
Ned64

그 정보를 질문에 추가했습니다. 그것은 모두 나에게 잘 보인다. 어쨌든, 그것이 문제라면 그 디렉토리의 다른 모든 파일을 편집 할 수는 없다고 생각합니다.
Stephen Ostermiller

@RunCMD 제목과 태그에 더 구체적인 정보를 추가했습니다. 파일 시스템은 ext3으로 표시되므로 ext3은 불변을 지원하는 것으로 보입니다. # mount:/dev/hdc1 on / type ext3 (rw,noatime)
Stephen Ostermiller

1
Solaris는 ext3 또는 ARM CPU를 지원하지 않으므로 Solaris를 기반으로하지 않을 수 있습니다.
alanc

1
질문에서 Solaris를 제거했습니다. 더 읽어 보면 Debian Etch를 기반으로 할 수 있습니다.
Stephen Ostermiller

답변:


9

방금 문제를 발견했습니다. "불변"속성이 해당 파일에 설정되었습니다. ls표시하지 않습니다. 그것을 보려면 다른 명령이 필요합니다.

# lsattr apache.pem*
----i--------- apache.pem
-------------- apache.pem.2017-02-04
-------------- apache.pem.orig

불변 비트를 제거하면 해당 파일을 편집 할 수 있습니다.

# chattr -i apache.pem
# touch apache.pem

1
확장 속성을 확인하라는 "핫 네트워크 질문"에서이 질문을 클릭했지만 이미 수행 한 것 같습니다. (IDK가 GNU에 ls속성을 나열 할 수있는 옵션이없는 이유를 잊어 버렸지 만 쿼리를위한 시스템 호출조차 이식성이 없어서 별도의 유틸리티로 구현하는 것이 더 쉬웠을 것입니다.)
Peter Cordes

@PeterCordes 동의합니다. 인터넷 검색 후 "파일 덮어 쓰기에서 업그레이드 중지"와 같은 것을 설정 한 것이 확실하지만 몇 년 전이었고 분명히 잊어 버렸습니다. ls해당 비트를 보여 주거나 내가 사용한 다른 명령 중 하나가 권한이 거부 된 이유에 대해 더 도움이되고 구체적인 오류 메시지 가있는 경우 좋을 것 입니다.
Stephen Ostermiller

모두 touch알고있는 시스템 호출로 open("apache.pem", O_WRONLY|O_CREAT|..., 0666)실패했습니다 EACCESS. (사용 strace -efile touch apache.pem이 만드는 파일 관련 시스템 호출을 볼 수 있습니다). 해당 시스템 호출에 대한 매뉴얼 페이지에서 알 수 있듯이 EACCESS에는 여러 가지 이유가있을 수 있으며 대부분 파일 자체가 아닌 상위 디렉토리를 포함합니다. 시스템 호출이 오류를 반환 한 이유 를 정확하게 추론 하기위한 코드 작성 은 다른 파일 시스템과 OS가 다르기 때문에 매우 어려울 것입니다 ...
Peter Cordes

어쨌든, 보편적 인 규칙은 무언가가 실패하면 오류 코드 ( errno)에 대한 오류 문자열을 찾아서 인쇄한다는 것입니다. (C 표준 라이브러리 perror기능 또는 이와 동등한 기능 사용 ). 이것은 사용자가 문제를 신속하게 찾을 수있는 힌트로 충분하지 않은 경우는 드물지만 대부분의 경우 매우 잘 작동합니다. (특히 strace어떤 작업에서 오류가 발생했는지 확실하지 않은 경우에 결합 할 경우) 완벽하지는 않지만 훨씬 나빠질 수 있습니다 (MS Windows는 오류 코드를 Google에 제공하는 경우가 가장 좋습니다)
Peter Cordes

방금 놀았는데 (없이 ) 프롬프트가 chattr +i나타났습니다 . 왜냐하면 . POSIX는 쓰기 방지 된 파일을 제거하기 전에 기본적으로 확인 메시지를 표시 해야 합니다. 당신이 사용하지 않았다면 더 큰 단서를 얻었을 것 입니다. : / 는 실제로 쓰기 위해 열려있는 것처럼 권한을 확인하도록 커널에 요청하므로 ACL과 속성을 선택합니다. rm foo-frm: remove write-protected regular file ‘foo’faccessat(AT_FDCWD, "/var/tmp/foo", W_OK) = -1 EACCES (Permission denied)rmrm -faccess(3)
Peter Cordes 2016 년
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.