Como posso alterar meu comando para executar sem privilégios de superusuário, mas com o valor de limite alterado?

0

De link

while you do need to be root to raise the limit to 65535, you probably don’t want to run your program as root. So after you raise the limit you should switch back to the current user.

To do this, run:

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

De Por que o seguinte modo não altera o tamanho do limite do arquivo principal? , eu gostaria de fazer o seguinte :

I should put the command which uses the new limit value inside the shell executed by sudo

e.g.

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

ulimit -c 1024 precisa de privilégios de super usuário, enquanto sleep 100 não.

Como posso alterar meu comando para que sleep 100 não seja executado com privilégios de superusuário, mas com o valor-limite alterado?

Atualização:

Eu tentei o comando a partir do replay de Hauke, e suspeitei que o motivo de sua falha era porque sudo -c não funciona no Linux, e ainda me pergunto qual foi sua intenção de usar 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 ...

Eu tentei os dois comandos a seguir, mas os comandos inteiros retornam imediatamente em vez de executar sleep 100 . Por quê?

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

O comando a seguir cria um arquivo principal. Mas o segundo sudo não esclarece os limites por padrão? Ouvi sudo frequentemente ou sempre limpar o ambiente de execução?

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

Eu encontrei o link de link , e pergunto como eu poderia conseguir coisas semelhantes usando scripts de shell :

Most shells have a built-in ulimit command that does not chain and that has additional interactive functionality. See the manual for each individual shell for its built-in command. This command is more commonly used with exec(1) and nosh(1).

Obrigado.

    
por Tim 28.05.2018 / 21:16

1 resposta

1

sudo sh -c "ulimit -c 1024 && sudo -u nobody -c \"sleep 100\""
    
por 28.05.2018 / 22:18

Tags