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
jamieb
источник
Разве вам не нужно подключать 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.

jamieb
источник
Это помогло мне. Отмечу, что мне пришлось внести это изменение как на сервере, так и на всех клиентах.
Майкл Хэмптон
1

Я нашел сообщение в блоге, которое может решить вашу проблему: http://whacked.net/2006/07/26/nfsv4nfs-mapid-nobody-domain/, которое я нашел в следующем сообщении на форуме: https: //www.centos. орг / модули / 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, noatime 0 0

NCA
источник
Спасибо за предложение. Сервер 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

Все, что отображается в "nobody", звучит так, как будто all_squash включен.

Взгляни на:

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

и убедитесь, что файл / etc / exports на сервере NFS непреднамеренно уничтожает UID. «no_all_squash» предполагается по умолчанию, но вы можете попробовать явно установить его и посмотреть, что произойдет.

CJC
источник
1
К сожалению, не повезло. Но что интересно, mount storage1:/nas/opt /mnt/testна автономном клиенте все еще возникает проблема «никто», но та же команда на NFS-сервере работает без проблем. Хотел бы я знать, была ли это проблема NFS или SSSD / NSS.
jamieb
0

Исправление для меня - убедиться, что запись DNS существует для локальной машины. Также помогает, если существует запись обратного просмотра. В результате пользователь и группа nobody были заменены пользователем root. Насколько это просто?!? PS не забудьте перезагрузить локальную машину после создания DNS-записей.

user242020
источник