Aller au contenu

passwd réinitialisé à chaque redémarrage

Featured Replies

Posté(e)

Bonjour,

J'ai un petit souci mineur, mais tout de même bien ennuyeux : à chaque redémarrage, le fichier /etc/passwd est réinitialisé, ce qui empêche le démarrage des paquets type NZBGet, Sickbeard, etc. J'avais créé un utilisateur "apps", avec /bin/sh dans passwd, mais à chaque redémarrage je me retrouve avec "nologin" à la place.

Quelqu'un aurait-il une idée ?

Merci !

  • 1 mois après...
Posté(e)

Bonjour, pareil pour moi : 

Je viens d'envoyer une demande d'assistance à ce propos.


je souhaite accéder en SSH en utilisant mon compte utilisateur (pas admin, ni root).

Je change le shell de mon utilisateur dans le fichier /etc/paswd : 
Arnaud:x:1026:100::/var/services/homes/Arnaud:/bin/sh

Le problème est qu'après un reboot, le fichier /etc/passwd semble être réinitialisé, car je retrouve  : 
Arnaud:x:1026:100::/var/services/homes/Arnaud:/sbin/nologin

Pourriez vous m'expliquer comment définir de manière permanente le shell pour le compte utilisateur Arnaud à /bin/sh ?

Merci,

Modifié par Alefried

  • 1 mois après...
Posté(e)

Bonjour,

J'ai également constaté ce soucis depuis le passage à la version 6 de DSM.

Avez-vous trouvé une solution ?

Merci d'avance.

 

Romain.

Posté(e)
Le 1/3/2016 at 18:05, gguigui a dit :

J'ai un petit souci mineur, mais tout de même bien ennuyeux : à chaque redémarrage, le fichier /etc/passwd est réinitialisé, ce qui empêche le démarrage des paquets type NZBGet, Sickbeard, etc. J'avais créé un utilisateur "apps", avec /bin/sh dans passwd, mais à chaque redémarrage je me retrouve avec "nologin" à la place.

Les comptes applicatifs  (système) doivent avoir un UID système (<1024) pour ne pas perdre leur settings (probablement une nouveauté DSM6)

Voir ici: https://forum.synology.com/enu/viewtopic.php?p=431550#p431550

Par contre je ne sais pas si il existe une méthode préconisée pour les créer autre que l'édition à la cosaque de /etc/passwd

Modifié par CoolRaoul

Posté(e)
Il y a 9 heures, devildant a dit :

Bien vu, ça m'a en outre l'air assez propre.

Juste que je trouve sa commande awk inutilement obscure:

/usr/bin/awk -i inplace -F: 'BEGIN{OFS=":"}/^serverbackup\:/{gsub(/.*/,"/bin/sh",$7)}1' /etc/passwd

me semblerait plus lisible à être écrite comme ci-dessous (même si le résultat est identique!):

/usr/bin/awk -i inplace -F: 'BEGIN{OFS=":"} ($1 == "serverbackup") {$7="/bin/sh"} 1' /etc/passwd

Modifié par CoolRaoul

Posté(e)
Il y a 2 heures, CoolRaoul a dit :

Bien vu, ça m'a en outre l'air assez propre.

Juste que je trouve sa commande awk inutilement obscure:


/usr/bin/awk -i inplace -F: 'BEGIN{OFS=":"}/^serverbackup\:/{gsub(/.*/,"/bin/sh",$7)}1' /etc/passwd

me semblerait plus lisible à être écrite comme ci-dessous (même si le résultat est identique!):


/usr/bin/awk -i inplace -F: 'BEGIN{OFS=":"} ($1 == "serverbackup") {$7="/bin/sh"} 1' /etc/passwd

Je suis d'accord c'est mieux en variabilisé ^^ on pourrait même rajouter un while pour en gérer plusieur 

Cela devrait donné un truc du genre :


#!/bin/bash
array=( user1 user2 user3 )
for i in "${array[@]}"
do
/usr/bin/awk -i inplace -F: 'BEGIN{OFS=":"} ($1 == $i) {$9="/bin/bash"} 1' /etc/passwd
done

 

