CentOS 6 + LDAP + NFS. Право власності на файл закріплено на "ніхто"


11

Я вже кілька днів намагаюся отримати автентифікацію LDAP, і NFS експортує домашні каталоги на CentOS 6. Я зрозумів, що тепер я можу увійти на клієнтську машину, використовуючи ім'я користувача та пароль у LDAP. На клієнті / home та / opt встановлені у fstab над NFS. Однак кожен файл обох / 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

/ тощо / 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

Чи вам не потрібно підключати ваш NAS до LDAP, якщо ви хочете, щоб він бачив той самий ідентифікатор, що і ваші гості?
Янік Жируар

Янік, дякую за відповідь. Мій блок NAS - це насправді ще одна коробка CentOS, на якій працює демон NFS. Він налаштований так само, як і інші мої клієнти LDAP, і має таку ж проблему "ніхто".
jamieb

Відповіді:


22

Зауваження, яке слід додати до пошукових запитів google - у нас була та сама проблема, де незалежно від того, що ми зробили, монстр nfs не буде правильно відображати ідентифікатори користувачів.

Проблема idmapd кешувала неправильні ідентифікатори з несправної конфігурації, і жодне виправлення конфігурації не сортувало б її.

Команда на 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 / модулі / newbb / viewtopic.php? topic_id = 32977


Я опублікував це запізно, але, схоже, це було щось подібне, що виправило це для вас. Хороший матеріал!
Янік Жируар

0

Чи випадково ваш сервер NFS запускає Centos / RHEL 5?

Якщо так, то він експортує NFSv3. NFSv4 тепер є типовим для Centos6 (і останніх варіантів Ubuntu).

Швидке виправлення полягає в тому, щоб додати "vers = 3" у параметри монтажу в / etc / fstab.

напр

//10.0.0.1:/home / home nfs за замовчуванням, vers = 3, rw, timeat 0 0


Дякую за пропозицію. Сервер LDAP, клієнт і сервер NFS працюють на CentOS 6.2. Я отримую дозвіл відхиленого від клієнта помилки, коли я намагаюся встановити його за допомогою версії 3.
jamieb

Ви тестуєте це як користувач root? Деякий корисний світло читання linuxtopia.org/online_books/rhel6/rhel_6_storage_admin / ... . Можливо, варто включити no_root_squash на сервері NFS.
NcA

Вирішено (див. Відповідь нижче)! Дякую, що змусив мене більше думати про NFS, оскільки я дивився здебільшого на LDAP.
jamieb

0

Все, що відображається на "ніхто", звучить як увімкнено all_squash.

Подивись на:

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

і переконайтесь, що файл / etc / експорту сервера NFS ненавмисно не розбиває UID. "no_all_squash" повинен бути за замовчуванням, але ви можете спробувати встановити це явно і побачити, що відбувається.


1
Не пощастило, на жаль. Але цікаво, що mount storage1:/nas/opt /mnt/testна автономному клієнті все ж виникає проблема «ніхто», але ця ж команда на сервері NFS працює без проблем. Я б хотів, щоб я знав, чи це проблема NFS чи SSSD / NSS.
jamieb

0

Виправлення для мене полягає в тому, щоб переконатися, що запис DNS існує для локальної машини. Також допомагає, якщо запис зворотного пошуку також існує. У результаті нікого користувача та групи не замінили root. Наскільки це просто?!? PS не забудьте перезавантажити локальну машину після створення записів DNS.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.