LINUX.ORG.RU

Принудительный logout, если нет home dir 2

 login.defs, , no homedir


0

1

Ребята,

должен снова вас спросить все по той же теме: Принудительный logout, если нет home dir

вчера установил последнюю версию CentOS 6.3 и сразу добавил в /etc/login.defs: DEFAULT_HOME no Но к сожалению никакого результата :(

Если через просиходит login или su и у чела нет homedir, то он не должен получить shell, вместо этого получает :(

[root@clt03:/home]# su - user1
su: warning: cannot change directory to /home/user1: No such file or directory
[user1@clt03:/home]$ 

если посмотреть в man login.defs, то DEFAULT_HOME задокументирована:

       DEFAULT_HOME (boolean)
           Indicate if login is allowed if we can´t cd to the home directory. Default in no.

           If set to yes, the user will login in the root (/) directory if it is not possible to cd to her
           home directory.

Но результата не видно. На Ubuntu же она работает.

Может быть нужно в /etc/pam.d/system-auth что то изменить?

Сейчас это выглядит вот так:

#%PAM-1.0
# This file is auto-generated.
# User changes will be destroyed the next time authconfig is run.
auth        required      pam_env.so
auth        sufficient    pam_fprintd.so
auth        sufficient    pam_unix.so nullok try_first_pass
auth        requisite     pam_succeed_if.so uid >= 500 quiet
auth        required      pam_deny.so

account     required      pam_access.so
account     required      pam_unix.so
account     sufficient    pam_localuser.so
account     sufficient    pam_succeed_if.so uid < 500 quiet
account     required      pam_permit.so

password    requisite     pam_cracklib.so try_first_pass retry=3 type=
password    sufficient    pam_unix.so sha512 shadow nis nullok try_first_pass use_authtok
password    required      pam_deny.so

session     optional      pam_keyinit.so revoke
session     required      pam_limits.so
session     [success=1 default=ignore] pam_succeed_if.so service in crond quiet use_uid
session     required      pam_unix.so

Вот еще один конфиг /etc/sysconfig/authconfig:

IPADOMAINJOINED=no
USEMKHOMEDIR=no
USEPAMACCESS=yes
CACHECREDENTIALS=yes
USESSSDAUTH=no
USESHADOW=yes
USEWINBIND=no
USEDB=no
FORCELEGACY=no
USEFPRINTD=yes
FORCESMARTCARD=no
PASSWDALGORITHM=sha512
USELDAPAUTH=no
USEPASSWDQC=no
IPAV2NONTP=no
USELOCAUTHORIZE=yes
USECRACKLIB=yes
USEIPAV2=no
USEWINBINDAUTH=no
USESMARTCARD=no
USELDAP=no
USENIS=yes
USEKERBEROS=no
USESYSNETAUTH=no
USESSSD=no
USEHESIOD=no

Заранее большое спасибо за помощь!



Последнее исправление: Igorek (всего исправлений: 1)

добавил в /etc/login.defs: DEFAULT_HOME no Но к сожалению никакого результата

cannot change directory to /home/user1: No such file or directory

всё правильно сделал. Если хочешь без логина, то вбей вместо шелла /bin/nologin, это можно и по дефолту сделать не. В слаке и в дебе есть adduser, а в красношапке только симлинк. А может и можно как-то, только я не помню как.

drBatty ★★
()
Ответ на: комментарий от drBatty

Дело в том, что машина находится в NIS домене и через эту функцию я хотел бы достичь того, что бы только те могли коннектится, у кого есть homedir... Почему в Ubuntu это активируется через DEFAULT_HOME, а в CentOS нет? Думаю где то в настройках что то надо поменять, но что??

Igorek
() автор топика
Ответ на: комментарий от Igorek

Дело в том, что машина находится в NIS домене

тогда вопрос не ко мне.

drBatty ★★
()

Чувак, а может, не стоит мучать себе мозг и другим тоже? Я всё понимаю, я сам таким был не очень давно. Поставь Slackware. Хоть 14.0, хоть 13.37. О, да, по умолчанию у него него LILO и нет графического логина (о, ужас!) только по startx, но есть же возможность это легко изменить. В inittab runlevel. Только я бы посоветовал сначала кеды настроить, ибо по умолчанию экран приветствия почему-то на арабском.
Дело не в этом. Дело в том, что сколько я использую слаку на разных машинках - железки подхватывает на раз. Слава Патрику. И видео в том числе.
Для создания юзера все не настолько сурово, как кажется. Просто не useradd, а скрипт adduser. Который кроме прочего предлагает ввести каталог, где твой /home/user

cadaber ★★
()
Последнее исправление: cadaber (всего исправлений: 1)

Насчет практического юзания слакваре я тебе могу предоставить хоть сотню скриншотов. Потому как он у меня реально рабочая ось. Да, есть оригинальная вин7 ноута, я ее не удалял, зачем? Может пригодится. Пока пригождается, если скучно станет и поиграть приспичит.

cadaber ★★
()
Ответ на: комментарий от cadaber

ибо по умолчанию экран приветствия почему-то на арабском.

может ты ВСЕ локализации кед поставил, а первой по алфавиту арабская получилась? По дефолту, кстати, вообще ничего не ставится, даже русской локализации (не путать с локалью!)

Просто не useradd, а скрипт adduser. Который кроме прочего предлагает ввести каталог, где твой /home/user

он хочет странного - если нет каталога, юзера надо принудительно ВЫКИДЫВАТЬ (непонятно откуда и куда).

drBatty ★★
()
Ответ на: комментарий от drBatty

он хочет странного - если нет каталога, юзера надо принудительно ВЫКИДЫВАТЬ (непонятно откуда и куда).

Он не хочет странного. Он (скрипт) создает каталог сам, если его там нет. А вот вы, батенька, ерунду говорите.

может ты ВСЕ локализации кед поставил, а первой по алфавиту арабская получилась?

Не исключаю такой возможности. Следует заметить, что при просмотре иракских или китайских ресурсов мне не хотелось бы видеть квадратики или другие символы. Поэтому я включил многонациональную поддержку языков. Это подойдёт?
Если до некоторых дебилов это не доходит,

cadaber ★★
()

Вам нужно действовать через pam. Правда я не знаю, какой именно модуль нужен, но можно сделать костыль через ″pam_mkhomedir.so″.

Добавляете куда нужно:

session     required      pam_mkhomedir.so skel=/nodir
и получаете, что если домашнего каталога нет, модуль pam_mkhomedir попытается его создать, но не найдёт каталог /nodir, завершится с ошибкой и процедура создания сессии пользователя не пройдёт.

Каталог ″/etc/pam.d″ изучите сами и определите в какие файлы вам нужно вставить эту строку, наверное, в ″login″, ″sshd″, ″su″... Главное, редактируя эти файлы держите открытой root-консоль и не закрывая её проверяйте, что после редактирования login администратора проходит, а то если pam-файлы поломать, придётся грузится с livecd.

mky ★★★★★
()
Ответ на: комментарий от cadaber

Он не хочет странного. Он (скрипт) создает каталог сам, если его там нет. А вот вы, батенька, ерунду говорите.

да я про ТСа, а скрипта у него нема, только симлинк.

Не исключаю такой возможности. Следует заметить, что при просмотре иракских или китайских ресурсов мне не хотелось бы видеть квадратики или другие символы. Поэтому я включил многонациональную поддержку языков. Это подойдёт? Если до некоторых дебилов это не доходит,

ась?

это, блин ЛОКАЛИЗАЦИЯ, проспись - надписи в меню и прочее такое.

а китайский и у меня работает: 伏特加酒不夠喝,妓女們的盛宴

drBatty ★★
()
Ответ на: комментарий от drBatty

Он хочет вполне понятного. Он хочет для каждой машины ограничить список пользователей, которые могут запустить там shell.

У него NIS, это до некоторой степени аналог LDAP, пользователи там не создаются на машине локально с помощью ″useradd″. Они создаются централизованно и на всех машинах в локальной сети (домене) один большой список пользователей. А ТС не нужно, чтобы произвольный пользователь из этого списка мог работать на произвольной машине. При этом, если пользователю в passwd прописать nologin, то он не сможет получить шелл ни на одной машине, что ТС не подходит.

mky ★★★★★
()
Ответ на: комментарий от mky

Он хочет вполне понятного. Он хочет для каждой машины ограничить список пользователей, которые могут запустить там shell.

это я понял.

А ТС не нужно, чтобы произвольный пользователь из этого списка мог работать на произвольной машине. При этом, если пользователю в passwd прописать nologin, то он не сможет получить шелл ни на одной машине, что ТС не подходит.

а что, там не предусмотрен нормальный способ это сделать? Только прибить домашний каталог?

drBatty ★★
()
Ответ на: комментарий от mky

да, а что делать, если я желаю сделать для какого-то пользователя каталог, но не хочу давать ему shell? ИМХО это очень частая ситуация.

drBatty ★★
()
Ответ на: комментарий от drBatty

Я плохо помню NIS, не знаю, как там изначально предпологалось решать задачу создания домашнего каталога пользователя и ограничения логинов. Создание пользователя в NIS подразумевает, что все системы получают информацию о логине, UID, пароле пользователя, но не его домашний каталог.

Насколько я понял, ТС решает задачу, что если у пользователя нет домашнего каталога, то нефиг ему запускать login-shell. pam_mkhomedir.so позволяет эмулировать DEFAULT_HOME, как и просил ТС.

Возможно моё решение не лучшее, но других вариантов ему не предложили. Дополнительные ограничения на login-shell можно создать другими pam-модулями. Допустим, если пользователю нужен домашний каталог, но не нужен shell, можно создать ему этот каталог, но запретить ему session через модуль pam_listfile.so.

mky ★★★★★
()
Ответ на: комментарий от mky

Он хочет для каждой машины ограничить список пользователей, которые могут запустить там shell.

Если ТС действительно хочет именно этого, то правильный способ сделать это в NIS - использовать сетевые группы (netgroups), а не играть с отсутствием домашнего каталога.

В /etc/passwd прописывается

+@netgroup_name::::::
после чего в passwd попадают не все пользователи из NIS-домена, а только те, которые включены в эту группу.

bigbit ★★★★★
()
Ответ на: комментарий от mky

Это родной способ для NIS ограничения доступа к хостам.
Админит ли он NIS, разрешат ли ему создать там группу, пропустит ли его охрана на работу на следующей неделе - это уже из разряда организационных вопросов, про которые ТС ничего не писал, и довольно странно здесь это обсуждать.

bigbit ★★★★★
()
Ответ на: комментарий от bigbit

Этот родной способ не решает проблемы логина пользователя в отсутствии домашнего каталога. ТС ничего не говорил, по какой причине ему это нужно, но с его точки зрения не логично разрешать пользователю работать, если домашнего каталога нет.

Довольно странно начинать обсуждать другие способы ограничения логина не дождавшись от ТС ответа по поводу его прав на создание отдельной NIS-группы и причину отсутствия домашнего каталога. Все здесь предположили, что ТС удаляет $HOME пользователей для ограничения доступа, хотя может он просто закрывается от логина пользователей при не рабочем NFS-сервер с их домашними каталогами. Или просто начальство от него требует, чтобы Centos вела себя аналогчно солярису (солярису с принятыми у них настройками).

mky ★★★★★
()
Ответ на: комментарий от mky

Ok, ждем ответа ТС.
Заметь - не я первый начал додумывать, что он хочет =)

Кстати, еще один вопрос к ТС: как он добился такого поведения на Солярке?
Там без домашнего каталога нельзя сделать только su. И похоже, что это ограничение на на уровне PAM, а в самом коде su.
Остальные же способы - sshd, login (c консоли) прекрасно логинят пользователя без домашнего каталога, и я не нашел, как это запретить.
Или, может, ТС проверял на Солярке только su?

bigbit ★★★★★
()
Ответ на: комментарий от mky

Ответы

Большое спасибо, отвечу сразу коротко на открытые вопросы

1) NIS не администрирую

