web-dev-qa-db-ja.com

Raspbianでユーザーを削除できないのはなぜですか?

私はRaspberry Pi 3bのRaspbian Jessieで成功しています

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

走る 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 929
/usr/sbin/deluser: `/usr/sbin/userdel pi' returned error code 8. Exiting.

ポリロケールの問題が失敗した場合も修正を試みました

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

私がやります

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/.

私がやります

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:~ $ 

私は今プロセスID 1174でもまったく同じ出力が得られますが、新しいプロセスID 1202。私がやります Sudo killall -u pi -m .ですがUsage: killall [OPTION]... [--] NAME...

私がやります

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.

私がやります

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.

私がやります

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

私がやります

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.

私はスティーブンの提案をしますが

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.

コマンドの2番目の反復には、コマンドの最初のステップでロケールを変更しようとする試みが含まれていましたが、やはり失敗しました。

私がやります

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

私がやります Sudo vim /etc/inittabですが、ファイルは空です。私がやります masi@raspberrypi:~ $ Sudo grep -r "login -f" /etcが出力として何もありません。

私がやります

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

の内容 /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

私がやります

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

ファイル /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

私がやります

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.

問題

  • 現在のプロセスを削除した後、常にユーザーpiに新しいプロセスを作成します。どうすればこれを防ぐことができますか?

成功した試み[スティーブン]

行う

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

locale問題の解決策はスレッド here にあります。

置換autologin-user=piautologin-user=masi in /etc/lightdm/lightdm.conf


piユーザーを正常に削除するにはどうすればよいですか?

piユーザーがtty1にログインしています。削除する前にユーザーをログアウトする必要があります。 (menu-cachedプロセスはLXDEデスクトップ環境で使用されます。ユーザーpiに対して他のプロセスが実行されている可能性があります。)

ユーザーをログアウトするためのGUIにアクセスできない場合(つまり、Raspberry Piにリモートでアクセスしている場合)、おそらく最も安全な方法は、デスクトップマネージャーを停止することです。

Sudo service lightdm stop

(デフォルトのLXDEを使用している場合)。これにより、piのすべてのプロセスが強制終了されます。

また、自動ログインを無効にする必要があります(login -f)。

古いスタイルのinittabがある場合は、/etc/inittabファイルを編集し、次のような行を置き換えます

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

(重要な部分は/bin/login -f pi tty1です)

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

次に、実行してinitをリロードします

Sudo telinit q

autologinサービスなどの自動ログイン用のsystemdユニットを使用して、サービスを無効にします。

Sudo systemctl --now disable autologin@tty1

これにより、ユニットが停止し、systemd設定がリロードされます。

この時点で、piにまだ実行中のプロセスがある場合(ps -fu piで示されているように)、それらを強制終了します。これ以上、再起動することはできません。

3
Stephen Kitt

私は走ったSudo raspi-configコマンドラインで、コマンドラインオプションとして選択されたブートオプションの下。再起動後、ユーザーpiを削除できました(Raspbianの新規インストール後に削除したことに注意してください)。

1
Moika Turns