Создайте любого пользователя, которого хотите:
# vim ro_user_desc.ldif
dn: cn=ro_admin,dc=example,dc=com
objectClass: simpleSecurityObject
objectClass: organizationalRole
userPassword: {SSHA}o3pSzVM3HXqUY6R2VHGJkJEWlwLOUH1N
userPassword
хеш вы можете получить от slappasswd -s your_plaintext_pass
. Создать этого пользователя:
# ldapadd -x -W -D "cn=admin,dc=example,dc=com" -f ro_user_desc.ldif
Назначьте ему нужную роль:
# vim ro_access.ldif
dn: olcDatabase={1}mdb,cn=config
changetype: modify
add: olcAccess
olcAccess: {3}to dn.base="dc=example,dc=com" by dn.exact="cn=ro_admin,dc=example,dc=com" read
Мы включили список (только для чтения )доступ к полному дереву dc=example,dc=com
для пользователя, созданного выше. Правильный адрес dn: olcDatabase={1}mdb,cn=config
лучше найти с помощью ответа @sOliver . Но имейте в виду, что этот пример для базы MDB OpenLdap в случаях HDB и т. д. может отличаться.
Наконец, примените его:
# ldapmodify -Y EXTERNAL -H ldapi:/// -f ro_access.ldif
В вашем особом случае вы можете:
echo 'a "removeme" b +removeme+ c *removeme#d+removeme~.123' | sed -e '/\W/p; s/["+*#~]/#/g ; s/#[^#]\+#//g'
a "removeme" b +removeme+ c *removeme#d+removeme~.123
a b c d.123
Обратите внимание, что, поскольку вы хотите сохранить .
, вы не можете использовать класс «не -слово», так как они включают «.». Если вы хотите любой ценой избежать предоставления явного списка символов, вы можете:
Изменить все точки на новые строки, что гарантирует отсутствие знаков препинания.Тогда это просто вопрос нежадного сопоставления между двумя знаками препинания:
$ echo 'a "removeme" b +removeme+ c *removeme#d+removeme~.123' |
sed -e 'p
y/./\n/
s/[[:punct:]][^[:punct:]]*[[:punct:]]//g
y/\n/./
'
a "removeme" b +removeme+ c *removeme#d+removeme~.123
a b c d.123
Примечание :это все внутри Posix sed.
Perl хорошо справляется с такими случаями. Мы используем отрицательный просмотр вперед, чтобы создать категорию знаков пунктуации, исключая точку :
.echo '......' |
perl -lpe '
print;
$p = qr/(?!\.)[[:punct:]]/;
s/$p.*?$p//g;
'