Здравствуйте, Cyberax, Вы писали:
C>Ну так файлы конфигов тоже, в общем-то, общедоступны (с учетом прав, C>естественно). Так что тут вопрос уже доверия к приложению.
На самом деле проблема даже не в злонамеренных прогах. Нередко бывает так, что прога портит чужую ветку просто по причине криворукости автора (см также про нецелевое использование веток)
Залезть в чужой файл конфига по ошибке — это существенно сложнее даже для самого криворукого программера
WFrag wrote:
> C>А вообще, работа с реестром не должна быть > C>обычным делом — нужны специальные графические оболочки для нужных > C>настроек. Например, "Control Panel". > А если хочется сделать нечто не задуманное изначально в утилите настройки?
Тогда welcome to regedit, или welcome to WMI в WindowsXP.
> Собственно, предлагаю прочитать (если не читал) правило разделения > (Rule of Separation: Separate policy from mechanism; separate > interfaces from engines) в книге "The Art of Unix Programming". И > сказать, в чем ты с ней не согласен.
Оно хорошо подходит для программирования, но не для пользовательского
интерфейса.
> Утилиты обработки текстов общего назначения (find, grep, sed, etc) > заведомо покрывают большую функциональность, чем ты можешь покрыть в > своей оболчке для настройки чего-либо.
Блин, мне не нужно покрывать большую функциональность, мне даже не нужно
покрывать всю функциональность. Мне лишь нужно сделать 99% самых часто
используемых функций легкодоступными из GUI. Для остального — есть
скриптовой интерфейс.
Так что ли сложно понять?
> Зачем отбирать возможность использовать эту мощь? Хочется высокого > уровня и простоты — используй утилиты настройки, фронтенды. Но зачем > их ставить во главу угла?
А затем, что они УДОБНЫ для использования.
> Например, я запросто могу положить свой /etc в CVS. Реестр — нет.
А tdsam базу из Samba? Или там базы mysql'а?
> Или пустить поиск по сложному критерию.
Можно.
> Или найти разницу между двумя версиями конфига.
regdiff.exe
> И для этого мне не нужны специальные утилиты.
punk4 wrote:
> C>Ну так сделайте программу, которая будет интерпретировать реестр как > C>текстовый файл. Кстати, реестр можно править в виде .reg-файлов, > которые > C>абсолютно текстовые. > Да уж, абсолютно, вот вам значение произвольно из первого попавшегося > места > {23170F69-40C1-278A-1000-000100020000} > расскажите ка мне что он оно значит?????
Расскажите, что значит "szap -n 1 -x"?
Уже запустили man? Так вот, я уже запустил MSDN.
> C>У меня реестр достпен как виртуальный каталог в FAR'е, так что все > C>спокойно делается без мышки. А вообще, работа с реестром не должна быть > C>обычным делом — нужны специальные графические оболочки для нужных > C>настроек. Например, "Control Panel". > А у меня конфигурационные файлы доступны в vi, vim, joe, emacs и что вам > еще будет угодно
Но вот, к сожалению, не доступны из центрального удобного пользователю
средства конфигурирования. Всякие webmin'ы пока еще не очень развиты.
> при желании хоть в Worde можно править с использованием > всей мощи которую предлагает то или иное средство. IMHO панимание приходит > быстрее и лучше когда руками и головой делаешь а не галки ставишь в окнах.
Здравствуйте, Cyberax, Вы писали:
C>Оно хорошо подходит для программирования, но не для пользовательского C>интерфейса.
Почему? Идея проста — не навязывай жестких ограничений. plain-text конфигурация содержит минимум оных. Хочешь высокоуровневый интерфейс — пожайлуста, пиши фронтенд! Хочешь низкоуровневый текстовый — пожайлуста, используй готовые сто-лет-назад-написанные тектовые утилиты!
А, например, при скриптовом подходе тебе уже навязываются ограничения. В виде онтологии (понятий и их связи) конфигурационного файла. Ты уже не можешь трактовать данные просто как текст (например, чтобы сделать тот же diff), ты вынужден трактовать их как осмысленные данные со строгой структурой.
C>Блин, мне не нужно покрывать большую функциональность, мне даже не нужно C>покрывать всю функциональность.
О чем и речь — тебе не нужно. Мне — нужно. Не всегда, но как запасной вариант чтобы был.
C>Мне лишь нужно сделать 99% самых часто C>используемых функций легкодоступными из GUI. Для остального — есть C>скриптовой интерфейс.
C>Так что ли сложно понять?
Скриптовый интерфейс — это не то. Он все равно задает ограничения. Пример — текстовый diff. Работает с любым тектовым файлом (конечно, при соблюдении этим файлом неких разумных ограничений на структуру).
C>А затем, что они УДОБНЫ для использования.
Ну так и сделай их именно фронтендами к текстовым конфигам.
C>А tdsam базу из Samba? Или там базы mysql'а?
ХЗ что это. Я про настройки говорю, кои в /etc.
C>Можно.
Ну, скажем, найти и заменить по регекспу. Опять отдельная утилита? Почему бы просто не воспользоваться уже готовым, скажем sed?
C>Что такое "специальные утилиты"?
WFrag wrote:
> C>Оно хорошо подходит для программирования, но не для пользовательского > C>интерфейса. > Почему? Идея проста — не навязывай жестких ограничений. plain-text > конфигурация содержит минимум оных. Хочешь высокоуровневый интерфейс — > пожайлуста, пиши фронтенд! Хочешь низкоуровневый текстовый — > пожайлуста, используй готовые сто-лет-назад-написанные тектовые утилиты!
Ну так для реестра тоже давно уже нужные утилиты написаны, и
высокоуровневый интерфейс делать значительно удобнее, так как API для
доступа к реестру уже давно есть.
> А, например, при скриптовом подходе тебе уже навязываются ограничения. > В виде онтологии (понятий и их связи) конфигурационного файла. Ты уже > не можешь трактовать данные просто как текст (например, чтобы сделать > тот же diff), ты вынужден трактовать их как осмысленные данные со > строгой структурой.
Я могу сделать из реестра .reg-файл со всеми вытекающими последствиями.
> C>Блин, мне не нужно покрывать большую функциональность, мне даже не > нужно > C>покрывать всю функциональность. > О чем и речь — тебе не нужно. Мне — нужно. Не всегда, но как запасной > вариант чтобы был.
Так он есть — реестр прекрасно доступен для утилит. А для работы с
устройствами вообще есть специальный скриптовой интерфейс WMI.
> C>А затем, что они УДОБНЫ для использования. > Ну так и сделай их именно фронтендами к текстовым конфигам.
Сложно, нужно писать прямые и обратные парсеры для текстовых файлов. И
большинство разработчиков просто этим пренебрегают.
> C>А tdsam базу из Samba? Или там базы mysql'а? > ХЗ что это. Я про настройки говорю, кои в /etc.
Ну так там далеко не все есть.
> C>Можно. > Ну, скажем, найти и заменить по регекспу. Опять отдельная утилита? > Почему бы просто не воспользоваться уже готовым, скажем sed?
Экспортируем нужный ключ в .reg и дальше sed'ом. Потом имортируем
обратно в реестр, причем все это можно сделать через пайпы в лучшем
стиле Юникса.
А еще можно использовать WMI:
Set colItems = objWMIService.ExecQuery("Select * from
Win32_ComputerSystem",,48)
For Each objItem in colItems
objTextFile.WriteLine("Manufacturer: " & objItem.Manufacturer)
objTextFile.WriteLine("Model: " & objItem.Model)
objTextFile.WriteLine("Name: " & objItem.Name)
objTextFile.WriteLine("NumberOfProcessors: " & objItem.NumberOfProcessors)
objTextFile.WriteLine("TotalPhysicalMemory: " & objItem.TotalPhysicalMemory)
objTextFile.WriteLine("UserName: " & objItem.UserName)
Next
> C>Что такое "специальные утилиты"? > regdiff.exe
Cyberax wrote: > Еще в Win3.0 для поддержки OLE.
Но его погром, кажется, не был так опасен. >> > Ну никто не говорил, что реестр — идеален. Но вот для первой реализации >> > — вполне ничего. >> Но только зачем? > Унифицировать формат файлов с конфигами.
Прыжок — попытка улететь. А если нужны чуть сложнее что делать?
>> > diff для реестра давно написан. У меня называется regdiff.exe — >> > сравнивает между собой reg-файлы и ветки рееста. >> Это буду знать. Но сравнивает он не копии dat-файлов, а всё-таки >> reg-файлс реестром. Так я могу и 2 reg-файла сравнить (так я делал). > > А какая разница? Вы же не сравниваете файлы с помощью прямого чтения > диска, вы пользуетесь API для работы с FS. > > Хотя утилиты для сравнения физических файлов реестра тоже есть — их > обычно используют при восстановлении системы после сбоев.
Да, это я ерунду сказал про то, что с чем.
>> Кроме того, отсутствие интерфейса ФС не даёт читать реестр >> проводником+блокнотом, а требует пользоваться конкретным GUI или его >> аналогами (с похожим видом). > > У меня используется плугин к FAR'у, который позволяет ходить по реестру > (в том числе и удаленному или в виде reg-файла) как по обычному диску.
Ну, это существует, но Вы же сами говорили "а если ничего не
прикручивать, а чтоб работало..". Мне удобно не вылезать из ViM. И по
файлам ходить им (да, урезано. Но иногда достаточно + привычка, что copy
в командной строке набирать не проблема). И я не уверен, есть ли решение
для ViM.
>> Хотя уже существуют текстовые. Деланье boot-дискет реестр усложняет >> (возможно, теперь это менее актуально). Он >> лишняя сущность, от которой много зависит и которую нельзя игнорировать. > > Ну так конфиг-файлы — тоже усложняют создание boot-дискет. Они тогда > тоже — лишняя сущность?
Что надо на Rescue (не привязывая к системе)? Интерпретатор команд,
драйвера для чтения с разных устройств — возражений нет. Наверное,
что-то для работы с текстом. Редактор, вроде как. Небольшой. Критичные
куски настроек. Без перечисленного обойтись — можно, но не хочется. Под
любой ОС. И тут — что-то для реестра. Содержащее фактически драйвер и
дублирующее редактор. Либо имеющее расходы на сопряжение с редактором.
Если бы была идея "храните настройке на спец. разделе (можно loopback),
и это обычная ФС" — было бы легче.
Posted via RSDN NNTP Server 2.0 beta
Re[14]: Э.Реймонд "Искусство программирования для Unix"
Cyberax wrote: > Ну в юниксах так и делают. В моем /etc/passwd есть: qmaild, qmails, > qmailr, qmailq, qmailp, mysql, nobody, identd, irc, gnats, ejabberd, > Debian-exim, majordomo и еще штук пять.
Это не то, это для демонов — и, как правильно сказал Влад, чтобы если
что — зараза не полезла. А вот в LFS на полном серьёзе рекомендуется
система управления приложениями, когда *все* (а не только постоянно
меняемые/настроечные) файлы *любого* (не только сетевого) приложения
имеют свой UID. В том числе UID libc и libstdc++ разный.
Posted via RSDN NNTP Server 2.0 beta
Re[16]: Э.Реймонд "Искусство программирования для Unix"
raskin wrote:
>> Ну так файлы конфигов тоже, в общем-то, общедоступны (с учетом прав, >> естественно). Так что тут вопрос уже доверия к приложению. > Ну, тут, по слухам (не пробовал) ввели SELinux, который позволяет ТАКОЕ > начудить. > А проверенный метод — запускать под chroot. Но это, увы, требует прав > root.
Кстати, в Винде есть runas (и программные API для имперсонации), который
работает под любым пользователем — нужно только знать credential'ы
пользователя, под которым приложение запускается.
--
С уважением,
Alex Besogonov (alexy@izh.com)
Posted via RSDN NNTP Server 1.9
Sapienti sat!
Re[15]: Э.Реймонд "Искусство программирования для Unix"
raskin wrote:
>> Ну в юниксах так и делают. В моем /etc/passwd есть: qmaild, qmails, >> qmailr, qmailq, qmailp, mysql, nobody, identd, irc, gnats, ejabberd, >> Debian-exim, majordomo и еще штук пять. > Это не то, это для демонов — и, как правильно сказал Влад, чтобы если > что — зараза не полезла.
А что демоны — это не приложения? Хотя смотря какие демоны
> А вот в LFS на полном серьёзе рекомендуется система управления > приложениями, когда *все* (а не только постоянно > меняемые/настроечные) файлы *любого* (не только сетевого) приложения > имеют свой UID. В том числе UID libc и libstdc++ разный.
Идея, кстати, неплохая. Правда тогда поддержка ACLей получается весьма
интересной.
--
С уважением,
Alex Besogonov (alexy@izh.com)
Posted via RSDN NNTP Server 1.9
Sapienti sat!
Re[16]: Э.Реймонд "Искусство программирования для Unix"
Cyberax wrote: > raskin wrote: >> > Ну в юниксах так и делают. В моем /etc/passwd есть: qmaild, qmails, >> > qmailr, qmailq, qmailp, mysql, nobody, identd, irc, gnats, ejabberd, >> > Debian-exim, majordomo и еще штук пять. >> Это не то, это для демонов — и, как правильно сказал Влад, чтобы если >> что — зараза не полезла. > > А что демоны — это не приложения? Хотя смотря какие демоны
Там была идея учётки для paint. > >> А вот в LFS на полном серьёзе рекомендуется система управления >> приложениями, когда *все* (а не только постоянно >> меняемые/настроечные) файлы *любого* (не только сетевого) приложения >> имеют свой UID. В том числе UID libc и libstdc++ разный. > > Идея, кстати, неплохая. Правда тогда поддержка ACLей получается весьма > интересной.
Легко — кому нужен apache — в группу. Я не говорил, что идея плоха —
просто как дальнейшее развитие. Идея .. красивая в смысле hack.
Posted via RSDN NNTP Server 2.0 beta
Re[18]: Э.Реймонд "Искусство программирования для Unix"
Cyberax wrote: >> > Ну так файлы конфигов тоже, в общем-то, общедоступны (с учетом прав, >> > естественно). Так что тут вопрос уже доверия к приложению. >> Ну, тут, по слухам (не пробовал) ввели SELinux, который позволяет ТАКОЕ >> начудить. >> А проверенный метод — запускать под chroot. Но это, увы, требует прав >> root. > > Кстати, в Винде есть runas (и программные API для имперсонации), который > работает под любым пользователем — нужно только знать credential'ы > пользователя, под которым приложение запускается.
su -c . Про API не скажу сразу, но и без API самому написать замену API
недолго.
Posted via RSDN NNTP Server 2.0 beta
Re[10]: Э.Реймонд "Искусство программирования для Unix"
Cyberax wrote: >> >> > Ээээ... А где у вас инкапсюляция данных, например, в apache.conf? >> >> Во-первых, в том, что в файле не лежат настройки монитора. >> > А /etc/X11/XF86Config — это галлюцинация? >> Я имел в виду apache.conf . > > Врете. У меня настройки монитора в дефолтном конфиге Дебиана лежат в > каталоге /etc/apache/../X11! Где же здесь инкапсюляция?
Дебиан крут. Если это умолчание. Но это из серии "сделайте Ваш выбор".
>> Кстати да, галлюцинация для 1/2 Linux-оидов. > > Кстати, не меньшая проблема — отсутствие стандартных методов поиска > конфигов. >
Документация по программе.. locate conf... Логи (искать по timestamp?).
Дистрибутив, документирующий правила складывания настроек. А так,
конечно, бардак. Но документация часто выручает.
Но поиск по реестру (при небольшой фантазии в названии корневой ветки)
тоже не скучен. >> Вот Unix-оиды не хотят повторять славный путь. >> Управление устройствами, кстати, очень стоит хранить текстом — ссоры >> устройств можно было бы разруливать из-под консоли, предварительно их >> деинициализировав (а... опять перезагрузка.. за что?). > У меня конфликт устройств в последний раз был в 99 году (еще на > материнке с ISA-слотами). Ну а в чем проблема один раз зайти в hardware > monitor и поправить параметры — не представляю
А сейчас перезагрузка после этого нужна?
>> > Ну так делите по веткам в чем проблемы? Реестр же иерархический. >> Нет, это-то реестр позволяет. Только в apache.conf пользователь >> (извините, администратор) решает, что он вынесет, а что оставит в файле. > > И что? Пусть в хороших прогах конфиги делятся на HKLM-ные и HKCU-шные.
Не понял. Я имею в виду вынос независимой части файла, чтоб читать не
мешала. Чтоб было как fold в ViM. Но без привязки к средствам. Программа
может, разумеется, обрабатывать переменную структуры своей ветки реестра
(сильно переменную), но это не принято.
Posted via RSDN NNTP Server 2.0 beta
Re[17]: Э.Реймонд "Искусство программирования для Unix"
raskin wrote:
>>> А вот в LFS на полном серьёзе рекомендуется система управления >>> приложениями, когда *все* (а не только постоянно >>> меняемые/настроечные) файлы *любого* (не только сетевого) приложения >>> имеют свой UID. В том числе UID libc и libstdc++ разный. >> Идея, кстати, неплохая. Правда тогда поддержка ACLей получается весьма >> интересной. > Легко — кому нужен apache — в группу.
Неудобно, группы в Винде и Линуксе представлены в виде плоского списка,
и если создавать на каждый Апач по группе, то в этом списке становится
трудно ориентироваться.
> Я не говорил, что идея плоха — просто как дальнейшее развитие. Идея .. > красивая в смысле hack.
Угу.
--
С уважением,
Alex Besogonov (alexy@izh.com)
Posted via RSDN NNTP Server 1.9
Sapienti sat!
Re[19]: Э.Реймонд "Искусство программирования для Unix"
raskin wrote:
>> Кстати, в Винде есть runas (и программные API для имперсонации), который >> работает под любым пользователем — нужно только знать credential'ы >> пользователя, под которым приложение запускается. > su -c . Про API не скажу сразу, но и без API самому написать замену API > недолго.
runas в отличие от su после первого логина credential'ы еще умеет и
запоминать. Хотя это при желании и в Линуксе можно сделать.
--
С уважением,
Alex Besogonov (alexy@izh.com)
Posted via RSDN NNTP Server 1.9
Sapienti sat!
Re[17]: Э.Реймонд "Искусство программирования для Unix"
Quintanar wrote:
> C>Идея, кстати, неплохая. Правда тогда поддержка ACLей получается весьма > C>интересной. > Опять же в Reiser4 ACL очень органично сделаны. К ним можно обращаться > как к файлам.
Однако даже в Reiser'е поиск всех файлов с данной entry в ACL занимает
линейное время (и может быть достаточно долгое), так что операции по
установке/удалению приложений будут медленными.
--
С уважением,
Alex Besogonov (alexy@izh.com)
Posted via RSDN NNTP Server 1.9
Sapienti sat!
Re[18]: Э.Реймонд "Искусство программирования для Unix"
Cyberax wrote: >> >> А вот в LFS на полном серьёзе рекомендуется система управления >> >> приложениями, когда *все* (а не только постоянно >> >> меняемые/настроечные) файлы *любого* (не только сетевого) приложения >> >> имеют свой UID. В том числе UID libc и libstdc++ разный. >> > Идея, кстати, неплохая. Правда тогда поддержка ACLей получается весьма >> > интересной. >> Легко — кому нужен apache — в группу. > > Неудобно, группы в Винде и Линуксе представлены в виде плоского списка, > и если создавать на каждый Апач по группе, то в этом списке становится > трудно ориентироваться.
Ну, тогда FS менять, согласен. Хотя зачем весь список когда бы то ни
было читать целиком и глазами — не понял. Добавить пользователя в
группу/добавить группу. Но это дело вкуса.
Posted via RSDN NNTP Server 2.0 beta
Re[20]: Э.Реймонд "Искусство программирования для Unix"
Cyberax wrote: >> > Кстати, в Винде есть runas (и программные API для имперсонации), который >> > работает под любым пользователем — нужно только знать credential'ы >> > пользователя, под которым приложение запускается. >> su -c . Про API не скажу сразу, но и без API самому написать замену API >> недолго. > > runas в отличие от su после первого логина credential'ы еще умеет и > запоминать. Хотя это при желании и в Линуксе можно сделать.
Права root и 1 час — и всё будет наверняка (Это — кратная
перестраховка). В freebsd sudo запоминает — это я знаю.