Ограничение имя файла linux

Ограничения длины имени файла в linux?

Существуют ли какие-либо ограничения на длину файла или длину пути для Linux?

8 ответов

См. страницу Википедии об сравнении файловых систем , особенно в столбце Максимальная длина имени файла .

Вот несколько ограничений длины имени файла в популярных файловых системах:

Я прочитал здесь , что ограничение длины пути в заголовках системы. Ограничение длины имени файла также существует. В моей системе это файл:

и C-lang определяет:

и еще несколько.

Я ссылаюсь на другие ответы, пожалуйста, повысьте их.

Существуют ли какие-либо ограничения на длину файла или длину пути для Linux?

Да, имя файла и длина пути ограничены:

Чтобы динамически получить эти свойства:

  • Использовать функции pathconf и fpathconf , предложенный Майкл Аарон Сафьян
  • Создайте имя файла (или путь) дольше и дольше, как описано dogbane .

Используйте команду getconf , предложенную tim , которая также доступна в Linux:

И ради экономии времени (и привязки к памяти):

ext2, ext3, ext4, zfs: нет ограничений пути; Ограничение имени файла 255 байтов.

Это длина имен файловой системы. У самого «linux» тоже есть. Например, из бит /stdio_lim.h:

Существует no way , чтобы определить максимальную длину путей в Linux портативным способом. В моей системе:

Но я могу легко создавать дорожки длиной более 4096 символов. Вместо этого посмотрите PATH_MAX как нижнюю границу. Вы гарантированно сможете создавать пути так долго, но вы также можете создавать гораздо более длинные.

Вы всегда должны использовать pathconf или некоторые функции, подобные этому, чтобы получить значение времени выполнения для указанных элементов, так как это страница говорит, что:

Следует отметить, однако, что многие из перечисленных ограничений не являются инвариантными, а во время выполнения значение предела может отличаться от значений, указанных в этом заголовке, по следующим причинам:

Предел зависит от пути.

Предел отличается между машинами компиляции и времени выполнения.

По этим причинам приложение может использовать функции fpathconf (), pathconf () и sysconf () для определения фактического значения предела во время выполнения.

Он указан в системном файле limits.h .

Вот один из этих файлов:

Здесь находятся копии этого файла и значения, которые они определяют:

Источник

Ограничения длины имени файла на Linux?

Есть ли какие-либо ограничения на длину файла или пути в Linux?

См. Страницу Википедии о сравнении файловых систем , особенно в столбце Максимальная длина имени файла .

Вот некоторые ограничения длины имени файла в популярных файловых системах:

Я читал здесь, что ограничение длины пути в системных заголовках. Ограничение длины имени файла тоже там. В моей системе это файл:

и C-lang определяет:

Я имею в виду другие ответы, пожалуйста, проголосуйте за них.

Есть ли какие-либо ограничения на длину файла или пути в Linux?

Да, длина имени файла и пути ограничена:

Чтобы динамически получить эти свойства:

  • Используйте функции pathconf и fpathconf как предложено Майклом Аароном Сафяном
  • Создайте имя файла (или путь к файлу ) длиннее и длиннее, как объяснено dogbane

Используйте команду, getconf предложенную Тимом, которая также доступна в Linux:

И ради экономии времени (и привязки его к памяти):

ext2, ext3, ext4, zfs: без ограничений пути; Ограничение имени файла 255 байт.

Это длины имен файловых систем. У самого «linux» тоже есть. Например, из бит / stdio_lim.h:

Там нет никакого способа , чтобы определить максимальную длину путей на Linux переносимым способом. В моей системе:

Но я могу легко создавать пути намного длиннее, чем 4096 символов. Вместо этого смотрите PATH_MAX как нижнюю границу. Вы гарантированно сможете создавать пути так долго, но вы также можете создавать гораздо более длинные.

Вы всегда должны использовать pathconf или какую-либо функцию, подобную этой, чтобы получить значение времени выполнения для указанных элементов, поскольку на этой странице сказано, что:

Однако следует отметить, что многие из перечисленных пределов не являются инвариантными, и во время выполнения значение предела может отличаться от значений, указанных в этом заголовке, по следующим причинам:

Предел зависит от имени пути.

Предел различается между компиляцией и машинами времени выполнения.

По этим причинам приложение может использовать функции fpathconf (), pathconf () и sysconf () для определения фактического значения лимита во время выполнения.

Источник

Максимальная длина имени файла