Parcontre j'ai fait ca en speed donc tester bien avant sur un autre fichier l'histoire de :)

Modifié par devildant

Posté(e)
il y a 12 minutes, devildant a dit :

on pourrait même rajouter un while pour en gérer plusieur 

Même pas besoin de while, autant remettre une regexp dans ce cas:

/usr/bin/awk -i inplace -F: 'BEGIN{OFS=":"} ($1 ~ /^(NZBGet|Sickbeard|apps)$/) {$7="/bin/sh"} 1' /etc/passwd

Et dans tous les cas, attention de bien tester sans le "-i inplace" avant de le mettre en automatique!

Modifié par CoolRaoul

Posté(e)
il y a 2 minutes, CoolRaoul a dit :

Même pas besoin de while, autant remettre une regexp dans ce cas:


/usr/bin/awk -i inplace -F: 'BEGIN{OFS=":"} ($1 ~ /^(NZBGet|Sickbeard|apps)$/) {$7="/bin/sh"} 1' /etc/passwd

Et dans tous les cas, attention de bien tester sans le "-i inplace" avant de le mettre en automatique!

Bien vu j'y est même pas pensé ^^

Posté(e)
il y a 58 minutes, devildant a dit :

Parcontre j'ai fait ca en speed 

En effet: ça ne marche pas car le "$i" ne sera pas étendu vu que la commande awk est entre simple quotes.

Si on tient a faire par itération et variables externes alors faudrait procéder comme cela:

for user in user1 user2 user3 ; do
    awk -i inplace  -vuser=$user -F: 'BEGIN{OFS=":"} ($1 == user ){$7="/bin/sh"} 1' /etc/passwd 
done

(Bon, on a un peu dérivé du sujet initial :-/)

**EDIT**

Je viens de m'apercevoir qu'on peut avantageusement remplacer
BEGIN{OFS=":"}
par le switch
-vOFS=:
à la commande "awk"

Modifié par CoolRaoul

Posté(e)
il y a 40 minutes, CoolRaoul a dit :

En effet: ça ne marche pas car le "$i" ne sera pas étendu vu que la commande awk est entre simple quotes.

Si on tient a faire par itération et variables externes alors faudrait procéder comme cela:


for user in user1 user2 user3 ; do
    awk -i inplace  -vuser=$user -F: 'BEGIN{OFS=":"} ($1 == user ){$7="/bin/sh"} 1' /etc/passwd 
done

(Bon, on a un peu dérivé du sujet initial :-/)

**EDIT**

Je viens de m'apercevoir qu'on peut avantageusement remplacer
BEGIN{OFS=":"}
par le switch
-vOFS=:
à la commande "awk"

Bien vu le -v, ca fait des années (depuis mes cours) que je n'ai pas fait de cmd awk ^^ 

en tout cas je pense que le probleme initial est réglé (manque plus qu'une confirmation)

merci CoolRaoul pour les corrections

Rejoindre la conversation

Vous pouvez publier maintenant et vous inscrire plus tard. Si vous avez un compte, connectez-vous maintenant pour publier avec votre compte.

Invité
Unfortunately, your content contains terms that we do not allow. Please edit your content to remove the highlighted words below.
Répondre à ce sujet…

Qui est en ligne (Afficher la liste complète)

  • Il n’y a aucun utilisateur enregistré actuellement en ligne

Information importante

Nous avons placé des cookies sur votre appareil pour aider à améliorer ce site. Vous pouvez choisir d’ajuster vos paramètres de cookie, sinon nous supposerons que vous êtes d’accord pour continuer.

Account

Navigation

Rechercher

Rechercher

Configure browser push notifications

Chrome (Android)
  1. Tap the lock icon next to the address bar.
  2. Tap Permissions → Notifications.
  3. Adjust your preference.
Chrome (Desktop)
  1. Click the padlock icon in the address bar.
  2. Select Site settings.
  3. Find Notifications and adjust your preference.