Зарезервированные символы в именах файлов

newgrp только предоставляет Вам доступ к группе, к которой у Вас уже есть доступ. Бесполезные звуки? В основном, да. Это - главным образом остаток со дней, когда процесс не мог быть членом нескольких групп. Можно также получить доступ к группе, это защищено паролем, но это чрезвычайно необыкновенно используется.

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

Пользователь и базы данных группы (/etc/passwd, /etc/group, /etc/security/group.conf, LDAP, …), управляются login, su и другие программы, которые справляются с логинами и расширением полномочий, часто через PAM. Когда Вы входите в систему, Вы присвоены группам, перечисленным в /etc/passwd, /etc/group, и другие файлы через pam_groups; процесс похож на это:

gid_t groups[…] = /*extra GIDs computed from /etc/group and so on*/;
setgroups(sizeof(groups)/sizeof(gid_t), groups);
setgid(gid); /*main GID read from /etc/passwd*/
setuid(uid);
execve(shell, "-sh"); /*shell read from /etc/passwd*/

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

Если Вы только что добавили пользователя к группе, это вступит в силу в следующий раз, когда пользователь входит в систему. При запуске другой сессии путем входа в систему в другом терминале или по ssh процессы на той сессии будут иметь любые группы пользователь был в том, в то время, когда Вы вошли в систему. Можно использовать groups или id команда для наблюдения, что группы Вы (значение конкретного процесса Вы запустились groups от), член.

Так, я ответил на Ваши явные вопросы (newgrp делает его задание, которое не является тем, что Вы думали). Я могу или не мог решить Вашу проблему. Это необычно для приложений, которые не регистрируют Вас в искать базы данных группы и пользователь; обычно права доступа были бы решены путем проверки, является ли процесс запроса членом соответствующей группы. Если Вы имеете проблему с конкретным приложением, говорите нам который.

1
01.10.2012, 17:21
2 ответа

Я вполне уверен, единственные зарезервированные байты 0 (ASCII Nul) и 0x2f (ASCII '/', наклонная черта вправо).

Можно легко сделать файл с'.', '\' и другие броские вещи в нем. Думайте "unicode имена файлов", которые содержат все виды странных значений байта.

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

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

4
27.01.2020, 23:21

Хорошо на самом деле Вы могли, просто сделать это одинарной кавычкой,

например, touch '*'

Или использование Ваш FM:

enter image description here

Для получения дополнительной информации посмотрите Reserved characters and words на этой странице, по крайней мере / \ . .. не позволяются

0
27.01.2020, 23:21
  • 1
    , с работами одинарных кавычек. Что не так с двойными кавычками? (хорошие значки btw :) –  Ernest A C 01.10.2012, 03:03
  • 2
    Они мешают оболочке рассматривать метасимволы по-другому. mywiki.wooledge.org/Quotes –  llua 01.10.2012, 03:44
  • 3
    @llua, Но echo "*" команда показала, что оболочка не рассматривала * особенно в двойных кавычках. Что-то нечетное продолжается здесь. –  Kyle Jones 01.10.2012, 05:23
  • 4
    @llua @don_crissti Да, двойные кавычки должны предотвратить * от того, чтобы быть рассматриваемым особенно, точно так же, как одинарные кавычки. –  Ernest A C 01.10.2012, 16:21
  • 5
    Это не были кавычки, но файловая система (FAT32), который не позволяет '*' в именах файлов. Тайна решена! –  Ernest A C 01.10.2012, 16:26

Теги

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