Mac OS Xが/usr/bin/passwdにuidビットを設定しないのはなぜですか?

Mac OS Xが/usr/bin/passwdにuidビットを設定しないのはなぜですか?

多くの本では、setuid ビットの使用例に passwd、at などが含まれていることを示しています。ただし、mac os x el Capitanでは、/ usr / bin / passwdにこのビットは設定されていません。

/etc/passwdファイルをどのように変更しますか?

答え1

OSXでは、/usr/bin/passwdパスワードファイルは直接作成されません。代わりに、次を使用します。「ディレクトリシステム」たとえば、データベースまたはLDAPサーバー(ネットワーク資格情報など)などです。これを行うには、特権プロセスと通信します。

プログラムのマニュアルページpasswd(1)良い出発点です。それはリストされていますpasswd(5)(ファイル形式)記載

プロセスは通常、 getpwent(3) 関数系列の 1 つを使用してユーザー履歴を検索します。 Mac OS Xでは、この機能は次のとおりです。ディレクトリサービス(8)/etc/master.passwd ファイルを読み込み、ユーザーアカウントの他のディレクトリ情報サービスを検索するデーモンプロセス。

DirectoryService は次のように指摘しています。それ古いので、ぜひ読んでください。オープンディレクトリd(8)、これは再び次のことを意味します。

Open Directory は Mac OS X アクセスの基礎を形成します。すべての信頼できる構成情報(ユーザー、グループ、インストール、ホストされたデスクトップデータなど)。これにより、Appleとサードパーティのモジュールを介してほぼすべてのディレクトリシステムを使用できます。

そして

Open Directory Server は、Mac OS X クライアント、Mac OS X サーバー、および Darwin の一部である OpenLDAP を使用します。 OpenLDAPは、ディレクトリベースの情報を両方のデバイスに提供するための強力でスケーラブルなプラットフォームを提供します。独立そしてネットワークシステム。

passwdしたがって、最終的に(スタンドアロンシステムの場合でも)資格情報が保存されているLDAPサーバーと通信しているようです。出力を見るとそうpsかもしれません。

/usr/libexec/opendirectoryd

しかし、passwd できるupdate /etc/passwd、実際にはユーザーアカウントに対してこれを行いません。それを使用/etc/passwdして/etc/pwd.db「レガシー」アプリケーション(オープンカタログに変換されていないアプリケーション)にのみ使用できます。

関連情報