секреты

Проблема с правами доступа

Terminal

Ничто не вечно… И вот как-то пришло время поменять на моем «старичке»-iMac’е жесткий диск (Кстати, после установки SSD iMac mid-2007 оказался еще вполне пригодным для «офисных» задач… но речь совсем не об этом).

У перенесенных из резервной копии файлов права доступа оказались выставлены «неправильно». Ну, то есть так, что для любых действий с моими собственными документами компьютер стал требовать пароль администратора, но и после этого не всегда делал то, что нужно.

Попытки исправить ситуацию через окно «Свойства» или очевидной

chmod -R 775 ~/

к успеху не привели. Стало быть, дело не в привычной для всех Unix-подобных ОС системе прав, а в ACL (Access Control List — списках управления правами). Это понятно. Сложнее найти информацию о работе с ними. К счастью, для решения нашей проблемы достаточно знать совсем немного.

Во-первых, увидеть, что на файлы помимо стандартных прав доступа назначены еще и ACL, можно с помощью самой обычной команды (да, без Терминала нам не обойтись!)

ls -l
Вывод прав доступа по ls -l

У некоторых файлов в конце строки, описывающей права доступа, стоит плюс — вот это и есть признак наличия ACL.

Чтобы понять, что же там скрывается, команду придется немного дополнить:

ls -le

Тогда, помимо обычной информации, мы увидим примерно следующее:

Вывод информации об ACL по ls -le

Вот то, что находится в нулевой строке, как раз нам сейчас и мешает. Стало быть, её нужно удалить. Для этого используем (сюрприз?) хорошо знакомую команду chmod. Выглядеть это будет так:

sudo chmod -R -a# 0 ~/

С опцией -R всё как обычно — команда будет рекурсивно обрабатывать содержимое всех вложенных каталогов в домашнем каталоге (~/).

Ну, а -a# приказывает удалить элемент ACL по его индексу (в нашем случае, это нулевой элемент).

PS

Если нет желания писать «магические заклинания» в Терминале, для изменения прав доступа есть замечательная графическая утилита Batchmod. Среди ее функций есть и очистка ACL:

Batchmod - очистка ACL
Опубликовано Михаил К в Mac OS X / macOS
Kumir 2 в macOS

Kumir 2 в macOS

Среда КуМир (Комплект Учебных МИРов) широко используется в России в начальных курсах обучения программированию (а также в ОГЭ). Что радует — система разрабатывается как кроссплатформенное приложение с открытым кодом и распространяется по лицензии GNU 2.0.

К сожалению, не обходится без проблем (особенно, со сборками под macOS и Linux). Сегодня речь пойдет о запуске приложения под macOS.

На сайте разработчиков на момент написания статьи можно скачать версию 2.1.0 (rc10) в разделе «Загрузить» и текущую экспериментальную версию в разделе «Разработка». И всё бы хорошо, но при попытке запуска и той, и другой версии macOS выдает сообщение

Приложение «Kumir» не удалось открыть, так как не удалось проверить разработчика.

В более старых версиях macOS в качестве причины невозможности открыть пишется «так как файл поврежден». Но варианты действий те же самые: просто отказаться от запуска либо выкинуть файл в Корзину.

Способ, предложенный разработчиками в разделе «Вопросы и ответы», в случае КуМир не работает. Очевидно, автор ответа просто прочел общие рекомендации службы поддержки Apple (на которые в ответе есть ссылка), но не проверил их действие.

Запуск приложения через контекстное меню в данном случае приводит к появлению точно такого же сообщения об ошибке, как и при двойном щелчке.

Другой, описанный поддержкой Apple, способ: сразу после неудачной попытки запуска приложения открыть Системные настройки → Защита и безопасность → Основные и там щелкнуть появившуюся кнопку «Все равно разрешить», — срабатывает, но… Такие действия — безуспешную попытку запуска с последующим щелчком «Все равно разрешить» — придется повторить многократно (для самой программы, а потом — для каждого фреймворка QT).

Защита и безопасность

Есть, однако, и еще один способ. Для этого потребуется запустить Терминал и дать в нем всего одну команду:

xattr -cr /Applications/Kumir.app

(предполагается, что приложение находится в стандартном месте — папке Программы, иначе нужно будет изменить указанный в команде путь).

Если не ошиблись, программа после этого будет запускаться без лишних вопросов.

Важно: не изменяйте имя программы (Kumir.app), иначе она не сможет запуститься.

Ну, и еще чисто косметическая доработка. В опубликованных сейчас сборках отсутствует файл Info.plist и иконка программы. При желании можно воспользоваться извлеченными из более старой сборки:

В архиве два файла. Щелкните правой кнопкой мыши на Kumir и выберите «Показать содержимое пакета». После этого поместить файл Info.plist непосредственно в папку Contents, а Kumir2.icns — во вложенную в нее Resources:

Куда поместить файлы

Вот теперь всё. Успехов!

Опубликовано Михаил К в Для Mac OS X, Информатика и ИКТ, Советы
Локализация имен папок

Локализация имен папок

Как известно, в macOS имена ряда папок изменяются в зависимости от выбранного предпочтительного языка (одновременно с изменением языка интерфейса). Например, Library → Библиотеки, Movies → Фильмы и т. д.

