Debian サーバーにインストールされている主要なプログラムごとにユーザー アカウントを作成したいと考えています。たとえば、次のプログラムの場合:
Tomcat Nginx スーパーバイザー PostgreSQL
オンラインで読んだところによると、これは推奨されているようです。ただし、これらのユーザー アカウントをできるだけ制限して、シェル ログインを禁止し、他のプログラムにアクセスできないようにし、できるだけ制限しながらも機能を維持できるようにしたいと考えています。
これを実現するにはどうしたらよいか、どなたか教えていただけませんか? これまでの私の読み物では、次のことが示唆されています:
echo "/usr/sbin/nologin" >> /etc/shells useradd -s /usr/sbin/nologin tomcat
しかし、もっと完全な方法があるのではないかと思います。
編集: 私はDebian Squeezeを使用しています
答え1
どのディストリビューションをお使いですか? 優れたディストリビューションでは、すでにこのようなパッケージのインストール スクリプトを設定して、別のユーザーとして実行することでメリットを得られるデーモン固有のユーザーを作成しています。一部のパッケージでは、さまざまなファイルを共同で読み書きする必要がある場合に、ユーザーを共有します。ただし、いずれの場合も、nologin
ログイン シェルが使用される傾向があり、これは適切です。
答え2
これを見ただけでは役に立つかどうかは分かりません。
これらのユーザーアカウントを可能な限り制限したいのですが、シェルログインができない
ユーザーアカウントを作成する前に/etc/default/useradd
ファイルを編集するだけです
これ
1 # useradd デフォルトファイル 2グループ=100 3 ホーム=/ホーム 4 非アクティブ=-1 5 期限切れ= 6 シェル=/bin/bash 7 SKEL=/etc/skel 8 CREATE_MAIL_SPOOL=はい
これに
1 # useradd デフォルトファイル 2グループ=100 3 ホーム=/ホーム 4 非アクティブ=-1 5 期限切れ= 6 シェル=/bin/nologin 7 SKEL=/etc/skel 8 CREATE_MAIL_SPOOL=はい
これを変更した後、ユーザーアカウントを作成すると、それらのすべてのアカウントでシステムにログインできなくなります。
それはこのためです
ユーザー:x:1017:1017::/home/ユーザー:/bin/ログインなし-----> /etc/passwd ファイルエントリ
こちらをご覧ください
[max@localhost ~]$ su - ユーザー パスワード: su: /bin/nologin: そのようなファイルまたはディレクトリはありません [最大@ローカルホスト ~]$
ファイルを直接編集することでこれを取得できます。/etc/passwd
編集する必要はありません。/etc/default/useradd
ユーザーが少なければファイル
最後に提出したものを変更する
これ
ユーザー:x:1017:1017::/home/ユーザー:/bin/bash
これに
ユーザー:x:1017:1017::/home/user:/bin/nologin