Как на линуксе делают nas для виндоус клиентов если с utf8 длинна русского имени файла не может быть больше 130 символов а японского 80. Может лайфхак какой есть для обхода ограничений?

Если кодировка в системе русская однобайтная то можно делать русские имена 255 символов длиной но при этом все символы которых нет в этой кодировке вызывают ошибку слишком длинное имя.

Может есть такая utf кодировка в которой русские буквы 1 байт занимают

Я не в курсе технических ограничений samba, но из твоего текста я так понимаю там есть какое-то ограничение в 256 байт на имя файла.

В utf8 символы могут занимать от 1 до 4 байт. А в utf16 всегда 2 байта. Я бы использовал utf16 и получил константные 128 символов на имя для любых языков.

Может лайфхак какой есть для обхода ограничений?

Нет. /thread (потому что других вопросов я не увидел, а на этот ответ однозначный).

Всегда два байта в UCS-2. В UTF-16 может быть два или четыре байта на символ (а может уже и больше, тут не уверен).

Я бы использовал utf16 и получил константные 128 символов на имя для любых языков.

В линуксе имя файла может содержать любые байты, кроме ‘/’ и ‘\0’ . Так что работать твоё предложение совершенно точно не будет. Пример:

Источник

Длинные имена файлов

Всем привет переношу файлопомойку с винды на линукс. Столкнулся с проблемой «очень длинных имён файлов». Похоже, счёт идет не на символы, а на байты (гугление это подтверждает). Внимание, вопрос: мне таки придётся использовать винду или есть какое-то решение этой проблемы? (усекновение имени — не решение в данной ситуации)

ext2/3/4,reiser,xfs,jfs — все поддерживают 255 символов в имени файла (или 127 в UTF8) — куда вам больше??

Поправочка: 127 русских букв, закодированных в UTF8.

UTF8 — однобайтовая кодировка, так что ASCII в UTF8 = ASCII 🙂

ФС те, которые поддерживаются CentOS 5.4 — то есть ext2/3, ext4 без mkfs.ext4, xfs на положении ext4.

127 букв — внезапно оказалось мало. Есть у пользователей такие имена файлов:

«Котов АН Моделирование дорожного движения на многополосной магистрали при помощи двумерного вероятностного клеточного автомата с тремя состояниями, 2008 (диссертация)»

Усекновение — не вариант. На винде такое имя файла обрабатвается корректно

$ echo «Котов АН Моделирование дорожного движения на многополосной магистрали при помощи двумерного вероятностного клеточного автомата с тремя состояниями, 2008 (диссертация)» | wc -c

$ touch «Котов АН Моделирование дорожного движения на многополосной магистрали при помощи двумерного вероятностного клеточного автомата с тремя состояниями, 2008 (диссертация)»

$ ls Котов*
Котов АН Моделирование дорожного движения на многополосной магистрали при помощи двумерного вероятностного клеточного автомата с тремя состояниями, 2008 (диссертация)

Вроде создался файл. ext3.

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

Источник

Записки IT специалиста

Технический блог специалистов ООО»Интерфейс»

  • Главная
  • Linux — начинающим. Часть 4. Работаем с файловой системой. Теория

Linux — начинающим. Часть 4. Работаем с файловой системой. Теория

Умение работать с файловой системой — один из наиболее важных навыков для начинающих. Действительно, о какой работе с системой может идти речь, если вы не знаете где и какие системные файлы расположены, не можете свободно перемещаться по дереву каталогов и выполнять элементарные операции с файлами? Тем более, что эти вопросы в руководствах обычно не поднимаются, предполагая, что читатель обладает необходимым минимумом знаний и умений. Поэтому очередная часть нашего цикла будет посвящена именно работе с файловой системой.

Перед тем как начать, вспомним, что такое файловая система. Прежде всего, это порядок, определяющий способ организации, хранения и именования информации на устройствах хранения, а только потом практическая реализация этого порядка. Т.е. первичен некий свод правил: что где лежит, как называется и т.д. и т.п., а практические реализации файловых систем, например, NTFS или ext4, это технический способ организации информации на определенном типе носителя в соответствии с принятыми правилами.

За примерами далеко ходить не надо, каждый пользователь Windows знает, что файлы лежат в папках, папки на разделах (логических дисках), а систему следует искать в папке Windows системного диска. Точно также любой Linux администратор будет искать настройки в /etc, логи в /var/log, а свои собственные документы в /home.

