Вам нужно мыслить двоично, а не десятично. В частности, существует три 3-битных -двоичных числа :, по одному для владельца, группы и другого. Каждый со значениями в диапазоне от 000 до 111 (0 -7 в десятичном виде ).
напр. rw -rw -rw (666 )равно 110 110 110.
Значение umask
представляет собой маску, указывающую, какие биты будут включены или выключены (1 или 0 )при создании нового файла или каталога. например. Десятичное число 022 — это двоичное число 000 010 010, а десятичное число 021 — это 000 010 001
Биты разрешения объединяются по И -вместе с инвертированной umask, чтобы получить окончательное значение. «инвертировано» означает, что все биты инвертированы, т. е. все единицы заменены на 0, и наоборот -. например.NOT 022 (000 010 010) = 755 (111 101 101)
Пример:666 & !022 = 644
. В двоичном формате это:
Owner Group Other mode
110 110 110 666
& 111 101 101 755 (this is the negated 022)
--- --- --- ---
110 100 100 644
Кроме того,777 & !022 = 755
:
Owner Group Other mode
111 111 111 777
& 111 101 101 755
--- --- --- ---
111 101 101 755
Обратите внимание, что конечное значение каждого бита может быть 1 только в том случае, если оно равно 1 в как исходное значение разрешения (666 или 777)И в инвертированном umask. Если любой из них равен 0, результат равен 0. То есть 1 & 1 = 1 , а 1 & 0 = 0 .
Строго говоря, существует четвертое 3-битное -двоичное число для битов setuid, setgid и sticky. Вот почему вы часто видите разрешения и маски, указанные с начальным 0 (или другим начальным числом от 0 -до 7 ). например. 0777 или 2755.
Where should I install global terminfo files?
На типичной машине GNU/Linux вы должны поместить их в /etc/terminfo
, где они будут искаться по умолчанию.
Это относится к большинству дистрибутивов на базе Debian или Fedora/Redhat, а также к Gentoo, Alpine и т. д.--infocmp -D
скажет вам, действительно ли это так в вашей системе. В дистрибутивах на основе Debian -tic
также будет записывать туда скомпилированные записи по умолчанию при запуске от имени пользователя root (проверьте с помощьюtic -D
).
Каталог /etc/terminfo
удобен, когда вы хотите переопределить запись terminfo --, например. чтобы заменить возможности cnorm
и cvvis
в записи linux
на некоторые, которые не включают мигание курсора.
Другие системы не имеют такой хорошей встроенной -функции переопределения :, поэтому вам придется вручную создать этот (или другой )каталог и явно указать его с помощью TERMINFO
или TERMINFO_DIRS
переменные окружения; также основной каталог terminfo может быть не /usr/share/terminfo/
, а /usr/gnu/share/terminfo/
или каким-то другим. Проверьте man ncurses
в вашей системе, чтобы узнать все подробности.
Существуют также системы (, например. FreeBSD ), которые вообще не поддерживают terminfo и все еще используют формат termcap. И, что еще больше усложняет ситуацию, некоторые системы могут иметь как базовую, так и «портированную» реализацию ncurses, каждая со своим собственным представлением о том, какими должны быть значения по умолчанию.
TERMINFO
для выбора базы данных terminfo. TERMINFO_DIRS
TERMINFO
илиTERMINFO_DIRS
)скомпилировано в -и может различаться в разных системах. Иногда упаковщики документируют местоположение (, если они переопределяют значения по умолчанию ). Обычноinfocmp
(в разных реализациях )показывает место, где было найдено описание терминала в комментарии в начале вывода.
Опцияtic
иinfocmp
-D
ncurses показывает используемые им местоположения.
Дополнительная литература: