Какой режим файла является символьной ссылкой?

Сначала подтвердите, что настраивать сценарий присутствует, где Вы думаете, что это. Второй удостоверяются, что это - исполняемый файл:

$ ls -l ./configure 
-rwxrwxr-x 1 saml saml 100 Jun  9 05:11 ./configure

Если обе из проверок в порядке затем, Вы могли бы хотеть попытаться работать configure первыми изменяющимися каталогами к /mainfolder/execution и затем выполнение configure как это:

$ cd /mainfolder/execution
$ ../configure

Вы также могли бы хотеть попробовать его этот путь:

$ cd /mainfolder
$ ./configure execution

РЕДАКТИРОВАНИЕ № 1

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

$ tree -f
.
`-- /mainfolder
    `-- /mainfolder/execution
        `-- /mainfolder/execution/configure
4
31.03.2015, 00:12
3 ответа

Режимы файлов охватывают два разных понятия: типы файлов и права доступа к файлам. Режим файла представлен значением st_mode в результате вызовов stat (2) , а ls -l представляет их все вместе; подробности см. в Общие сведения о разрешениях UNIX и типах файлов .

После создания файла его тип изменить нельзя. Кроме того, в системах Linux вы не можете указать разрешения для символической ссылки; все, что имеет значение, - это разрешение цели (и, по сути, полный режим, поскольку он также определяет поведение символической ссылки). Подробнее см. https://superuser.com/questions/303040/how-do-file-permissions-apply-to-symlinks . В Mac OS X символические ссылки могут иметь собственные разрешения.

Наконец, git использует упрощенную модель с ограниченным числом распознаваемых режимов:

  • 040000 для каталога
  • 100644 для обычного файла
  • 100755 для исполняемого файла
  • 120000 для символической ссылки

Эти значения можно увидеть с помощью таких команд, как git cat-file -p 'master ^ {tree}' ; подробности см. в Pro Git .

5
27.01.2020, 20:55

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

Например, если foo - это inode 1234 , то bar (символическая ссылка на foo) будет inode 1234 .

bar на самом деле не существует, это просто указатель на «настоящий» файл.

Символьные ссылки обычно не имеют разрешений за пределами разрешений файла, на который они указывают. Итак, права доступа bar «такие же» , что и foo . Вы не можете установить разрешения для панели (символическая ссылка) только для foo (настоящий файл).

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

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

Я не могу придумать ни одной системы (не значит, что ее нет), в которой символическая ссылка имеет разрешения отдельно от реального файла.

-1
27.01.2020, 20:55

What file mode indicates that a file is a symbolic link (symlink)?

La API POSIX para comprobar si un archivo es un enlace simbólico utiliza la macro S_ISLNK.

En glibc, S_ISLNKse define de la siguiente manera:

#define __S_IFMT    0170000 /* These bits determine file type.  */
#define __S_IFLNK   0120000 /* Symbolic link.  */
#define __S_ISTYPE(mode, mask)  (((mode) & __S_IFMT) == (mask))
#define S_ISLNK(mode)    __S_ISTYPE((mode), __S_IFLNK)

es decir, un archivo es un enlace simbólicoif ((mode & 0170000) == 0120000)(al menos en GNU/Linux ).

2
27.01.2020, 20:55

Теги

Похожие вопросы