Случайно я побежал, chmod -u filename
и он удалил все разрешения, которые у меня были filename
.
Страница man не ссылается на -u
опцию. Экспериментируя, я смог сделать вывод, что он удаляет не все разрешения, а только права на чтение и выполнение, оставляя доступ на запись без изменений.
Так что же это делает?
Мой вывод выше неправильный, теперь я думаю, что он удаляет разрешения, которые есть у владельца, из всех категорий.
Я думаю, что поведение аналогично a=u
, только оно -
вместо =
и a
может быть отброшено, как, например, с помощью a+x
.
permissions
chmod
y_wc
источник
источник
[ugoa...][[-+=][perms...]...]
, гдеperms
есть либо нуль или более буквы из набораrwxXst
, или одной буквы из набораugo
» (GNU CHMOD человека страница); POSIX довольно неясен, но определяет производство «permcopy» для того же эффекта.u
), разрешения, предоставленные другим пользователям, которые являются членами группы файла (g
) и разрешения, предоставленные пользователям, которые не входят ни в одну из двух предыдущих категорий (o
). "u
, я буду указывать разрешения, предоставленные пользователю, которому принадлежит файл. Но это не говорит о том, что он делает. Что означает даже означает?Ответы:
Это не вариант, а стандартный (но необычный) способ указания разрешений. Это означает , что для удаления (
-
) разрешений , связанные с владельцем файла (u
) для всех пользователей (без предшествующихu
,g
илиo
). Это будет описано в справочной странице.Справочная страница GNU chmod документирует это как:
и позже
Таким образом,
-u
означает удалить (-
) любые разрешения, которые в настоящее время включены для владельца (u
) для всех (эквивалентноa-u
, за исключением соблюдения текущего umask). Хотя это не часто будет очень полезно,chmod +u
иногда будет аналогичным , например, копировать разрешения от владельца другим при рекурсивной работе.Это также задокументировано в POSIX , но более нечетко определено: спецификация разрешений широко
who[+-=]perms
(или число), и эффект от них дополнительно определен:а потом
источник
perms
может бытьu
, что я и получил. Да,u
указывает разрешения или владельца. Но как следует, что-u
удаляет разрешения владельца (модуляumask
) от всех пользователей?-
всегда делает: оно удаляет указанные разрешения у указанного класса пользователей.-u
точно аналогично-w
или (ближе) кugo-u
.chmod
вопросом по документации? Дайте мне знать, если вы считаете, что это заслуживает отдельного вопроса. «и = вызывает их добавление и приводит к удалению безымянных битов, за исключением того, что неизменяемые биты идентификатора пользователя и идентификатора группы не затрагиваются». Для меня это говорит о том, что, учитывая каталог, владелец которого имеет только доступ на запись,chmod u=rx directory
оставит разрешения владельца какrwx
. Но этого не происходит, вместо этого они становятся ожидаемымиr-x
. Я неправильно истолковываю что-то?s
биты setuid / setgid ( ) остаются одни, если вы не упоминаете их, а все, что вы не указали, удаляется.Ответ немного похож на /unix//a/429424/255251 .
не удаляет все разрешения, но учитывает
umask
ценность.Теперь измените значение umask
источник