CentOS 6 + LDAP + NFS。ファイルの所有権は「誰も」に固執しています


11

CentOS 6でLDAP認証とNFSエクスポートされたホームディレクトリを取得しようとしており、数日間動作しています。LDAPのユーザー名とパスワードを使用してクライアントマシンにログインできるようになりました。クライアントでは、/ homeおよび/ optがNFSを介してfstabにマウントされます。ただし、/ optと/ homeの両方のすべてのファイルはnobody:nobody、クライアントの(uid:99、gid:99)によって所有されます。

しかし、私のuidとgidは適切に設定されているようです:

-bash-4.1$ id
uid=3000(myusername) gid=3000(employees) groups=3000(employees)

他に何を確認できますか?クライアント上のいくつかの設定ファイルは次のとおりです。

/etc/nsswitch.conf

passwd:     files sss
shadow:     files sss
group:      files sss

hosts:      files dns

bootparams: nisplus [NOTFOUND=return] files

ethers:     files
netmasks:   files
networks:   files
protocols:  files
rpc:        files
services:   files

netgroup:   files sss

publickey:  nisplus

automount:  files ldap
aliases:    files nisplus

/etc/sssd/sssd.conf

[sssd]
config_file_version = 2
services = nss, pam

domains = default
[nss]

[pam]


[domain/default]
auth_provider = ldap
ldap_id_use_start_tls = True
chpass_provider = ldap
cache_credentials = True
krb5_realm = EXAMPLE.COM
ldap_search_base = dc=mycompany,dc=com
id_provider = ldap
ldap_uri = ldaps://server.subdomain.mycompany.com
krb5_kdcip = kerberos.example.com
ldap_tls_cacertdir = /etc/openldap/cacerts

# Configure client certificate auth.
ldap_tls_cert = /etc/openldap/cacerts/client.pem
ldap_tls_key = /etc/openldap/cacerts/client.pem
ldap_tls_reqcert = demand

/ etc / fstab

/dev/mapper/vg_main-lv_root /                       ext4    defaults        1 1
UUID=4e43a15d-4dc0-4836-8fa6-c3445fde756c /boot                   ext4    defaults        1 2
/dev/mapper/vg_main-lv_swap swap                    swap    defaults        0 0
tmpfs                   /dev/shm                tmpfs   defaults        0 0
devpts                  /dev/pts                devpts  gid=5,mode=620  0 0
sysfs                   /sys                    sysfs   defaults        0 0
proc                    /proc                   proc    defaults        0 0
storage1:/nas/home  /home  nfs   soft,intr,rsize=8192,wsize=8192
storage1:/nas/opt  /opt  nfs   soft,intr,rsize=8192,wsize=8192

authconfigの出力:

[root@test1 ~]# authconfig --test
caching is disabled
nss_files is always enabled
nss_compat is disabled
nss_db is disabled
nss_hesiod is disabled
 hesiod LHS = ""
 hesiod RHS = ""
nss_ldap is enabled
 LDAP+TLS is enabled
 LDAP server = "ldaps://server.subdomain.mycompany.com"
 LDAP base DN = "dc=mycompany,dc=com"
nss_nis is disabled
 NIS server = ""
 NIS domain = ""
nss_nisplus is disabled
nss_winbind is disabled
 SMB workgroup = ""
 SMB servers = ""
 SMB security = "user"
 SMB realm = ""
 Winbind template shell = "/bin/false"
 SMB idmap uid = "16777216-33554431"
 SMB idmap gid = "16777216-33554431"
nss_sss is disabled by default
nss_wins is disabled
nss_mdns4_minimal is disabled
DNS preference over NSS or WINS is disabled
pam_unix is always enabled
 shadow passwords are enabled
 password hashing algorithm is sha512
pam_krb5 is disabled
 krb5 realm = "EXAMPLE.COM"
 krb5 realm via dns is disabled
 krb5 kdc = "kerberos.example.com"
 krb5 kdc via dns is disabled
 krb5 admin server = "kerberos.example.com"
pam_ldap is enabled
 LDAP+TLS is enabled
 LDAP server = "ldaps://server.subdomain.mycompany.com"
 LDAP base DN = "dc=mycompany,dc=com"
 LDAP schema = "rfc2307"
pam_pkcs11 is disabled
 use only smartcard for login is disabled
 smartcard module = ""
 smartcard removal action = ""
pam_fprintd is enabled
pam_winbind is disabled
 SMB workgroup = ""
 SMB servers = ""
 SMB security = "user"
 SMB realm = ""
pam_sss is disabled by default
 credential caching in SSSD is enabled
 SSSD use instead of legacy services if possible is enabled
