はい、パスワードテーブルにはコメントを含めることができます。

はい、パスワードテーブルにはコメントを含めることができます。

# 文字 "#username" が前に付けられた複数のアカウントを含む Solaris 11 サーバーのアカウントのリストを受け取りました。 (LDAP は使用されず、すべてのアカウントはローカルの Solaris サーバーアカウントです.)

サーバー管理者は、前に#が付いたSolarisアカウントを使用してログインできないと述べました。私はこの主張を裏付けるいくつかの文書を見つけようとしましたが、やっと見つけました。https://forums.gentoo.org/viewtopic-t-513008.html寄稿者の一人は、etc/passwd に 1 行を接頭辞で付けると、アカウントの最初の文字に # が付くと書いた。 (この議論は2005年に行われており、Solarisや他のUnixベース/派生オペレーティングシステムに関連しているかどうかはわかりません。)

もしそうなら、#が付いたSolarisアカウントを使ってログインすることは可能ですか?それとも、OSが成功したログインを妨げますか?

答え1

~によるとpasswd(5)手動、アルファベット以外の文字で始まるユーザー名は警告を生成する必要があります(おそらくpasswdデータベースにアクセスするとき)。

管理者は、ログインを許可しないはずのユーザーエントリがログインを許可されていないという事実に頼ることができます。見苦しい(参考に施設はありません。コメントするファイルの行passwd)。

間違ったエントリに依存せず、代わりにログインを許可しないユーザーに正しい制限を使用することをお勧めしますpasswd -N username(参照passwd(1))または同様のメカニズムを介して。または、ユーザーがシステムに存在してはいけない場合は削除されることがあります。

答え2

はい、パスワードテーブルにはコメントを含めることができます。

...しかし、Illumos、OpenBSD、またはLinuxではそうではありません。ソースフォーム。 Gentoo Linux WWWサイトに書いている人は、さまざまなオペレーティングシステムを十分に体験できませんでした。

ファイル形式いいえ、同じです。すべてのオペレーティングシステムで。 FreeBSD では、/etc/master.passwdファイルの読み込み時に行コメントを受け付けます。これは、Linux、OpenBSD、Illumos、/etc/passwdまたは/etc/master.passwdファイルパーサーの場合には該当しません。

ご覧のとおり、最初の数行は初期のFreeBSD/etc/master.passwdファイルコメント行です。ここでFreeBSD プログラムではpw_mkdb明示的に無視されます。。 OpenBSDにはpw_mkdbこれが不足しており、デフォルト/etc/master.passwdではコメントはありません。

もちろんpw_mkdb、プログラムがソース・コードをシステム・アカウント・データベースからエントリーを検索するライブラリ・ルーチンが使用する実際のデータベースにコンパイルすると、コメントはフィルター処理されます。実際にコンパイル済みデータベース形式はBerkeley DBで、コメントはありません。

BSDとは異なり、Linuxユーザーアカウントデータベースサブシステムはインデックス付きでコンパイルされたデータベースファイルを使用しません。ただし、元のフラットテーブルを解析するルックアップライブラリルーチンはコメントを受け付けません。 Illumosとそれ以前のOpenSolarisも同様です。

いいえ、ユーザー名には実際に # 文字を含めることはできません。

POSIXの指定持ち運べるアカウント名にはいわゆる文字のみを含めることができます。移植可能なファイル名文字セット、名前の最初の文字に追加の制限があります。このセットにはこの文字は含まれていません#

最初の文字に対する追加の制限は、#アカウント名に問題を引き起こす原因に関連しているため、重要です。アカウント名はプログラムのパラメータとして使用されます。-通常、次から始まるパラメータはオプション議論。 (はい、アカウント名がオプションパラメータとして処理されるのを防ぐ方法はありますが、これは普遍的でも標準化もされません。)

これが問題の核心です。テーブルの実際のソース形式はそれ自体アカウント名を使用して、フィールド区切り文字()、レコード区切り文字(:)、または(FreeBSDの場合)行末のコメントリーダー()を除くレコードの最初のフィールドにすべての文字を使用できます。#他の多くの場合さらに制限が適用されました。

  • Cライブラリルーチンはこれらのフィールドをで終わる文字列として扱うため、その文字を含めることはできません。
  • 前述のように、アカウント名はコマンド引数として使用され、特にプログラムから古いgettyオペレーティングシステムloginに渡される引数として使用されます。 (IllumosはUnicesファミリーに属し、gettyこのプログラムは1988年にキャンセルされました。、間違いなく。 )文字とイニシャルは除外されます-
  • アカウント名は、の設定で変数の割り当てを使用してシェルスクリプト(またはその近似値)で構成されるため、スクリプトを/etc/rc.conf破損するシェルメタ文字は使用されません。したがって、シェルメタ文字としては使用されません。/etc/sysconfig/wibble#
  • アカウント名は環境変数とシェル変数に保存されます。したがって、文字および(分析中にあいまいさを引き起こす可能性がある)文字は使用されません。=
  • アカウント名は.INIファイルに設定されているため、およびを含む.INIファイルのメタ文字は使用しませ=#;
  • …など。

したがって、以下を使用しても#何もコメントされません。パスワードファイルにIllumosでは、これを使用するとかなりの問題が発生します。他の場所で

特別なアカウント名の場合は、次を使用します。

... FreeBSDの初期文字規則_、Debianの接頭辞規則に似ているDebian-、またはダニエルJ.バーンスタイン会議最初の文字は大文字ですG

アカウントをロックするには、以下を使用してください。

...まず正しいレコードフィールドをチェックしてください!これは名前フィールドではありません。パスワードフィールドです。Illumosのロックされたアカウントとログインしていないアカウントの特別な値が含まれています。

答え3

これSolaris 11 のpasswdマニュアルページ状態:

ユーザー名

ユーザーのログイン名です。

ログインフィールドと役割フィールドには、英字、数字、ピリオド(.)、アンダースコア(_)、およびハイフン( - )で構成される8バイト以下の文字列を許可します。最初の文字は文字でなければならず、フィールドにはアルファベットの小文字を1つ以上含める必要があります。これらの制約が満たされない場合、警告メッセージが表示されます。

#aで始まるユーザー名でログインできないという文書はありません。

このようなセキュリティ関連の状況でそのような行動を裏付ける文書がない状況でログインが許可されていないアカウントに依存することは、有能なシステム管理者の行動とは言えません。

システム管理者は次のとおりです。希望これらの行為は今後も続くでしょう。 希望非常に低い安全限界です。

関連情報