Help us understand the problem. What is going on with this article?

cockpit (Linux サーバ管理ツール) のローカルユーザを制限する

cockpit は PAM(8) を使ってローカルユーザの認証を行っています。
PAM は access.conf(5) でユーザ/グループ/IP 制限がかけられるのでこれを利用することで cockpit にログインできるユーザを制限することができます。

PAM の設定

インストールすると /etc/pam.d/cockpit ができているので
適当なエディタで編集してpam_access.so の行を追加します.
accessfile=path/to/access.config はなくてもかまいません。指定しなければ /etc/security/access.conf が利用されます。

/etc/pam.d/cockpit
#%PAM-1.0
# this MUST be first in the "auth" stack as it sets PAM_USER
# user_unknown is definitive, so die instead of ignore to avoid subsequent modules mess up the error code
-auth      [success=done new_authtok_reqd=done user_unknown=die default=ignore]   pam_cockpit_cert.so
auth       required     pam_sepermit.so
auth       substack     password-auth
auth       include      postlogin
auth       optional     pam_ssh_add.so
account    required     pam_nologin.so
account    required     pam_access.so accessfile=/etc/security/cockpit_access.conf ★この行を追加
account    include      password-auth
password   include      password-auth
# pam_selinux.so close should be the first session rule
session    required     pam_selinux.so close
session    required     pam_loginuid.so
# pam_selinux.so open should only be followed by sessions to be executed in the user context
session    required     pam_selinux.so open env_params
session    optional     pam_keyinit.so force revoke
session    optional     pam_ssh_add.so
session    include      password-auth
session    include      postlogin

追加する箇所は account include password-auth より前にする必要があります。
この順序を逆にすると、account include password-auth で読み込まれている password-auth に sufficient 行が含まれているため、そこで認証に成功しているとそのあとに書いた制限が評価されません。

access.conf の設定

accessfile に指定したパスに access.conf(5) の書式でファイルを用意します。
例えば、 cockpit グループを作ってそのグループに入っているユーザのみログインできるようにする場合は以下のようにします。

/etc/security/cockpit_access.conf
-:ALL EXCEPT (cockpit):LOCAL

書き方は <permission>:<user or group>:<access>
- <permission> は '-' (許可) または- (拒否) のどちらか
- user または group 名、ALL は全ユーザまたは全グループにを表していて、 EXCEPT は続くユーザ・グループの除外を指定します
- group の時は () をつけたほうがいいらしい?
- ALL EXCEPT (cockpit) は cockpit に属するユーザを除く全ユーザが対象
- <from> はアクセス元
- cockpit の場合は LOCALのみ利用している(?)

確認

ログインしてみて Permission Denied が出れば成功
codkpit.png

Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Comments
No comments
Sign up for free and join this conversation.
If you already have a Qiita account
Why do not you register as a user and use Qiita more conveniently?
You need to log in to use this function. Qiita can be used more conveniently after logging in.
You seem to be reading articles frequently this month. Qiita can be used more conveniently after logging in.
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
ユーザーは見つかりませんでした