Thunderbird에서 특정 첨부 파일을 열려고 하면 권한이 거부되었습니다. 그러나 strace
프로세스 작업을 할 때 올바른 호출을 수행한다는 것을 알았기 때문에 Thunderbird 버그처럼 보이지는 않습니다 . 그러나 그것은 실패했습니다.
11545 execve("/usr/local/bin/libreoffice6.4", ["libreoffice6.4", "--writer", "file:///tmp/user/1000/via%20alla%20quite%2012%20Laigueglia"], ["SHELL=/bin/bash", "WINDOWID=18874383", "QT_ACCESSIBILITY=1", "XDG_SESSION_PATH=/org/freedesktop/DisplayManager/Session0", "XTERM_VERSION=XTerm(344)", ... ]) = -1 EACCES (Permission denied)
권한은 괜찮습니다. namei
및 getfacl
. 그런 다음 execve
지침을 strace -v -s 1024
C 파일에 복사하고 컴파일했습니다. 이 경우에는 효과가 있었습니다. Thunderbird에서 마우스 클릭으로 실행할 때마다 실패하고, 다음 테스트 프로그램을 실행할 때마다 성공합니다.
#include <unistd.h>
#include <stdio.h>
int main()
{
char *path="/usr/local/bin/libreoffice6.4";
char *argv[] =
{
"libreoffice6.4",
"--writer",
"file:///tmp/user/1000/via%20alla%20quite%2012%20Laigueglia",
NULL
};
char *envp[] =
{
"SHELL=/bin/bash",
"WINDOWID=18874383",
"QT_ACCESSIBILITY=1",
"XDG_SESSION_PATH=/org/freedesktop/DisplayManager/Session0",
"XTERM_VERSION=XTerm(344)",
// ...
NULL
};
int rtc = execve(path, argv, envp);
perror("execve failed");
return rtc;
}
Thunderbird는 여러 첨부 파일을 올바르게 열 수 있습니다. 지금까지는 LibreOffice와 사용자 정의 셸만 실패했습니다. 둘 다 주식 배분(Devuan Beowulf)의 일부가 아니었지만 그것이 실패를 설명하지는 않습니까?
이전 68 버전이고 오류가 수정되었거나 다음 설치 시 자동으로 사라질 수 있으므로 Thunderbird에 오류를 보고할 필요가 없습니다. 물론, 무엇이 문제인지 정확히 알지 못한다면 신고할 수 없습니다. 액세스가 거부되고 허용되는 이유를 이해할 수 없습니다.
- 동일한 사용자 ID/세션으로 Thunderbird와 Scarecrow를 실행하고 있습니다.
- Thunderbird가
trace=setuid,setfsuid,setreuid
. - 이
x
비트는 해당 경로의 모든 부분에서 켜집니다. - 저는 ACL을 사용해 본 적이 없습니다.
편집: 매뉴얼 페이지에는 execve
네 가지 가능한 이유가 나열되어 있습니다.EACCESS
:
- 파일 이름 경로 접두사 또는 스크립트 해석기 이름의 구성 요소에 대한 검색 권한이 거부되었습니다.
- 이 파일 또는 스크립트 해석기는 일반 파일이 아닙니다.
- 파일, 스크립트 또는 ELF 인터프리터에 대한 실행 권한이 거부되었습니다.
- 파일 시스템은 noexec 모드로 마운트됩니다.
이 중 어느 것도 사실이 아닌 것 같습니다. 나는 Thunderbird의 동작을 모방하기 위해 더미 변수 thread_creation
와 변수를 추가하여 Strawman 프로그램을 복잡하게 만들었습니다 . fork
특히 다음 실행 파일을 실행하십시오.
-rwxr-xr-x 1 root root 14328 Nov 6 2019 /usr/lib/x86_64-linux-gnu/glib-2.0/gio-launch-desktop
이는 Thunderbird libglib2.0-0:amd64
가 아닌 Thunderbird의 일부입니다.
그래도 썬더버드가 겪은 실패를 재현할 수는 없었다.
Edit2: libc6에 대한 사례를 양 당사자에게 제출독일어 오류 497그리고데비안 버그 966343
답변1
이것은 이론이 아니라 결론적인 답변입니다 ...
허가를 거부하는 다른 이유가 있습니다. 떠오르는 것 중 하나는갑옷을 적용. 이것이 배포판의 Thunderbird에 영향을 미치는지 확인하지 않았습니다. 프로그램 접근이 차단되면 시스템 로그에 기록되어야 하므로 이를 확인하세요 /var/log/syslog
.
AppArmor는 프로그램별로 구성되고 기본적으로 알 수 없는 프로그램이 원하는 작업을 수행할 수 있도록 하므로 문제를 명확하게 설명합니다. 천둥새가능한다른 프로그램(OpenOffice) 실행을 방지하는 AppArmor 프로필이 있습니다. 귀하의 테스트 프로그램에는 그러한 구성 파일이 없습니다.