Так как большинство начинающих Linux администраторов уже имеют достаточный опыт работы с файловой системой Windows, то прежде всего мы рассмотрим, что общего у двух систем, а чем они отличаются. Понимание этих моментов поможет по максимуму использовать уже имеющийся опыт, в тоже время, не совершая глупых ошибок.

Структура файловой системы

Начнем с привычного и понятного.

В основу файловой системы Windows положен диск, символизирующий собой отдельное устройство хранения информации. При этом каждый диск содержит свою собственную файловую систему, корень которой составляет он сам и обозначается буквой. Т.е. запись вида C:\ — обозначает корень файловой системы на диске С, а D:\Работа — папку в корне файловой системы диска D. Подключая к системе новый носитель информации мы получаем еще одну или несколько файловых систем.

Это одна из самых больших привычек: подключили накопитель — в системе появился новый диск, если это не так, то накопитель либо не определился, либо неисправен.

В Linuх концепция принципиально иная. Вспомним: все есть файл, дисковые накопители — это тоже определенный тип файла. Кроме того, файловая система Linuх иерархична, т.е. имеет один единственный корень, обозначаемый символом /.

Этот момент вызывает у новичков множество непониманий. Но на самом деле нет ничего сложного, файловая система в Linux просто организована по-другому, но при этом она по-своему стройна, логична и понятна.

Давайте еще раз рассмотрим схему с Windows. На ней имеется один физический диск для системы, второй для пользовательских данных и компакт диск с музыкой. А теперь взглянем на другую схему, где мы показали аналогичную организацию размещения данных в среде Linux.

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

Но диск, с точки зрения Linux, это тоже файл и может быть расположен в любом месте файловой системы. В нашем случае никто не мешает поместить его на место папки /home, где располагаются пользовательские данные. Такое действие называется монтированием, а место файловой системы, к которому присоединен носитель — точкой монтирования. Таким образом папка /home целиком окажется на втором жестком диске, что будет в какой-то мере аналогично переносу пользовательских данных на диск D.

Съемные носители, такие как компакт-диски, флешки и т.п. в графической среде монтируются автоматически в предопределенную директорию /media, а в рабочем окружении появляется ярлык, что делает работу с ними неотличимой от Windows. В серверной среде вам потребуется монтировать съемные носители вручную, также вы можете выбрать произвольную точку монтирования, но лучше не изобретать велосипед, а использовать /media.

Еще один момент, связанный с иерархичностью файловой системы Linuх — это неизменность путей к данным при изменении физической структуры дисков. Простой пример: у вас есть большая коллекция музыки, которую вы решили вынести на отдельный жесткий диск. В Windows все просто: купили новый диск, подключили, скопировали. Но есть один недостаток. Если до этого пути к музыке были D:\Музыка, то стали E:\Музыка и все ранее созданные ярлыки, плейлисты и т.п. стали неверны.

В Linux процесс выглядит немного посложнее: новый диск временно монтируется, скажем, в /mnt, затем на него переносится содержимое папки /home/Музыка, после чего он монтируется на постоянной основе в точку /home/Музыка. В итоге наша коллекция лежит на отдельном жестком диске, но все плейлисты как работали с /home/Музыка так и продолжают работать.

Эту возможность трудно переоценить, особенно когда надо вынести на отдельный раздел не коллекцию музыки, а базу почтового сервера или содержимое хранилища виртуальных машин.

Имена файлов и расширения

Имена файлов и папок в Linux ограничены длинной в 256 символов и запретом на / (слеш). Отдельно следует упомянуть о символах . (точка) и

(тильда), точка перед именем файла или директории добавляют ему атрибут «скрытый», а тильда после имени добавляет атрибут «архивный» и также делает файл скрытым. Например, .file — скрытый файл, а file

Но это не говорит о том, что можно называть файлы, как вам нравится, без оглядки на иные системы, прежде всего Windows. Допустим, мы решили вопреки всем правилам назвать файл , в Linux нам никто не помешает этого сделать, но уже попытавшись скопировать его на флешку с FAT32 нас постигнет наказание, имя файла превратится в набор подчеркиваний.

Если передать его по SSH то ситуация будет немного получше, подчеркиваниями заменятся только запрещенные символы, а просто перетащив файл из окна виртуальной машины мы получили третий вариант именования файла.

Поэтому, если вы не хотите превращения имени вашего файла в нечто совершенно неожиданное, то не используйте в именах символы:

Также не злоупотребляйте служебными символами в начале имени, например, никто не мешает создать вам файл с именем -text, однако при попытке скопировать его в консоли вы получите неожиданный результат:

