다음 파일이 있습니다.
----rw---- 1 wojtek users 4 Oct 26 15:56 data.txt
-rwx--s--x 1 wojtek users 8864 Oct 26 16:00 fopen_setgid
내가 달릴 때fopen_setgid
- 그러면
daro
모든 것이 예상대로 작동합니다. 프로그램은users
그룹 권한(daro
그룹 아님)으로 실행되므로 오류가 없습니다. - 그러면
wojtek
오류가 발생Permission denied
하지만 이유를 모르겠습니다. 이 경우처럼 프로그램이 파일을 성공적으로 열 수 있도록 허용하는 그룹users
이 아니라 그룹 권한으로 프로그램을 실행해야 하는 것 아닌가요 ?wojtek
daro
fopen_setgid
열어보는 일만 남았 네요data.txt
사용자는
daro
다음 1개의 그룹에만 속합니다.daro
사용자 그룹은 1개뿐입니다
wojtek
.wojtek
이 그룹
users
에는 회원이 없습니다.
내 OS는 Debian 9(확장)입니다
답변1
참고 자료를 찾지 못했지만 방금 테스트했습니다. 문제는 setgid
프로세스의 UID, GID 및 파일 및 파일 권한과 관련이 없습니다.
파일을 만들었어요
echo test > test.txt
권한이 변경됨
chmod 064 test.txt
더 이상 액세스할 수 없습니다.
$ cat test.txt
cat: test.txt: Permission denied
내 그룹에는 rw
액세스 권한이 있지만.
$ ls -l test.txt
----rw-r-- 1 myuser myuser 5 Nov 5 16:11 test.txt
$ id
uid=1000(myuser) gid=1000(myuser) groups=1000(myuser),4(adm),24(cdrom),27(sudo),30(dip),46(plugdev),118(lpadmin),129(sambashare)
그런 다음 파일 소유자를 다음으로 변경하여 root
파일을 성공적으로 열 수 있었습니다.
$ sudo chown root test.txt
$ ls -l test.txt
----rw-r-- 1 root myuser 5 Nov 5 16:11 test.txt
$ cat test.txt
test
분명히 사용자와 그룹이 모두 일치하는 경우 소유자 액세스 비트가 그룹 액세스 비트보다 우선합니다. (우분투 19.04에서 테스트)
u+rw
따라서 해결 방법은 파일의 권한을 추가하거나 파일 소유자를 wojtek
또는 이외의 다른 소유자로 변경하는 것입니다 daro
.