Por que falhar ao excluir usuário em Raspbian?

4

Eu faço com sucesso em Jessie Raspbian de Raspberry Pi 3b

% http://askubuntu.com/a/227513/25388
masi@raspberrypi:~ $ sudo locale-gen en_US en_US.UTF-8
masi@raspberrypi:~ $ sudo dpkg-reconfigure locales

Eu corro sudo deluser pi mas recebo

perl: warning: Setting locale failed.
perl: warning: Please check that your locale settings:
    LANGUAGE = (unset),
    LC_ALL = "en_US.UTF-8",
    LC_PAPER = "fi_FI.UTF-8",
    LC_ADDRESS = "fi_FI.UTF-8",
    LC_MONETARY = "fi_FI.UTF-8",
    LC_NUMERIC = "fi_FI.UTF-8",
    LC_TELEPHONE = "fi_FI.UTF-8",
    LC_IDENTIFICATION = "fi_FI.UTF-8",
    LC_MEASUREMENT = "fi_FI.UTF-8",
    LC_TIME = "fi_FI.UTF-8",
    LC_NAME = "fi_FI.UTF-8",
    LANG = "en_US.UTF-8"
    are supported and installed on your system.
perl: warning: Falling back to the standard locale ("C").
Removing user 'pi' ...
Warning: group 'pi' has no more members.
userdel: user pi is currently used by process 929
/usr/sbin/deluser: '/usr/sbin/userdel pi' returned error code 8. Exiting.

Eu também tentei consertar o problema do polylocale sem sucesso

for y in $(locale | cut -d '=' -f 2| sort |uniq );do sudo locale-gen $y; done

eu faço

masi@raspberrypi:~ $ ps -fp 929
UID        PID  PPID  C STIME TTY          TIME CMD
pi         929     1  0 08:54 ?        00:00:00 /usr/lib/menu-cache/menu-cached /tmp/.

eu faço

masi@raspberrypi:~ $ sudo kill 929

masi@raspberrypi:~ $ sudo deluser pi
perl: warning: Setting locale failed.
perl: warning: Please check that your locale settings:
    LANGUAGE = (unset),
    LC_ALL = "en_US.UTF-8",
    LC_PAPER = "fi_FI.UTF-8",
    LC_ADDRESS = "fi_FI.UTF-8",
    LC_MONETARY = "fi_FI.UTF-8",
    LC_NUMERIC = "fi_FI.UTF-8",
    LC_TELEPHONE = "fi_FI.UTF-8",
    LC_IDENTIFICATION = "fi_FI.UTF-8",
    LC_MEASUREMENT = "fi_FI.UTF-8",
    LC_TIME = "fi_FI.UTF-8",
    LC_NAME = "fi_FI.UTF-8",
    LANG = "en_US.UTF-8"
    are supported and installed on your system.
perl: warning: Falling back to the standard locale ("C").
Removing user 'pi' ...
Warning: group 'pi' has no more members.
userdel: user pi is currently used by process 1174
/usr/sbin/deluser: '/usr/sbin/userdel pi' returned error code 8. Exiting.

masi@raspberrypi:~ $ sudo deluser -remove-home pi
perl: warning: Setting locale failed.
perl: warning: Please check that your locale settings:
    LANGUAGE = (unset),
    LC_ALL = "en_US.UTF-8",
    LC_PAPER = "fi_FI.UTF-8",
    LC_ADDRESS = "fi_FI.UTF-8",
    LC_MONETARY = "fi_FI.UTF-8",
    LC_NUMERIC = "fi_FI.UTF-8",
    LC_TELEPHONE = "fi_FI.UTF-8",
    LC_IDENTIFICATION = "fi_FI.UTF-8",
    LC_MEASUREMENT = "fi_FI.UTF-8",
    LC_TIME = "fi_FI.UTF-8",
    LC_NAME = "fi_FI.UTF-8",
    LANG = "en_US.UTF-8"
    are supported and installed on your system.