Еще одна важная особенность — Linux регистрозависимая система, это означает, что file.txt, File.txt и file.TXTтри разных файла!

Пока вы работаете с такими файлами в среде Linux проблем не будет, но если мы их попытаемся скопировать на флешку FAT32, то сразу возникнут затруднения.

Но это цветочки, ягодки будут тогда, когда вам понадобиться перенести на Windows платформу, скажем, веб-сайт со всем содержимым, куда на протяжении длительного времени заливались многочисленные image.jpg, Image.jpg или image.JPG.

Поэтому примите к сведению и постарайтесь соблюдать еще одно простое правило: все имена файлов набирать только в нижнем регистре, верхний регистр допускается там, где он уместен, например, в именах собственных. Также не забывайте о спецсимволах. Почему? Просто посмотрите на скриншот ниже:

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

Следующая особенность Linux-систем — это расширения файлов. В Windows тип файла полностью определяется его расширением, от которого также зависит дальнейшее поведение системы при работе с таким файлом. Все знают, что для того, чтобы скрипт мог запускаться, ему нужно присвоить расширение bat или cmd. В Linux поведение системы в отношении того или иного файла зависит от его типа, а для возможности запуска файл должен иметь установленный атрибут «исполняемый».

Однако это не говорит, что Linux игнорирует расширения файлов. В графической среде, для удобства пользователя, расширения точно также ассоциируются с приложениями, как и в Windows. Но есть и отличия, вы можете дать файлу несуществующее расширение или оставить его без расширения вообще, система правильно определит тип содержимого и сопоставит его с программой. А вот присвоив ему зарезервированное расширение вы просто сопоставите файл программе, без учета его содержимого.

Как видим документ LibreOffice успешно определяется последним невзирая на «левое» или отсутствующее расширение, но присвоив ему расширение jpg, мы сопоставим его программе просмотра изображений и получим ошибку при открытии.

С изображением и иным медиаконтентом связана еще одна особенность, если у файла есть расширение, то система не будет определять его реальное содержимое и будет пытаться открыть его так, как указано в расширении. Простой пример: мы переименовали файл jpg в png, после чего получили ошибку при попытке его открыть, в тоже время тот же самый файл без расширения вообще открывается нормально.

В Windows jpg переименованный в png (и наоборот) открываться будет нормально, разве что специализированный софт (например, Photoshop) станет ругаться. Поэтому если у вас в Linux перестали открываться мультимедийные файлы, которые нормально открываются в Windows, попробуйте просто удалить им расширение, чтобы система самостоятельно определила содержимое. Для примера мы специально удалили расширения у файлов различных типов, что из этого вышло можно увидеть ниже:

Конечно не со всеми типами файлов все гладко, так документы формата MS Office 2007 и выше (docx, xslx и т.п.) будут определяться как zip-архивы, которыми на самом деле и являются, но мы думаем, что ситуация, когда вы получите офисный документ без расширения на практике вам не встретится.

Жесткие и символические ссылки

Начав работать с Linux вы обязательно столкнетесь с этим типом файлов. Они не имеют прямого аналога в файловой системе Windows и поэтому на них стоит остановиться подробнее.

Начнем с символических ссылок, в первом и достаточно грубом приближении они напоминают ярлыки Windows, это специальный тип файла, который служит указателем на другой файл. Но при этом, в отличии от ярлыка, воспринимается системой прозрачно, т.е. не как файл ярлыка, а как файл типа, на который указывает ссылка. Проще говоря, мы не можем подсунуть Windows приложению ярлык на библиотеку вместо библиотеки, а в Linux это общепринятая практика.

Разберем устройство символических ссылок подробнее, в дальнейшем это поможет понять их отличие от жестких ссылок и лучше понять сферу их применения. Как известно файл (или каталог) есть ничто иное, как некая именованная область на диске. Соответствие имени файла областям диска хранится в специальной таблице файловой системы (inode в Linux, MFT или FAT в Windows), т.е. файл — это указатель в inode на определенную область данных на диске.

Символическая ссылка — это отдельный файл, со своим inode, который указывает на изначальный файл. Если первоначальный файл будет удален или перемещен, символические ссылки останутся, но окажутся бесполезными. В тоже время мы можем как угодно перемещать символические ссылки или удалять их, что никак не скажется на первоначальном файле.

