루트 권한이 필요한 파일을 읽고 싶고 다른 사용자나 그룹과 함께 다른 곳에 저장해야 합니다. 예를 들어 루트가 필요한 dmesg를 읽고 사용자/그룹 권한 770: test /test를 사용하여 다른 곳에 저장합니다. 여기서 문제는 루트로 저장할 수 없다는 것입니다. 이것이 SElinux 정책이고 오류가 발생합니다. 그래서 파일을 저장할 때 프로세스 권한을 변경해야 합니다.
어떤 제안이 있으십니까?
답변1
스크립트가 루트로 실행 중입니다. 따라서 sudo
사용자로 실행하는 것을 방해하는 것은 없습니다. 루트로 파일에 쓸 수 없지만 다른 사용자로 파일에 쓸 수 있는 경우 다음 옵션을 사용할 수 있습니다.
target=/path/to/target/file
dmesg | sudo -u test tee "$target" >/dev/null
chmod 770 "$target"
su
대신 사용하고 싶다면 sudo
이 변형을 사용할 수 있습니다.
target=/path/to/target/file
dmesg | su test -c "tee '$target' >/dev/null'
chmod 770 "$target"
답변2
를 사용하면 zsh
다음을 수행할 수 있습니다(예 root
: ).
zmodload zsh/system
umask 0
() {local EGID=123 EUID=456; sysopen -wu3 -m770 -o excl file}
file
0770 권한으로 euid 456 및 egid 123으로 생성되고 열렸습니다 .
$ ls -nd file
-rwxrwx--- 1 456 123 0 Sep 5 17:05 file
그런 다음 실행하세요. dmesg >&3
채우세요.
(순서가 중요합니다. euid가 더 이상 0이 아니면 egid를 변경할 수 없습니다.)