perl: warning: Falling back to the standard locale ("C").
Looking for files to backup/remove ...
Removing user 'pi' ...
Warning: group 'pi' has no more members.
userdel: user pi is currently used by process 1174
/usr/sbin/deluser: '/usr/sbin/userdel pi' returned error code 8. Exiting.

masi@raspberrypi:~ $ 

Eu mato agora o ID do processo 1174 mas recebo exatamente a mesma saída, mas agora estou dando um novo processo id 1202 . Eu faço sudo killall -u pi -m . mas recebo Usage: killall [OPTION]... [--] NAME...

eu faço

masi@raspberrypi:~ $ sudo pkill -u pi     

masi@raspberrypi:~ $ sudo deluser pi
perl: warning: Setting locale failed.
perl: warning: Please check that your locale settings:
    LANGUAGE = (unset),
    LC_ALL = "en_US.UTF-8",
    ...
    are supported and installed on your system.
perl: warning: Falling back to the standard locale ("C").
Removing user 'pi' ...
Warning: group 'pi' has no more members.
userdel: user pi is currently used by process 3422
/usr/sbin/deluser: '/usr/sbin/userdel pi' returned error code 8. Exiting.

eu faço

masi@raspberrypi:~ $ ps -u pi
  PID TTY          TIME CMD
 3422 tty1     00:00:00 bash

masi@raspberrypi:~ $ sudo kill 3422

masi@raspberrypi:~ $ sudo deluser pi
perl: warning: Setting locale failed.
perl: warning: Please check that your locale settings:
    LANGUAGE = (unset),
    LC_ALL = "en_US.UTF-8",
    LC_PAPER = "fi_FI.UTF-8",
    LC_ADDRESS = "fi_FI.UTF-8",
    LC_MONETARY = "fi_FI.UTF-8",
    LC_NUMERIC = "fi_FI.UTF-8",
    LC_TELEPHONE = "fi_FI.UTF-8",
    LC_IDENTIFICATION = "fi_FI.UTF-8",
    LC_MEASUREMENT = "fi_FI.UTF-8",
    LC_TIME = "fi_FI.UTF-8",
    LC_NAME = "fi_FI.UTF-8",
    LANG = "en_US.UTF-8"
    are supported and installed on your system.
perl: warning: Falling back to the standard locale ("C").
Removing user 'pi' ...
Warning: group 'pi' has no more members.
userdel: user pi is currently used by process 3496
/usr/sbin/deluser: '/usr/sbin/userdel pi' returned error code 8. Exiting.

eu faço

masi@raspberrypi:~ $ who
pi       tty1         Jun  4 09:38
masi     pts/0        Jun  4 09:06 (masi)

eu faço

masi@raspberrypi:~ $ sudo skill -KILL -u pi

masi@raspberrypi:~ $ sudo deluser pi
perl: warning: Setting locale failed.
perl: warning: Please check that your locale settings:
    LANGUAGE = (unset),
    LC_ALL = "en_US.UTF-8",
    LC_PAPER = "fi_FI.UTF-8",
    LC_ADDRESS = "fi_FI.UTF-8",
    LC_MONETARY = "fi_FI.UTF-8",
    LC_NUMERIC = "fi_FI.UTF-8",
    LC_TELEPHONE = "fi_FI.UTF-8",
    LC_IDENTIFICATION = "fi_FI.UTF-8",
    LC_MEASUREMENT = "fi_FI.UTF-8",
    LC_TIME = "fi_FI.UTF-8",
    LC_NAME = "fi_FI.UTF-8",
    LANG = "en_US.UTF-8"
    are supported and installed on your system.
perl: warning: Falling back to the standard locale ("C").
Removing user 'pi' ...
Warning: group 'pi' has no more members.
userdel: user pi is currently used by process 3496
/usr/sbin/deluser: '/usr/sbin/userdel pi' returned error code 8. Exiting.

Eu faço a proposta de Stephen, mas

masi@raspberrypi:~ $ sudo service lightdm stop

