Question

Je le script suivant:

cat > /tmp/script.sh <<EndOfScript
#!/bin/sh
ulimit -n 8192
run_app
EndOfScript

qui fonctionne bien au niveau local, il est toujours correct. Mais si je tente de l'exécuter à distance via ssh:

scp /tmp/script.sh user@host:/tmp/script.sh
ssh user@host "chmod 755 /tmp/script.sh; /tmp/script.sh"

Je suis l'erreur:

ulimit: open files: cannot modify limit: Operation not permitted

J'ai aussi essayé la commande suivante:

ssh user@host "ulimit -n 8192"

même erreur.

On dirait que cette exécution commande ssh à distance est l'application d'une limite de 1024 sur la limite dure nofile, mais je ne peux pas savoir comment modifier cette valeur par défaut. J'ai essayé de modifier /etc/security/limits.conf et redémarrer sshd, toujours la même erreur.

Était-ce utile?

La solution 2

Fiannly compris la réponse: ajouter ce qui suit à / etc / initscript

ulimit -c unlimited
ulimit -HSn 65535
# Execute the program.
eval exec "$4"

Autres conseils

Au lieu d'utiliser la solution de contournement de /etc/initscript (et ne font pas une faute de frappe dans ce fichier .. :), si vous voulez juste sshd pour honorer les réglages effectués à la /etc/security/limits.conf, vous devez vous assurer que vous avez UsePAM yes à /etc/ssh/sshd_config, et des listes de /etc/pam.d/sshd session required pam_limits.so (ou comprend par ailleurs un autre fichier qui le fait).

Cela devrait être tout ce qu'il ya à faire.

Dans les anciennes versions od OpenSSH (<3,6 quelque chose) il y avait aussi un problème avec UsePrivilegeSeparation qui ont empêché des limites à l'honneur, mais il a été corrigé dans les versions plus récentes.

ulimit nécessite des privilèges de super-utilisateur à exécuter.

Je vous suggère de demander à l'administrateur du serveur de modifier cette valeur pour vous sur le serveur que vous essayez d'exécuter le script.

Il / Elle peut le faire en modifiant /etc/secutiry/limits.conf sur Linux. Voici un exemple qui pourrait aider:

*               soft    nofile          8192
*               hard    nofile          8192

Après cela, vous n'avez pas besoin de redémarrer sshd. Il suffit de déconnecter puis vous reconnecter.

Je vous suggère de poser la même question dans ServerFault bien. Vous obtiendrez de meilleures réponses connexes côté serveur là.

Vérifiez les scripts de démarrage (/etc/profile, ~/.??*) pour un appel à ulimit. IIRC, une fois une limite a été imposée, elle ne peut être élargi plus.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top