Решением было расширить диапазон карты id, видимый в ldap ldap, наше объявление очень большое, и похоже, что диапазон по умолчанию был недостаточно большим, чтобы охватить всех пользователей в диапазоне, что означает, что он сможет преобразовать только objectSID, который он мог видеть. Мой SID был намного выше, чем у моего коллеги, поэтому он смог войти в систему, а я - нет.
Решением было добавить следующее в основную часть SSSD.conf
ldap_idmap_default_domain_sid = SID OF THE DOMAIN ldap_idmap_range_min = 200000 ldap_idmap_range_max = 2000200000 ldap_idmap_range_size = 1000000
Давай попробуем!
Оболочка изменена на сервере:
[myserver ~]% getent passwd myuser
myuser:x:150:150:myuser:/home/myuser:/foo
Давайте авторизуемся:
[myclient ~]% ssh myserver
Received disconnect from myserver: 2: Too many authentication failures for myuser
Из журналов SSH на сервере:
Nov 22 09:30:27 myserver sshd[20719]: Accepted gssapi-with-mic for myuser from myclient port 33808 ssh2
Nov 22 09:30:27 myserver sshd[20719]: pam_unix(sshd:session): session opened for user myuser by (uid=0)
Nov 22 09:31:18 myserver sshd[20727]: Received disconnect from myclient: 11: disconnected by user
Nov 22 09:31:18 myserver sshd[20719]: pam_unix(sshd:session): session closed for user myuser
Nov 22 09:31:20 myserver sshd[20828]: User myuser not allowed because shell /foo does not exist
Nov 22 09:31:20 myserver sshd[20835]: input_userauth_request: invalid user myuser
Nov 22 09:31:20 myserver sshd[20835]: Disconnecting: Too many authentication failures for myuser
Ключевая строка: Пользователь myuser не разрешен, потому что shell / foo не существует
. Таким образом, вы не можете войти в систему, если у вас нет действующей оболочки.
Нет отката. Появится сообщение об ошибке, например ...
Cannot execute /does/not/exist: No such file or directory.
Вы можете добавить вызов zsh
, не изменяя AD.
echo 'exec zsh' >> ~/.bashrc
Затем каждый раз, когда вы входите в систему с помощью bash
, вы автоматически запускаете zsh
.
Как уже говорилось, вы застрянете в цикле входа в систему и не сможете войти в систему.
К сожалению, текущий ответ также вызовет циклы входа в систему, если он используется, так как вызов exec приведет к сбою. Он также будет игнорировать аргументы, переданные bash, предотвращая наиболее сложные варианты использования.
Добавление
[ -x "$(command -v zsh)" ] && exec zsh "$@"
поскольку первая строка .bashrc
сначала проверяет, доступен ли zsh
Добавление
[ -n "$GNOME_TERMINAL_SCREEN" ] && [ -x "$(command -v zsh)" ] && exec zsh "$@"
следует также проверить, запускаете ли вы оболочку в терминале gnome вместо tty