Если точнее, изменяется отображение имен этих папок в графическом интерфейсе, а в Терминале мы всегда увидим исходные английские (в отличие от, например, Linux).
Так вот, однажды я обнаружил, что у свежесозданного пользователя русскими стала только часть имен стандартных папок: Фильмы, Музыка, Изображения. При этом другие остались, по-прежнему, английскими: Documents, Downloads, Desktop. Как быть?

«Ремонт» оказался предельно простым. Для этого нужно знать маленький секрет: в глубинах папки System лежит SystemFolderLocalizations, где описано, как на разных языках должны называться системные папки. А про то, что нужно этим «словариком» воспользоваться, Finder узнает, увидев внутри папки файлик с именем .localized (напомню, что в unix-подобных ОС файлы, имена которых начинаются с точки, являются скрытыми).

Значит, достаточно положить в каждую «непереведенную» папку пустой файл с таким именем (можно, конечно, и не пустой). Проще всего это сделать консольной командой:

1. переходим в нужную папку, например, в папку Downloads:

cd ~/Downloads

(значок ~ обозначает домашний каталог текущего пользователя)

2. создаем файл:

touch .localized

Или сразу:

touch ~/Downloads/.localized

Если имена сразу не поменялись (в моем случае, например, прежние имена остались на боковой панели окон Finder), можно принудительно перезапустить Finder:

killall Finder

PS
Честно говоря, написание этого текста заняло в несколько раз больше времени, чем «лечение» четырех папок 😉

Опубликовано Михаил К в Mac OS X / macOS
Как побороть Gatekeeper

Как побороть Gatekeeper

С момента появления в Mac OS X такого элемента безопасности как Gatekeeper запуск программ сторонних разработчиков периодически вызывал небольшие проблемы. В большинстве случаев всё, что нужно было сделать, это при первом запуске щелкнуть по иконке программы правой кнопкой и из контекстного меню выбрать команду «Открыть». После этого на вопрос компьютера ответить, что доверяете разработчику.

Однако в некоторых случаях — в первую очередь это касается кроссплатформенных приложений на Java (или содержащих Java) — такой способ не помогал. Выпадало сообщение, что программа повреждена, и ее предлагалось выкинуть в Корзину. (В частности у меня такое получалось с OpenOffice, Art of Illusion и т.п.)

Решением было временное отключение контроля источника приложения. В Системных настройках («Защита и безопасность») имелась возможность «Разрешить использование программ, загруженных из любого источника».

И вот плохая новость: в macOS Sierra 10.12 в настройках осталось только два варианта. Окно теперь выглядит вот так:

Но есть и хорошая новость: вариант «из любого источника» остался, хотя он теперь и недоступен для «простых смертных».

Нужно (при закрытых Системных настройках!) набрать в Терминале простую команду:

sudo spctl --master-disable

И — о, чудо — в настройках (если теперь их открыть 😉 ) появляется «пропавший» пункт, причем он уже выбран:

Заметьте: если переключить настройки на любой другой вариант, появившийся пункт снова пропадет.

Тем не менее, я настоятельно рекомендую после первого запуска «капризной» программы сразу же вернуть настройки. Береженого Бог бережет 😉

Ах, да. Обратное включение Gatekeeper’а делается, что достаточно очевидно, командой:

sudo spctl --master-enable

Вот, собственно говоря, и всё на сегодня.

Опубликовано Михаил К в Mac OS X / macOS, 0 комментариев
Mac OS X. Кто хранит данные в контейнерах?

Mac OS X. Кто хранит данные в контейнерах?

В качестве дополнения к предыдущей заметке приведу примеры программ, хранящих свои данные внутри контейнера (а не в подпапках папки Документы). Кстати, это ещё может помочь тем, кто хочет найти/скопировать/сохранить такие данные (например, электронные книги 😉 )

Как говорится, без комментариев — только название программы и каталог, где хранятся данные.

Amazon Kindle
~/Library/Containers/com.amazon.Kindle/Data/Library/Application Support/Kindle/My Kindle Content
iBooks
~/Library/Containers/com.apple.BKAgentService/Data/Documents/iBooks/Books

 

Заметьте: в контейнере ~/Library/Containers/com.apple.iBooksX/Data/Documents хранятся только служебные базы данных.

iMovie
~/Library/Containers/com.apple.iMovieApp/Data/Library/Application Support/Motion/Library
Keynote
~/Library/Containers/com.apple.iWork.Keynote/Data/Library/Application Support/User Templates
Numbers
~/Library/Containers/com.apple.iWork.Numbers/Data/Library/Application Support/User Templates
Pages
~/Library/Containers/com.apple.iWork.Pages/Data/Library/Application Support/User Templates
Mail (Почта)
~/Library/Containers/com.apple.mail/Data/Library/Mail Downloads
Evernote
~/Library/Containers/com.evernote.Evernote/Data/Library/Application Support/Evernote/accounts/Evernote
Pixelmator
~/Library/Containers/com.pixelmatorteam.pixelmator/Data/Library/Application Support/Pixelmator/Brushes
Опубликовано Михаил К в Советы, 0 комментариев