Я знаю, что эта ветка устарела. Однако я наткнулся на это, пытаясь сделать то же самое в CentOS 7. Я думаю, что процесс такой же. Мне нужно было изменить каталоги нескольких пользователей с /home/USER
на /home/ldap-users/USER
.
Сначала создайте файл ldif с изменениями, которые вы хотите внести. Я назвал свой changehomedirs.ldif
. Возможно, вам придется изменить свое подразделение в зависимости от того, в какое организационное подразделение вы помещаете своих пользователей. Я позвонил своим людям.
Затем я написал сценарий, по существу перебирающий каждого пользователя LDAP по одному, и использовал sed для замены слова USER в файле changehomedirs.ldif
на текущего пользователя в цикле и перенаправления вывода во временный файл с именем tmp..ldif.
Затем я использовал команду ldapmodify
, чтобы внести изменения, используя опцию -f
, чтобы прочитать нужные изменения из файла tmp.ldif. Пример на скриншоте ниже.
Это всего лишь тестовая система, поэтому пароль не является конфиденциальным.
Вы пишете в комментариях, что знаете:
Все вышесказанное правильно и полезно для вас!
Небольшое заблуждение, которое не имеет значения. Для этого был создан пользователь toor.Он имеет uid 0 (, как и root ), поэтому вы можете установить любую оболочку, которая вам нравится, для или .
Еще большее заблуждение состоит в том, что большинство скриптов FreeBSD написано на (t )csh. Они не! Системный скрипт написан на sh. Просто взгляните на /bin/freebsd-version
или/usr/bin/zdiff
Bash не является частью операционной системы FreeBSD. Но система не загрязняется, если ее установить и использовать. Вам даже не придется менять пользовательскую оболочку. Но если вы это сделаете -, просто держите руки root.
Однако есть более серьезные проблемы.
Несмотря на то, что корневая оболочка по умолчанию (t )csh, вы никогда не должны писать сценарии csh ни в какой системе. Это довольно распространенное мнение, и если вам нужна полная история, пожалуйста, прочитайте ПРОГРАММИРОВАНИЕ CSH СЧИТАЕТСЯ ВРЕДНЫМ
Всякий раз, когда вы пишете сценарий, вы должны начинать первую строку с "шебанг" (подробнее см. в Баш Шебанг). Это сообщает системе, какой интерпретатор использовать при выполнении скрипта. Вы можете без проблем выполнить сценарий bash (или perl/zsh/etc )из csh.
Для лучшей переносимости:
#!/usr/bin/env bash
Это просматривает $PATH, чтобы найти ваше местоположение bash. Для меня это лучшее решение.
Другие выступают за то, чтобы никогда не делать этого, а указывать точное местоположение. Затем это добавляет требование к целевой системе. Либо вы обновите shebang shen, перемещая скрипт -, либо убедитесь, что целевая система имеет ссылку на bash в /bin.
Если вам нужна еще лучшая переносимость, используйте для написания сценариев оболочку sh. У него меньше возможностей, чем у bash, но вы можете быть уверены, что он доступен во всех системах POSIX (-, например ).
Написание правильного сценария оболочки может быть очень трудным.Первый и лучший инструмент, который вам поможет, — это Shellcheck . Вы также можете установить его локально .
Возьмите за привычку проверять свои скрипты -это избавит вас от многих головных болей.