masi@raspberrypi:~ $ sudo deluser pi
perl: warning: Setting locale failed.
perl: warning: Please check that your locale settings:
    LANGUAGE = (unset),
    LC_ALL = "en_US.UTF-8",
    LC_PAPER = "fi_FI.UTF-8",
    LC_ADDRESS = "fi_FI.UTF-8",
    LC_MONETARY = "fi_FI.UTF-8",
    LC_NUMERIC = "fi_FI.UTF-8",
    LC_TELEPHONE = "fi_FI.UTF-8",
    LC_IDENTIFICATION = "fi_FI.UTF-8",
    LC_MEASUREMENT = "fi_FI.UTF-8",
    LC_TIME = "fi_FI.UTF-8",
    LC_NAME = "fi_FI.UTF-8",
    LANG = "en_US.UTF-8"
    are supported and installed on your system.
perl: warning: Falling back to the standard locale ("C").
Removing user 'pi' ...
Warning: group 'pi' has no more members.
userdel: user pi is currently used by process 3496
/usr/sbin/deluser: '/usr/sbin/userdel pi' returned error code 8. Exiting.

Minha segunda iteração dos comandos incluiu novamente tentando alterar as localidades pelo primeiro passo dos comandos, novamente sem sucesso.

eu faço

masi@raspberrypi:~ $ ps -ft tty1
UID        PID  PPID  C STIME TTY          TIME CMD
root      3491     1  0 09:38 tty1     00:00:00 /bin/login -f   
pi        3507  3491  0 09:38 tty1     00:00:00 -bash

Eu faço sudo vim /etc/inittab , mas o arquivo está vazio. Eu faço masi@raspberrypi:~ $ sudo grep -r "login -f" /etc mas nada como saída.

eu faço

masi@raspberrypi:~ $ sudo grep -r autologin /etc
/etc/lightdm/lightdm.conf:# pam-autologin-service = PAM service to use for autologin
/etc/lightdm/lightdm.conf:# autologin-guest = True to log in as guest by default
/etc/lightdm/lightdm.conf:# autologin-user = User to log in with by default (overrides autologin-guest)
/etc/lightdm/lightdm.conf:# autologin-user-timeout = Number of seconds to wait before loading default user
/etc/lightdm/lightdm.conf:# autologin-session = Session to load for automatic login (overrides user-session)
/etc/lightdm/lightdm.conf:# autologin-in-background = True if autologin session should not be immediately activated
/etc/lightdm/lightdm.conf:#pam-autologin-service=lightdm-autologin
/etc/lightdm/lightdm.conf:#autologin-guest=false
/etc/lightdm/lightdm.conf:autologin-user=pi
/etc/lightdm/lightdm.conf:#autologin-user-timeout=0
/etc/lightdm/lightdm.conf:#autologin-in-background=false
/etc/lightdm/lightdm.conf:#autologin-session=UNIMPLEMENTED
/etc/systemd/system/[email protected]:ExecStart=-/sbin/agetty --autologin pi --noclear %I $TERM

Conteúdo de /etc/lightdm/lightdm.conf

# General configuration
#
# start-default-seat = True to always start one seat if none are defined in the configuration
# greeter-user = User to run greeter as
# minimum-display-number = Minimum display number to use for X servers
# minimum-vt = First VT to run displays on
# lock-memory = True to prevent memory from being paged to disk
# user-authority-in-system-dir = True if session authority should be in the system location
# guest-account-script = Script to be run to setup guest account
# logind-load-seats = True to automatically set up multi-seat configuration from logind
# logind-check-graphical = True to on start seats that are marked as graphical by logind
# log-directory = Directory to log information to
# run-directory = Directory to put running state in
# cache-directory = Directory to cache to
# sessions-directory = Directory to find sessions
# remote-sessions-directory = Directory to find remote sessions
# greeters-directory = Directory to find greeters
#
[LightDM]
#start-default-seat=true
#greeter-user=lightdm
#minimum-display-number=0
#minimum-vt=7
#lock-memory=true
#user-authority-in-system-dir=false
#guest-account-script=guest-account
#logind-load-seats=false
#logind-check-graphical=false
#log-directory=/var/log/lightdm
#run-directory=/var/run/lightdm
#cache-directory=/var/cache/lightdm
#sessions-directory=/usr/share/lightdm/sessions:/usr/share/xsessions
#remote-sessions-directory=/usr/share/lightdm/remote-sessions
#greeters-directory=/usr/share/lightdm/greeters:/usr/share/xgreeters

