すべてのユーザーをリストするコマンド?そして、ユーザーを追加、削除、変更する方法は?


856

ターミナルのすべてのユーザーを一覧表示するコマンドが必要です。そして、ターミナルからユーザーを追加、削除、変更する方法。

これは、端末でアカウントを簡単に管理するのに役立ちます。


3
sedの答えsed 's/:.*//' /etc/passwd
アビナッシュRaj

2
リストユーザー:awk -F: '{ print $1 }' /etc/passwd
saviour123

回答:


1143

リストへ

使用できるすべてのローカルユーザーを一覧表示するには:

cut -d: -f1 /etc/passwd

非ローカルを含む(何らかの方法で)認証可能なすべてのユーザーをリストするには、この応答を参照してください。

いくつかの便利なユーザー管理コマンド(ローカルユーザーに限定):

たす

新しいユーザーを追加するには、次を使用できます。

sudo adduser new_username

または:

sudo useradd new_username

関連項目:adduserとuseraddの違いは何ですか?

削除/削除するには

ユーザーを削除/削除するには、まず次を使用できます。

sudo userdel username

次に、削除されたユーザーアカウントのホームディレクトリを削除します。

sudo rm -r / home / ユーザー名

上記のコマンドは注意して使用してください!

変更するには

ユーザーのユーザー名を変更するには:

usermod -l new_username old_username

ユーザーのパスワードを変更するには:

sudo passwd username

ユーザーのシェルを変更するには:

sudo chsh username

ユーザーの詳細(実名など)を変更するには:

sudo chfn username

ユーザーをsudoグループに追加するには:

adduser username sudo

または

usermod -aG sudo username

:そして、もちろん、も参照man adduserman useraddman userdel...というように。


12
Raduは、sudo chfn <username>ユーザーの詳細(実際の名前など)を変更することについて言及するのを忘れていました。これをコメントとして追加しようとしましたが、そのためには+50の評判が必要だというエラーが表示されました。
ミカエラ14年

2
リンクされた質問に対する正しい答えはaskubuntu.com/a/381646/16395であることが強調されるべきだと思います。受け入れられた答えはそれほど明確ではありません。
Rmano

sudo userdel DOMAIN \\ johndoeからエラーが返されます:「userdel:エントリ 'DOMAIN \ johndoe'を/ etc / passwdから削除できません-/ etc / passwdを調べましたが、おそらく、ドメイン」アカウント?
00fruX 14

1
@ 00fruXええ...集中ユーザーデータベースを使用している場合は、それを直接処理する必要があります。
オリ


87

キーボードのCtrl+ Alt+ Tを押して、ターミナルを開きます。開いたら、以下のコマンドを実行します:

cat /etc/passwd

または

less /etc/passwd
more /etc/passwd

awkを使用することもできます:awk

awk -F':' '{ print $1}' /etc/passwd

コマンドでユーザーを追加する方法は?
nux 14年

useraddコマンドを使用できます。
ミッチ

@nuxパーティーには少し遅れましたが、adduser代わりにコマンドラインを使用することは、useradd作成者が実際に何をしているかを本当に知っているスクリプトに限定する必要があります。
-flindeberg

64

この種の情報を取得する最も簡単な方法は、コマンドのマンページをgetent参照してください。このコマンドは、OSのいくつかの要素のリストを提供するため、覚えておくと便利なのと同じ出力を提供します。getentマンページアイコンcat /etc/passwd

