Вашим sed является не-GNU (вероятно), таким образом-i для того, чтобы на месте отредактировать не поддерживается. Можно избежать его при помощи временного файла:
sed -i -e'/test1/s/^/#SB#/g' file1
становится
sed -e'/test1/s/^/#SB#/g' file1 > temp_file
mv temp_file file1
Конечно, можно сделать это лучше при помощи mktemp как это
tmpfile=`mktemp`; sed -e '/test1/s/^/#SB#/g' file1 > $tmpfile; mv $tmpfile file1
Абсолютно для предотвращения sed и перенаправления без временного файла, поскольку исходный файл станет усеченным.
Поскольку управление доступом потребовало бы большой работы arounds на локальном хосте, мы решили только создать группу в Active Directory и ограничить логины пользователей в той группе.
Это может быть сделано путем редактирования/etc/security/pam_winbind.conf файла со следующим полем с SIDs групп или пользователей, мы хотим ограничить доступ к (разделенная запятая).
require_membership_of=
Мы затем отфильтруем наши chroot ограничения на ту группу (или поместим пользователей в локальную группу) ограничить их sftp доступ к их собственным корневым каталогам. Это также позволит нам добавлять выполнение случайную работу mkhomedir назад к pam и затем предоставлять доступ к серверу, мы просто должны добавить пользователя к той группе. Они могут затем войти в систему, и их домашний dir будет создан автоматически.
Спасибо все для справки/идей, но похоже, что AD группами будет самым легким управлять, в конце концов.
Решение 1:
Вы можете модуль PAM pam_homecheck
Все, что это делает, проверить, существует ли корневой каталог пользователя и отказывается от сессии, если ни один не найден.
проблема, это только доступно в openSUSE, но можно поместить pam_homecheck.so
от загруженных пакетов и зависимости от установки со справкой ldd pam_homecheck.so
.
Решение 2: можно добавить ниже содержания в /etc/bashrc
но Только применимый для входа в систему оболочки/шпаклевки
[[ $HOME == / ]] && { echo "Error: Home Dir not define.."; exit 1; }
Решение 3:
Отклоните, если домашний dir не установил (протестированный и работающий ниже шагов в Ubuntu)
Отклонять WinScp
aptitude install libpam-script
Открытый"/etc/pam.d/common-auth
"с Вашим faorite редактором и добавляют ниже записей
auth optional pam_script.so # add at the last
Открытый"/usr/share/libpam-script/pam_script_auth
"с Вашим любимым редактором и добавляют ниже записей
#!/bin/bash
Pam_home=$(awk -v u=$PAM_USER -F: '($1 == u ){print $6}' /etc/passwd)
if [[ $Pam_home == / ]]; then
echo "Error: Home Dir not define.."
kill -9 $PPID # Force fully kill winscp pid
else
/usr/lib/openssh/sftp-server
fi
Отклонять от входа в систему Shell/шпаклевки
Это отошлет и запустит тот же скрипт от местоположения по умолчанию т.е."/usr/share/libpam-script/pam_script_auth
"Или можно проверить в журналах"tail -f /var/log/auth.log
"
Один способ идти об этом состоял бы в том, чтобы вынудить их использовать ключи для ssh и запретить логины ssh с помощью паролей. Тот путь только люди с / домой / <пользователь>/.ssh/authorized_keys файл сможет соединиться.