Символические ссылки широко применяются в случаях, когда один и тот-же файл должен быть доступен под разными именами или в разных местах, но при этом его содержимое не должно меняться. Например, некое приложение требует библиотеку lib-1.0.1.so, в то время как есть совместимая библиотека lib-1.0.5.so, в этом случае создаем символическую ссылку на lib-1.0.5.so с именем lib-1.0.1.so и проблема решена. Другой случай, приложение требует lib-1.0.5.so, которая есть в системе, но ищет ее в другом месте, в этом случае делаем символическую ссылку с таким же именем, но в нужное расположение.

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

Другое применение, это файлы настроек. Например, веб-сервер Аpache содержит два набора директорий: с доступными модулями и настройками, и применяющимися в текущий момент. Для того, чтобы подключить модуль или настройку достаточно сделать символическую ссылку из одной директории в другую, надо выключить — удаляем символическую ссылку. Сам файл модуля или настроек остается на своем месте и может быть использован в дальнейшем.

Символические ссылки можно создавать не только на файлы, но и на каталоги. Также нет ограничения на физическое расположение символических ссылок в пределах одной физической файловой системы (одного раздела).

Жесткие ссылки. Это принципиально иная сущность. Жесткая ссылка создает еще одну запись в inode файла, т.е. по сути является еще одним его именем, а внешне является полной копией первоначального файла, определить при этом где файл, а где жесткая ссылка практически невозможно. Отличие жесткой ссылки от копии заключается в том, что несмотря на разные имена, это один и тот-же файл и, если изменить одно из его имен — изменятся остальные. Также файл физически существует до тех пор, пока на него есть хоть одна ссылка (первоначальный это файл или символическая ссылка — значения не имеет).

Для чего могут понадобиться жесткие ссылки? Самое распространенное их применение, это создание полных копий файла без лишних затрат дискового пространства. Например, инсталляционные пакеты. Допустим нам надо выложить на FTP несколько вариантов ПО, в каждый из наборов которого входят некие общие пакеты и документация, причем нужна синхронизация между этими файлами, например, если мы внесли изменения в документацию, это должно отразиться во всех наборах. Жесткие ссылки отлично решают эту задачу.

В тоже время жесткие ссылки создают дополнительную путаницу, особенно если вам нужно удалить файл во всех местах использования. Поэтому подходите к использованию жестких ссылок с осторожностью и не злоупотребляйте ими, так как в большинстве случаев символических ссылок более чем достаточно.

Жесткие ссылки, так как являются дополнительной записью в inode, могут использоваться только в пределах одного физического раздела. Также спецификации POSIX запрещают создание жестких ссылок для каталогов.

Права доступа

Еще одним неотъемлемым атрибутом любой файловой системы являются права доступа к файлам и папкам. Linux унаследовал классическую UNIX-систему прав, они не так гибки, как хотелось бы, но обеспечивают приемлемый уровень гибкости и безопасности для простых систем.

Права доступа к файлу (а как мы помним, в Linux все есть файл) хранятся в специальном 16-битовом поле атрибутов файла:

Тип объекта Особые признаки Права доступа
SUID SGID sticky Пользователь Группа Остальные
# # # # s s t r w x r w x r w x

Первые четыре бита устанавливают флаг типа объекта, они задаются при создании файла и не могут быть изменены. Флаг может иметь следующие значения:

  • — Отсутствие флага — обычный файл
  • l — Символическая ссылка
  • d — Директория
  • b — Блочное устройство
  • c — Символьное устройство
  • p — Канал, устройство fifo
  • s — Unix-сокет

Следующие три бита хранят особые признаки, влияющие на запуск исполняемых файлов и некоторые иные права, к ним мы вернемся несколько позже. И наконец следующие девять бит, разделенные на блоки по три бита содержат права доступа к файлу или директории.

Каждый файл в UNIX должен иметь владельца (пользователь, user), группового владельца (группа, group) и остальных пользователей (остальные, other), каждый из этих пользователей может иметь права на чтение (r), запись (w) и исполнение (x).

Применительно к каталогам флаги имеют несколько иной смысл: r — право получения имен файлов в каталоге (но не их атрибутов), x — право получения доступа к файлам и их атрибутам, w — право манипулировать именами файлов, т.е. создавать, удалять, переименовывать. Минимальный разумный набор прав на каталог: rx-, так как только r позволит получить только имена файлов, но не их тип, размер и т.п. Ниже показан пример папки с набором прав r—.

Как нетрудно заметить, w без х не имеет никакого смысла и равносильно его отсутствию.

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

