루트 권한으로 파일을 읽고 다른 사용자 또는 그룹과 함께 저장

루트 권한으로 파일을 읽고 다른 사용자 또는 그룹과 함께 저장

루트 권한이 필요한 파일을 읽고 싶고 다른 사용자나 그룹과 함께 다른 곳에 저장해야 합니다. 예를 들어 루트가 필요한 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}

file0770 권한으로 euid 456 및 egid 123으로 생성되고 열렸습니다 .

$ ls -nd file
-rwxrwx--- 1 456 123 0 Sep  5 17:05 file

그런 다음 실행하세요. dmesg >&3채우세요.

(순서가 중요합니다. euid가 더 이상 0이 아니면 egid를 변경할 수 없습니다.)

관련 정보