CentOS 6 + LDAP + NFS. Kepemilikan file macet di “tidak ada”

11

Saya sudah mencoba untuk mendapatkan otentikasi LDAP dan direktori home yang diekspor NFS di CentOS 6 berfungsi selama beberapa hari sekarang. Saya telah sampai pada titik bahwa sekarang saya dapat masuk ke mesin klien menggunakan nama pengguna dan kata sandi di LDAP. Pada klien, / home dan / opt dipasang di fstab melalui NFS. Namun, setiap file di / opt dan / home dimiliki oleh nobody:nobody(uid: 99, gid: 99) pada klien.

Namun, uid dan gid saya tampaknya diatur dengan benar:

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

Apa lagi yang bisa saya periksa? Berikut adalah beberapa file konfigurasi pada klien saya:

/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

keluaran 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
jamieb
sumber
Tidakkah Anda perlu menghubungkan NAS Anda ke LDAP juga jika Anda ingin melihat ID yang sama dari tamu Anda?
Yanick Girouard
Yanick, terima kasih atas jawabannya. Unit NAS saya sebenarnya hanyalah kotak CentOS yang menjalankan daemon NFS. Ini dikonfigurasi sama dengan klien LDAP saya yang lain dan memiliki masalah "tidak ada" yang sama.
jamieb

Jawaban:

22

Catatan untuk ditambahkan ke ini untuk pencari Google - kami memiliki masalah yang sama di mana tidak peduli apa yang kami lakukan, nfs mount tidak akan memetakan id pengguna dengan benar.

Masalahnya adalah idmapd telah membuat cache id yang salah dari konfigurasi yang salah, dan tidak ada perbaikan konfigurasi yang akan mengurutkannya.

Perintah pada centos untuk memperbaikinya adalah nfsidmap -c (hapus cache).

Semoga ini membantu beberapa pencari yang putus asa ..

Sam
sumber
18

Terpecahkan!

Saya kebetulan melihat baris ini di /var/log/messagesserver NFS saya ketika saya mencoba untuk me-mount ekspor dari klien jarak jauh:

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

Ini menyebabkan saya melihat beberapa baris pertama /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

Saya kemudian menambahkan di Domain=subdomain.mycompany.combawah baris "Domain" yang dikomentari. Disimpan, keluar dan kemudian jalankan /etc/init.d/rpcidmapd restartdan /etc/init.d/nfs restart.

jamieb
sumber
Ini membantu saya. Saya akan perhatikan bahwa saya harus melakukan perubahan pada server dan semua klien.
Michael Hampton
0

Apakah server NFS Anda menjalankan Centos / RHEL 5 secara kebetulan?

Jika demikian, itu mengekspor NFSv3. NFSv4 sekarang menjadi default untuk Centos6 (dan varian Ubuntu terbaru).

Perbaikan cepat adalah menambahkan "vers = 3" pada opsi pemasangan di / etc / fstab.

misalnya

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

NcA
sumber
Terima kasih untuk sarannya. Server LDAP, klien, dan server NFS semuanya menjalankan CentOS 6.2. Saya mendapatkan izin yang ditolak kesalahan pada klien ketika saya mencoba untuk memasangnya dengan opsi versi 3.
jamieb
Apakah Anda menguji ini sebagai pengguna root? Beberapa bacaan ringan bermanfaat linuxtopia.org/online_books/rhel6/rhel_6_storage_admin/… . Mungkin layak mengaktifkan no_root_squash di server NFS.
NcA
Dipecahkan (lihat jawaban di bawah)! Terima kasih telah membuat saya lebih memikirkan NFS karena saya melihat sebagian besar pada LDAP.
jamieb
0

Semua yang dipetakan ke "tidak ada" terdengar seperti all_squash dihidupkan.

Melihat:

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

dan verifikasi bahwa file / etc / ekspor server NFS tidak secara tidak sengaja menindas UID. "no_all_squash" seharusnya default, tetapi Anda dapat mencoba mengaturnya secara eksplisit dan melihat apa yang terjadi.

cjc
sumber
1
Sayangnya tidak berhasil. Tetapi yang menarik, mount storage1:/nas/opt /mnt/testpada klien mandiri masih memberi saya masalah "tidak ada", namun perintah yang sama pada server NFS bekerja tanpa masalah. Saya berharap saya tahu apakah ini masalah NFS atau SSSD / NSS.
jamieb
0

Perbaikan untuk saya adalah memastikan catatan DNS ada untuk mesin lokal. Juga membantu jika catatan pencarian terbalik juga ada. Akibatnya, pengguna dan grup siapa pun digantikan oleh root. Seberapa sederhana itu?!? PS ingat untuk me-reboot mesin lokal setelah catatan DNS dibuat.

pengguna242020
sumber