私は、一般ユーザー向けのLXDEおよびlxde-session自動ログイン機能を備えたシングルユーザーワークステーションでArch Linuxを使用しています。次に、「su」または「sudo」を使用してroot権限を取得し、「useradd」を実行しようとします。
私のシステムでは、useraddが失敗します。システムは1年も経っていないため、最初から再インストールされ、「pacman -Syu」が定期的に実行されます。私はカスタムシステム管理をあまりしません。主に通常のユーザーアカウントでLXDEとvim / gcc / makeを実行します。 pacmanがuseraddを実行しようとすると失敗します。
最近のインストール後、システムでmariadbやpercona-serverが起動しないという問題が発生し、mysqlユーザーが正しく作成されないことを追跡しました。 useraddを手動で実行しようとしたときにユーティリティが破損していることがわかりました。インターネット検索の後、人々はこれが/etc/shadowまたは/etc/pam.d/の設定ファイルに問題がある可能性があると考えて調査しました。
私が受け取るエラーは次のとおりです。 useradd:PAM:認証サービスは認証情報を取得できません。
useraddでstraceを実行すると、/etc/shadowと/etc/passwdを開くことができるように見え、getuid()は「root」に対して0を返します。
open("/etc/pam.d/other", O_RDONLY) = 3
fstat(3, {st_mode=S_IFREG|0644, st_size=127, ...}) = 0
mmap(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x7f1a7c0eb000
read(3, "#%PAM-1.0\nauth\t\trequired\tpam_uni"..., 4096) = 127
read(3, "", 4096) = 0
close(3) = 0
munmap(0x7f1a7c0eb000, 4096) = 0
getuid() = 0
getuid() = 0
open("/etc/login.defs", O_RDONLY) = 3
fstat(3, {st_mode=S_IFREG|0644, st_size=5519, ...}) = 0
mmap(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x7f1a7c0eb000
read(3, "#\n# /etc/login.defs - Configurat"..., 4096) = 4096
read(3, "gular users using chfn - use\n# a"..., 4096) = 1423
read(3, "", 4096) = 0
close(3) = 0
munmap(0x7f1a7c0eb000, 4096) = 0
open("/etc/passwd", O_RDONLY|O_CLOEXEC) = 3
fstat(3, {st_mode=S_IFREG|0644, st_size=610, ...}) = 0
mmap(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x7f1a7c0eb000
read(3, "root:x:0:0:root:/root:/bin/bash\n"..., 4096) = 610
close(3) = 0
munmap(0x7f1a7c0eb000, 4096) = 0
geteuid() = 0
open("/etc/shadow", O_RDONLY|O_CLOEXEC) = 3
fstat(3, {st_mode=S_IFREG|0600, st_size=413, ...}) = 0
mmap(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x7f1a7c0eb000
read(3, "root:x::::::\nbin:x:14871::::::\nd"..., 4096) = 413
read(3, "", 4096) = 0
close(3) = 0
munmap(0x7f1a7c0eb000, 4096) = 0
write(2, "useradd: PAM: Authentication ser"..., 73useradd: PAM: Authentication service cannot retrieve authentication info
) = 73
設定ファイルがよさそうです。
[root@robot1 jwatte]# cat /etc/pam.d/useradd
#%PAM-1.0
auth sufficient pam_rootok.so
auth required pam_unix.so
account required pam_unix.so
session required pam_unix.so
password required pam_permit.so
[root@robot1 jwatte]# cat /etc/pam.d/other
#%PAM-1.0
auth required pam_unix.so
account required pam_unix.so
password required pam_unix.so
session required pam_unix.so
[root@robot1 jwatte]#
この問題を解決してデバッグするための次のステップは何ですか? PAMの決定が失敗する理由のデバッグはどこにありますか?以前の/var/log/auth.logはもう存在しなくなり、Journalctl -bはあまり役に立ちません。
May 17 09:52:15 robot1 sudo[676]: pam_unix(sudo:session): session opened for user root by jwatte(uid=0)
May 17 09:52:15 robot1 useradd[677]: Authentication service cannot retrieve authentication info
May 17 09:52:15 robot1 useradd[677]: failed adding user 'mysql', data deleted
まだPAMから多くの情報を得ることはできません。具体的には、どのモジュールがどの段階で失敗しましたか?私はuseraddのコードとPAMのコードを読みました(ああ!ゴーグル!彼らは何もしません!)最終的にpam_warn.soを「other」に追加し、「account」操作の「useradd」を追加しました。 Journalctlに1行を追加する必要があります。
May 17 11:04:54 robot1 useradd[29944]: pam_warn(useradd:account): function=[pam_sm_acct_mgmt] service=[useradd] terminal=[<unknown>] user=[root] ruser=[<unknown>] rhost=[<unknown>]
端末、ruser、およびrhost未知の間にどのような関係がありますか?私はどのように知っていますか?
答え1
最初の行を見てください/etc/shadow
。フィールドが欠落しているようです。
答え2
未知ルーターそして所有者遠くないから予想されます。未知端末 驚くかもしれませんが、それはあなたの悩みの原因ではないかもしれません。
ほとんどのPAMモジュールはデバッグパラメーターはより多くの情報を提供できます。例えば、
auth required pam_unix.so debug
あなたのアカウントにLDAPのようなものを設定しましたか/etc/nsswitch.conf
? 「認証情報を取得できません」は、LDAPアカウントを使用してシステムにローカルユーザーを追加しようとしたときに発生したエラーを思い出させます。
Arch Linux用SELinuxやその他の高度なセキュリティ層のようなものはありますか?