入力したすべてのユーザーのリストを取得するには(ユーザーがにリストされているとおり/etc/passwd

getent passwd

ユーザーnewuserをシステムに追加するには、次のように入力します

sudo adduser newuser

すべてのデフォルト設定が適用されたユーザーを作成します。

ボーナス:任意のユーザー(たとえばanyuser)をグループ(たとえばcdrom)に追加するには

sudo adduser anyuser cdrom

ユーザーを削除します(たとえば、廃止されました

sudo deluser obsolete

彼のホームディレクトリ/メールも削除したい場合は、

sudo deluser --remove-home obsolete

そして

sudo deluser --remove-all-files obsolete

ユーザーが削除されます、システム全体でこのユーザが所有するすべてのファイルを。


8
それはそれにgetentだけで/ etc / passwdファイル内のユーザーの出力が、それは/ etc / passwdファイルまたはLDAPなどのかどうか、特定のシステム上のすべての構成済みのuserdbバックエンドのすべてのユーザー、印刷されません覚えておくと便利です
マルチン・カミンスキー

@MarcinKaminskiは正しいです。また、サーバーにアクセスできるSSOシステムでセットアップされたユーザーを印刷します。この答えは最適なgetent passwdコマンドであり、最適なもの
です-ulkas

列挙可能なすべてのuserdbバックエンドの
@MarcinKaminski


27

これにより、ほとんどの通常の状況で、すべての通常の(システムではなく、奇妙ではないなどの)ユーザーを取得できます。

awk -F'[/:]' '{if ($3 >= 1000 && $3 != 65534) print $1}' /etc/passwd

これは以下によって動作します:

  • から読む /etc/passwd
  • :区切り文字として使用
  • 3番目のフィールド(ユーザーID番号)が65534ではなく1000より大きい場合、最初のフィールド(ユーザーのユーザー名)が出力されます。

これは、多くのLinuxシステムでは、1000を超えるユーザー名が非特権(通常のユーザー)ユーザー用に予約されているためです。これに関するいくつかの情報はこちら

ユーザーID(UID)は、Unixライクなオペレーティングシステムによって各ユーザーに割り当てられる一意の正の整数です。各ユーザーは、UIDによってシステムに対して識別され、ユーザー名は一般に人間のインターフェースとしてのみ使用されます。

UIDは、対応するユーザー名およびその他のユーザー固有の情報とともに、/ etc / passwdファイルに保存されます...

3番目のフィールドにはUIDが含まれ、4番目のフィールドにはグループID(GID)が含まれます。デフォルトでは、これはすべての一般ユーザーのUIDと同じです。

Linuxカーネル2.4以降では、UIDは0〜4,294,967,296の値を表すことができる符号なし32ビット整数です。ただし、16ビットUIDのみを収容できる古いカーネルまたはファイルシステムを使用するシステムとの互換性を維持するために、最大65,534までの値のみを使用することをお勧めします。

0のUIDには特別な役割があります。これは常にルートアカウント(つまり、全能管理ユーザー)です。このアカウントでユーザー名を変更し、同じUIDで追加のアカウントを作成できますが、セキュリティの観点からはどちらのアクションも賢明ではありません。

UID 65534は、通常、通常の(つまり、非特権の)ユーザーとは対照的に、誰もシステム特権のないユーザーのために予約されています。このUIDは、FTP(ファイル転送プロトコル)またはHTTP(ハイパーテキスト転送プロトコル)を介してシステムにリモートでアクセスする個人によく使用されます。

UID 1から99は、ホイール、デーモン、lp、オペレーター、ニュース、メールなどの特別なシステムユーザー(疑似ユーザーとも呼ばれる)のために伝統的に予約されています。これらのユーザーは、完全なルート権限を必要としないが、一部の管理タスクのため、通常のユーザーに与えられた権限よりも多くの権限が必要です。

一部のLinuxディストリビューション(バージョンなど)は、非特権ユーザーのUIDを100から始めます。RedHatなどの他のディストリビューションは500から始まりますが、Debianなどの他のディストリビューションは1000から始まります。組織内のネットワークで複数のディストリビューションが使用されている場合、介入が必要になることがあります。

また、1000〜9999などのローカルユーザー用のUIDのブロックと、10000〜65534などのリモートユーザー(ネットワーク上の他のユーザー)用の別のブロックを予約すると便利です。重要なことはスキームに基づいて、それを遵守します。

特定のタイプのユーザーに番号のブロックを予約するこのプラクティスの利点の1つは、疑わしいユーザーアクティビティについてシステムログを検索する方が便利になることです。

一般的な考えに反して、UIDフィールドの各エントリが一意である必要はありません。ただし、一意でないUIDはセキュリティ上の問題を引き起こす可能性があるため、UIDは組織全体で一意に保つ必要があります。同様に、以前のユーザーからのUIDのリサイクルは可能な限り避ける必要があります。


1
ほぼ完璧な答えが、IMOそれは使用するクリーナーですgetentから直接読み込むのではなく、/etc/passwdルックアップUID_MIN/ UID_MAXの代わりにハードコーディング値:getent passwd | awk -F: "{if (\$3 >= $(awk '/^UID_MIN/ {print $2}' /etc/login.defs) && \$3 <= $(awk '/^UID_MAX/ {print $2}' /etc/login.defs)) print \$1}"
最大Truxa

17

ログインできるすべてのユーザーのリスト(bin、deamon、mail、sysなどのシステムユーザーはなし)

awk -F':' '$2 ~ "\$" {print $1}' /etc/shadow

新しいユーザーを追加

sudo adduser new_username

または

sudo useradd new_username

ユーザー名の削除 /削除

sudo userdel username

ホームディレクトリを削除する場合(デフォルトはディレクトリ/ home / username)

sudo deluser --remove-home username

または

sudo rm -r /path/to/user_home_dir

このユーザーからシステムからすべてのファイルを削除する場合(ホームディレクトリだけでなく)

sudo deluser --remove-all-files

1
adduserとの違いを説明する必要があるかもしれませんuseradd。またsudo、最初のコマンドに-prefixを追加します。パスワードシャドウファイルは、ルートとしてのみ読み取ることができます。
s3lph 2014

1
awk -F':' '$2 ~ "\$" {print $1}' /etc/shadow私など、ビン、デーモン、など、すべてのユーザーを示し、この警告を投げた:シーケンスエスケープ\$' treated as plain $」を私はこのポスト見つけstackoverflow.com/a/25867768/847954を し、もう一つのバックスラッシュを追加し、それがうまく働いた:awk -F':' '$2 ~ "\\$" {print $1}' /etc/shadow
ジェフ・ムスク

8

[OK]をここでこれをソートするのに役立つトリックです。ユーザーがユーザーを入力し、Tabキーを2回押すと、端末は自動補完されます。最初の4文字としてユーザーに存在するすべてのコマンドがリストされます。

user (tab tab)

可能なオプションとして私に与えますuseradd userdel usermod users users-admin
google itコマンドを入力するかman man useraddがuseraddを与える場合-新しいユーザーを作成するか、デフォルトの新しいユーザー情報を更新します... ...

ユーザーを一覧表示するには、Mitchが言ったことを確認する必要があります。

bashでタブ補完が好きになるのを助けてくれることで、物事を思い出せなくなります。


6

マシンの/ home-folderにホームディレクトリがあるユーザーを見つけるには、次のコマンドを実行します

cd /home
ls 

その後、サーバーにログインする権限を持つユーザーを確認できます。ユーザーのファイルを調べるには、rootユーザーである必要があります。


8
これはのコンテンツのみを表示します/home。Ubuntuはデフォルトでユーザーディレクトリを配置しますが、必須ではありません。
デビッドフォースター14

ls /home削除されたユーザーのユーザーディレクトリも含まれる場合があります。
スラジュ
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.