#
# Seat defaults
#
# type = Seat type (xlocal, xremote)
# xdg-seat = Seat name to set pam_systemd XDG_SEAT variable and name to pass to X server
# pam-service = PAM service to use for login
# pam-autologin-service = PAM service to use for autologin
# pam-greeter-service = PAM service to use for greeters
# xserver-command = X server command to run (can also contain arguments e.g. X -special-option)
# xserver-layout = Layout to pass to X server
# xserver-config = Config file to pass to X server
# xserver-allow-tcp = True if TCP/IP connections are allowed to this X server
# xserver-share = True if the X server is shared for both greeter and session
# xserver-hostname = Hostname of X server (only for type=xremote)
# xserver-display-number = Display number of X server (only for type=xremote)
# xdmcp-manager = XDMCP manager to connect to (implies xserver-allow-tcp=true)
# xdmcp-port = XDMCP UDP/IP port to communicate on
# xdmcp-key = Authentication key to use for XDM-AUTHENTICATION-1 (stored in keys.conf)
# unity-compositor-command = Unity compositor command to run (can also contain arguments e.g. unity-system-compositor -special-option)
# unity-compositor-timeout = Number of seconds to wait for compositor to start
# greeter-session = Session to load for greeter
# greeter-hide-users = True to hide the user list
# greeter-allow-guest = True if the greeter should show a guest login option
# greeter-show-manual-login = True if the greeter should offer a manual login option
# greeter-show-remote-login = True if the greeter should offer a remote login option
# user-session = Session to load for users
# allow-user-switching = True if allowed to switch users
# allow-guest = True if guest login is allowed
# guest-session = Session to load for guests (overrides user-session)
# session-wrapper = Wrapper script to run session with
# greeter-wrapper = Wrapper script to run greeter with
# guest-wrapper = Wrapper script to run guest sessions with
# display-setup-script = Script to run when starting a greeter session (runs as root)
# display-stopped-script = Script to run after stopping the display server (runs as root)
# greeter-setup-script = Script to run when starting a greeter (runs as root)
# session-setup-script = Script to run when starting a user session (runs as root)
# session-cleanup-script = Script to run when quitting a user session (runs as root)
# autologin-guest = True to log in as guest by default
# autologin-user = User to log in with by default (overrides autologin-guest)
# autologin-user-timeout = Number of seconds to wait before loading default user
# autologin-session = Session to load for automatic login (overrides user-session)
# autologin-in-background = True if autologin session should not be immediately activated
# exit-on-failure = True if the daemon should exit if this seat fails
#
[SeatDefaults]
#type=xlocal
#xdg-seat=seat0
#pam-service=lightdm
#pam-autologin-service=lightdm-autologin
#pam-greeter-service=lightdm-greeter
#xserver-command=X
#xserver-layout=
#xserver-config=
#xserver-allow-tcp=false
#xserver-share=true
#xserver-hostname=
#xserver-display-number=
#xdmcp-manager=
#xdmcp-port=177
#xdmcp-key=
#unity-compositor-command=unity-system-compositor
#unity-compositor-timeout=60
#greeter-session=example-gtk-gnome
#greeter-hide-users=false
#greeter-allow-guest=true
#greeter-show-manual-login=false
#greeter-show-remote-login=true
#user-session=default
#allow-user-switching=true
#allow-guest=true
#guest-session=
#session-wrapper=lightdm-session
#greeter-wrapper=
#guest-wrapper=
#display-setup-script=
#display-stopped-script=
#greeter-setup-script=
#session-setup-script=
#session-cleanup-script=
#autologin-guest=false
autologin-user=pi
#autologin-user-timeout=0
#autologin-in-background=false
#autologin-session=UNIMPLEMENTED
#exit-on-failure=false