OCT BIN Символьное Права на файл Права на каталог
0 000 отсутствие прав отсутствие прав
1 001 —x право на исполнение право на доступ к файлам и атрибутам
2 010 -w- право на запись отсутствие прав
3 011 -wx право на запись и исполнение все права, кроме получения имен файлов
4 100 r— право на чтение право на получение имен файлов
5 101 r-х право на чтение и исполнение право на получение имен файлов и доступ к ним
6 110 rw- право на чтение и запись право на получение имен файлов
7 111 rwx все права все права

В то время, как в системе используются преимущественно символьные обозначения, для целей администрирования обычно используются цифровые восьмеричные значения. Потому что проще, быстрее и удобнее написать, что права на файл должны быть 644, а не rw-r—r—.

В тоже время символьная запись позволяет быстро оценить реальный набор прав, а не вспоминать, что значит 755. Стандартные права для вновь создаваемых файлов — 664, папок — 775, исключение — файлы и каталоги, созданные с правами суперпользователя, они получают 644 и 755 соответственно.

На практике из всех сочетаний флагов доступа реально используются только 0, 4, 5, 6, 7 для файлов и 0, 5, 7 для папок.

Разобравшись с основными правами перейдем к особым признакам, таких три:

OCT BIN Наименование Действие
1 001 sticky удалить файл может только владелец или root
2 010 SGID файл запускается на исполнение с правами группового владельца
4 100 SUID файл запускается на исполнение с правами владельца

Начнем с младшего бита, его установка означает установку sticky-бита для каталога, установка данного флага для файлов в современных системах игнорируется. Дословно sticky обозначает «липкий», что довольно хорошо соответствует его смыслу. После установки данного флага удалить файл из каталога может только его владелец или суперпользователь, даже если на файлы и папку стоят права 777.

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

Опции SUID и SGID позволяют любому пользователю запускать файл на исполнение с правами его владельца или группы. Для чего это нужно? В обычных условиях файл запускается с правами текущего пользователя, что не всегда достаточно для его работы. Например, таким образом работает утилита passwd, нам нужно чтобы пользователь имел возможность изменить свой пароль без повышения прав, но данная операция требует прав суперпользователя. Как быть? Использовать признак SUID. Если мы проверим права на утилиту, то увидим запись rwsr-xr-x или 4755.

При установке признаков SUID и SGID они заменяют символ x на s в соответствующей группе символьного представления или записываются перед основными правами в восьмеричном виде. Вообще-то в цифровом виде все права следует записывать в четырехзначном формате, так как если особые признаки не установлены, то это 000 BIN или 0 OCT. Т.е. правильно писать не 777, а 0777, но обычно для краткости первый ноль опускают.

Если установлены несколько признаков, то записывается восьмеричное число аналогичное установленным битам в двоичном формате, например, SUID + sticky это 101 BIN или 5 OCT. Установленный sticky-бит заменяет x на t в группе other. Ниже показан каталог с правами 7775 или rwsrwsr-t, что соответствует установке на него SUID, SGID и sticky-бит одновременно.

Данная запись сделана нами исключительно в тестовых целях, так как установка SUID для каталога не имеет смысла, а установка SGID приведет к тому, что групповым владельцем создаваемых в нем файлов будет группа владельца каталога, а не группа создавшего его пользователя, как происходит по умолчанию. Также, ввиду потенциальной опасности, игнорируется установка SUID и SGID для скриптов.

В графической среде установка прав разнится в зависимости от выбранного настольного окружения, например, в Unity настройки выполнены в понятной пользователю форме, но особые признаки не отображаются и не могут быть установлены, а для папок присутствует бесполезный набор прав r—.

В XFCE не потрудились задать понятные и логичные наборы для файлов и папок, ограничившись стандартным перечислением, включая бесполезные -w- и -wx, также отсутствует явное указание признака «исполняемый», вместо этого флаг x автоматически добавляется к любому набору прав владельца.

И наконец KDE сочетает достаточно лаконичный основной набор прав с возможностью установки признака «исполняемый» для файлов и sticky-бит для папок с возможностью явно указывать особые признаки в дополнительных настройках.

В любом случае следует помнить, что графический интерфейс не является основным средством администрирования Linux, а представляет надстройку над средствами командной строки. В следующей части нашей статьи мы как раз уделим внимание приемам работы с файловой системой Linux в консольной среде.

Дополнительные материалы:

Помогла статья? Поддержи автора и новые статьи будут выходить чаще:

Или подпишись на наш Телеграм-канал:

Источник

Читайте также:  Exe для windows embedded
Оцените статью