2) Домашний каталог цепляется через autofs, т.е. если он есть на файловом сервере, то и автоматически произойдет mount и комбинация NIS Account + HomeDir позволяет или не позволяет работать

3) Действительно, я проверил только su на солярисе. Но зато проверил на Ubuntu DEFAULT_HOME, там все очень хорошо работает

Я попробую сейчас с PAM по совету mky. Есть есть возможность, установить /etc/sshd/sshd_config - AllowUsers, но хотелось бы попроще как в Ubuntu

Igorek
() автор топика
Последнее исправление: Igorek (всего исправлений: 1)
Ответ на: Ответы от Igorek

Так а цель-то у этого ограничения какая?
Это такая забота о пользователе, чтобы он не залогинился в промежуток времени, когда аккаунт в NIS уже создан, а домашний каталог - еще нет, и не испытал шок от отсутствия домашнего каталога?

bigbit ★★★★★
()
Ответ на: комментарий от bigbit

Ну нет конечно :) Просто в NIS 1000 аккаунтов, а очень не хотелось бы, что бы каждый «мог» .. Буду добиваться создания группы... Или ограничивать каким то другим способом. Но почему описаная в мануалах плюшка под названием DEFAULT_HOME не работает на CentOs(Redhat), но работает на других дистрибутивах, остается мне не понятным :(

Благодарю всех за ответы, советы! Буду добиваться создания NIS - Netgroup

Igorek
() автор топика
Ответ на: комментарий от Igorek

Наверное вот почему DEFAULT_HOME не работает:

       Much of the functionality that used to be provided by the shadow password suite is now handled by PAM.
       Thus, /etc/login.defs is no longer used by programs such as: login(1), passwd(1), su(1). Please refer to
       the corresponding PAM configuration files instead.
Это из man login.defs в OEL (других RH-образных нет под рукой).

bigbit ★★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.