#
# Seat configuration
#
# Each seat must start with "Seat:".
# Uses settings from [SeatDefaults], any of these can be overriden by setting them in this section.
#
#[Seat:0]

#
# XDMCP Server configuration
#
# enabled = True if XDMCP connections should be allowed
# port = UDP/IP port to listen for connections on
# key = Authentication key to use for XDM-AUTHENTICATION-1 or blank to not use authentication (stored in keys.conf)
#
# The authentication key is a 56 bit DES key specified in hex as 0xnnnnnnnnnnnnnn.  Alternatively
# it can be a word and the first 7 characters are used as the key.
#
[XDMCPServer]
#enabled=false
#port=177
#key=

#
# VNC Server configuration
#
# enabled = True if VNC connections should be allowed
# command = Command to run Xvnc server with
# port = TCP/IP port to listen for connections on
# width = Width of display to use
# height = Height of display to use
# depth = Color depth of display to use
#
[VNCServer]
#enabled=false
#command=Xvnc
#port=5900
#width=1024
#height=768
#depth=8

eu faço

masi@raspberrypi:~ $ sudo systemctl disable autologin@tty1

masi@raspberrypi:~ $ ps -fu pi
UID        PID  PPID  C STIME TTY          TIME CMD
pi        3496     1  0 09:38 ?        00:00:00 /lib/systemd/systemd --user
pi        3502  3496  0 09:38 ?        00:00:00 (sd-pam)  
pi        3507  3491  0 09:38 tty1     00:00:00 -bash

masi@raspberrypi:~ $ sudo kill 3496 3502 3507

masi@raspberrypi:~ $ ps -fu pi
UID        PID  PPID  C STIME TTY          TIME CMD
pi        7062     1  1 21:46 ?        00:00:00 /lib/systemd/systemd --user
pi        7068  7062  0 21:46 ?        00:00:00 (sd-pam)  
pi        7073  7056  6 21:46 tty1     00:00:00 -bash

O arquivo /etc/systemd/system/[email protected]

#  This file is part of systemd.
#
#  systemd is free software; you can redistribute it and/or modify it
#  under the terms of the GNU Lesser General Public License as published by
#  the Free Software Foundation; either version 2.1 of the License, or
#  (at your option) any later version.

[Unit]
Description=Getty on %I
Documentation=man:agetty(8) man:systemd-getty-generator(8)
Documentation=http://0pointer.de/blog/projects/serial-console.html
After=systemd-user-sessions.service plymouth-quit-wait.service
After=rc-local.service

# If additional gettys are spawned during boot then we should make
# sure that this is synchronized before getty.target, even though
# getty.target didn't actually pull it in.
Before=getty.target
IgnoreOnIsolate=yes

# On systems without virtual consoles, don't start any getty. Note
# that serial gettys are covered by [email protected], not this
# unit.
ConditionPathExists=/dev/tty0

[Service]
# the VT is cleared by TTYVTDisallocate
ExecStart=-/sbin/agetty --autologin pi --noclear %I $TERM
Type=idle
Restart=always
RestartSec=0
UtmpIdentifier=%I
TTYPath=/dev/%I
TTYReset=yes
TTYVHangup=yes
TTYVTDisallocate=yes
KillMode=process
IgnoreSIGPIPE=no
SendSIGHUP=yes

# Unset locale for the console getty since the console has problems
# displaying some internationalized messages.
Environment=LANG= LANGUAGE= LC_CTYPE= LC_NUMERIC= LC_TIME= LC_COLLATE= LC_MONETARY= LC_MESSAGES= LC_PAPER= LC_NAME= LC_ADDRESS= LC_TELEPHONE= LC_MEASUREMENT= LC_IDENTIFICATION=

