슈퍼유저 권한 없이 명령이 변경된 제한 값으로 실행되도록 어떻게 변경합니까?

슈퍼유저 권한 없이 명령이 변경된 제한 값으로 실행되도록 어떻게 변경합니까?

~에서https://stackoverflow.com/a/17483998/156458

제한을 65535로 높이려면 루트가 필요하지만 루트로 프로그램을 실행하고 싶지는 않을 것입니다. 따라서 제한을 늘린 후에는 현재 사용자로 다시 전환해야 합니다.

이렇게 하려면 다음을 실행하세요.

sudo sh -c "ulimit -n 65535 && exec su $LOGNAME"

~에서다음 방법으로 코어 파일 제한 크기가 변경되지 않는 이유는 무엇입니까?, 다음을 수행하고 싶습니다.

sudo가 실행하는 쉘에 새로운 제한 값을 사용하여 명령을 넣어야 할까요?

예를 들어

$ sudo sh -c "ulimit -c 1024 && sleep 100"
^\Quit
$ ls
core

ulimit -c 1024슈퍼유저 권한이 필요하며 sleep 100필수는 아닙니다.

sleep 100슈퍼유저 권한이 아닌 변경된 제한 값으로 명령이 실행되도록 명령을 변경하려면 어떻게 해야 합니까 ?


고쳐 쓰다:

나는 Hauke의 재생에서 명령을 시도했는데, 실패한 이유가 Linux에서 작동하지 않았기 때문이라고 의심 하고 여전히 그의 의도가 무엇을 사용하고 있는지 sudo -c궁금했습니다 .sudo -c

$ sudo sh -c "ulimit -c 1024 && sudo -u nobody -c \"sleep 100\""
[sudo] password for t: 
usage: sudo -h | -K | -k | -V
usage: sudo -v [-AknS] [-g group] [-h host] [-p prompt] [-u user]
usage: sudo -l [-AknS] [-g group] [-h host] [-p prompt] [-U user] [-u user] [command]
usage: sudo [-AbEHknPS] [-r role] [-t type] [-C num] [-g group] [-h host] [-p prompt] [-T timeout] [-u user] [VAR=value] [-i|-s] [<command>]
usage: sudo -e [-AknS] [-r role] [-t type] [-C num] [-g group] [-h host] [-p prompt] [-T timeout] [-u user] file ...

다음 두 명령을 시도했지만 sleep 100. 왜?

$ sudo bash -c "ulimit -c 1024  && exec su $LOGNAME && sleep 100"
$ sudo bash -c "ulimit -c 1024  && exec bash -c \"su $LOGNAME;  sleep 100\" "
$ 

다음 명령은 코어 파일을 생성합니다. 하지만 sudo두 번째는 기본적으로 한도를 지우지 않나요? sudo실행 환경을 항상 또는 항상 청소 한다고 들었습니다 .

$ ulimit -c
0
$ sudo sh -c "ulimit -c 1024 && sudo -u nobody sleep 100"

내가 찾은http://jdebp.eu./Softwares/nosh/guide/ulimit.html~에서https://unix.stackexchange.com/a/446619/674, 그리고쉘 스크립트를 사용하여 비슷한 것을 달성하는 방법이 궁금합니다.:

대부분의 셸에는 연결되지 않고 추가 대화형 기능이 있는 ulimit 명령이 내장되어 있습니다. 내장 명령에 대해서는 각 셸의 설명서를 참조하세요. 이 명령은 exec(1) 및 nosh(1)과 함께 더 일반적으로 사용됩니다.

감사해요.

답변1

sudo sh -c "ulimit -c 1024 && sudo -u nobody -c \"sleep 100\""

관련 정보