pam_cracklib is enabled (try_first_pass retry=3 type=)
pam_passwdqc is disabled ()
pam_access is disabled ()
pam_mkhomedir or pam_oddjob_mkhomedir is enabled ()
Always authorize local users is enabled ()
Authenticate system accounts against network services is disabled

ゲストと同じIDを表示したい場合は、NASもLDAPに接続する必要はありませんか?
ヤニックギルアール

ヤニック、返信ありがとう。私のNASユニットは、実際にはNFSデーモンを実行している単なるCentOSボックスです。他のLDAPクライアントと同じように構成されており、同じ「nobody」問題があります。
-jamieb

回答:


22

グーグル検索者のためにこれに追加するメモ-私たちが何をしても、nfsマウントがユーザーIDを正しくマップしないという同じ問題がありました。

問題は、idmapdが障害のある構成からの誤ったIDをキャッシュしていたため、構成を修正しないとソートされないことでした。

これを修正するためのcentos上のコマンドは、nfsidmap -c(キャッシュのクリア)でした。

うまくいけば、これはいくつかの絶望的な検索者を助ける..


18

解決しました!

/var/log/messagesリモートクライアントからエクスポートをマウントしようとしたときに、NFSサーバーで次の行にたまたま気付きました。

Feb 28 15:54:02 storage1 rpc.idmapd[1651]: nss_getpwnam: name 'nobody' does not map into domain 'localdomain'

これにより、次の最初の数行を見ることになりました/etc/idmapd.conf

[General]
#Verbosity = 0
# The following should be set to the local NFSv4 domain name
# The default is the host's DNS domain name.
#Domain = local.domain.edu

次にDomain=subdomain.mycompany.com、コメントアウトされた「ドメイン」行の下に追加しました。保存して終了し、実行して/etc/init.d/rpcidmapd restartから/etc/init.d/nfs restart


これは私を助けました。サーバーとすべてのクライアントの両方でこの変更を行う必要があったことに注意してください。
マイケルハンプトン

1

私はあなたの問題を解決するかもしれないブログ投稿を見つけました:http ://whacked.net/2006/07/26/nfsv4nfs-mapid-nobody-domain/次のフォーラム投稿から見つけました:https://www.centos。 org / modules / newbb / viewtopic.php?topic_id = 32977


私はこれを少し遅れて投稿しましたが、それはあなたのためにそれを修正した類似のもののように見えます。良いもの!
ヤニックギルアール

0

NFSサーバーでCentos / RHEL 5が実行されていますか?

その場合、NFSv3をエクスポートしています。NFSv4がCentos6(および最近のUbuntuバリアント)のデフォルトになりました。

簡単な修正方法は、/ etc / fstabのマウントオプションに「vers = 3」を追加することです。

例えば

//10.0.0.1:/home / home nfs defaults、vers = 3、rw、noatime 0 0


提案をありがとう。LDAPサーバー、クライアント、およびNFSサーバーはすべてCentOS 6.2を実行しています。バージョン3オプションを使用してクライアントをマウントしようとすると、クライアントでアクセス拒否エラーが発生します。
-jamieb

これをrootユーザーとしてテストしていますか?linuxtopia.org/online_books/rhel6/rhel_6_storage_admin/…を読むと便利です。NFSサーバーでno_root_squashを有効にする価値があるかもしれません。
NcA

解決済み(下記の回答を参照)!私は主にLDAPを見ていたので、NFSについてもっと考えさせてくれてありがとう。
-jamieb

0

「nobody」にマッピングされるものはすべて、all_squashがオンになっているように聞こえます。

を見てみましょう:

http://www.centos.org/docs/5/html/Deployment_Guide-en-US/s1-nfs-server-config-exports.html

NFSサーバーの/ etc / exportsファイルがUIDを意図せず押しつぶさないことを確認します。「no_all_squash」はデフォルトのはずですが、明示的に設定して何が起こるかを試してみることができます。


1
残念ながら、運はありません。しかし、興味深いことに、mount storage1:/nas/opt /mnt/testスタンドアロンクライアントではまだ "nobody"問題が発生しますが、NFSサーバーで同じコマンドが問題なく機能します。これがNFSの問題かSSSD / NSSの問題かを知っていればいいのですが。
-jamieb

0

私にとっての修正は、ローカルマシンのDNSレコードが存在することを確認することです。逆引き参照レコードも存在する場合にも役立ちます。その結果、nobodyユーザーとグループはrootに置き換えられました。それは簡単ですか?!?PSは、DNSレコードが作成されたら、ローカルマシンを再起動することを忘れないでください。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.