[Install]
WantedBy=getty.target
DefaultInstance=tty1

eu faço

masi@raspberrypi:~ $ sudo systemctl stop autologin@tty1

masi@raspberrypi:~ $ ps -fu pi
UID        PID  PPID  C STIME TTY          TIME CMD

masi@raspberrypi:~ $ sudo deluser pi
perl: warning: Setting locale failed.
perl: warning: Please check that your locale settings:
    LANGUAGE = (unset),
    LC_ALL = "en_US.UTF-8",
    LC_PAPER = "fi_FI.UTF-8",
    LC_ADDRESS = "fi_FI.UTF-8",
    LC_MONETARY = "fi_FI.UTF-8",
    LC_NUMERIC = "fi_FI.UTF-8",
    LC_TELEPHONE = "fi_FI.UTF-8",
    LC_IDENTIFICATION = "fi_FI.UTF-8",
    LC_MEASUREMENT = "fi_FI.UTF-8",
    LC_TIME = "fi_FI.UTF-8",
    LC_NAME = "fi_FI.UTF-8",
    LANG = "en_US.UTF-8"
    are supported and installed on your system.
perl: warning: Falling back to the standard locale ("C").
Removing user 'pi' ...
Warning: group 'pi' has no more members.
Done.

Problemas

  • cria sempre um novo processo para o usuário pi após remover seus processos atuais. Como você pode evitar isso?

Tentativa bem sucedida [Stephen]

Faça

masi@raspberrypi:~ $ sudo systemctl stop autologin@tty1

masi@raspberrypi:~ $ ps -fu pi
UID        PID  PPID  C STIME TTY          TIME CMD

masi@raspberrypi:~ $ sudo deluser pi
...

masi@raspberrypi:~ & sudo vim /etc/passwd 
... pi no longer here!

masi@raspberrypi:~ & sudo deluser -remove-home pi

A solução do problema locale está no tópico aqui .

Substitua autologin-user=pi por autologin-user=masi em /etc/lightdm/lightdm.conf .

Como você pode remover o usuário pi com sucesso?

    
por Léo Léopold Hertz 준영 04.06.2016 / 12:05

2 respostas

3

Seu usuário pi está conectado, em tty1 ; você deve registrar o usuário antes de excluí-lo. (O processo menu-cached é usado pelo ambiente de área de trabalho LXDE. Provavelmente existem outros processos em execução para o usuário pi .)

Se você não tem acesso ao GUI para logar o usuário ( ie , você está acessando o Raspberry Pi remotamente), a aposta mais segura é provavelmente parar o gerenciador de desktop:

sudo service lightdm stop

(supondo que você esteja usando o padrão do LXDE); isso deve matar todos os processos de pi .

Você também precisará desativar o login automático ( login -f ).

Se você tem um estilo antigo inittab , edite seu arquivo /etc/inittab e substitua a linha por algo como

1:2345:respawn:/bin/login -f pi tty1 </dev/tty1 >/dev/tty1 2>&1

(a parte importante sendo /bin/login -f pi tty1 ) com

1:2345:respawn:/sbin/getty 115200 tty1

Em seguida, recarregue init executando

sudo telinit q

Com uma unidade systemd para login automático, como o autologin service, desative o serviço:

sudo systemctl --now disable autologin@tty1

Isso também irá parar a unidade e recarregar a configuração do systemd.

Neste ponto, se pi ainda tiver quaisquer processos em execução (conforme indicado por ps -fu pi ), mate-os - eles não devem mais reaparecer.

    
por 04.06.2016 / 12:10
0

Eu executei sudo raspi-config na linha de comando e depois nas opções de inicialização eleitas para a opção de linha de comando. Depois de um reinício consegui deletar o usuário pi (note que fiz isso depois de uma nova instalação do Raspbian).

    
por 28.10.2018 / 02:18