На моем Pi chmod + w не ведет себя как обычно?

0
$ ls -al file1
-r--r--r-- 1 pi pi 0 Feb 10 15:18 file1

$ chmod +w file1
$ ls -al file1
-rw-r--r-- 1 pi pi 0 Feb 10 15:18 file1  #only u is updated

$ chmod +x file1
$ ls -al file1
-rwxr-xr-x 1 pi pi 0 Feb 10 15:18 file1  #all updated

Это как работает chmod + w?

Старый чудак
источник

Ответы:

1

Зависит от того, какой у тебя маски. Если ваш umask 022, то + w маскируется в группе и других флагах разрешений. + х не маскируется. Чтобы замаскировать любой из исполняемых флагов, добавьте 1 к маске в этой позиции. например, сделайте umask 033 и попробуйте снова.

ChrisDR
источник
1

Со страницы руководства:

If no value is supplied for who, each permission bit spec-
ified in perm, for which the corresponding bit in the file mode
creation mask (see umask(2)) is clear, is set.  Otherwise, the mode
bits represented by the specified who and perm values are set.

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

Эрик Ренуф
источник
1

Маска (по умолчанию 0022) является причиной, по которой chmod + w изменяет только пользовательский атрибут

$ chmod -v 444 a
mode of ‘a’ retained as 0444 (r--r--r--)
$ umask 000
$ chmod  -v +w a
mode of ‘a’ changed from 0444 (r--r--r--) to 0666 (rw-rw-rw-)
$ chmod -v +x a
mode of ‘a’ changed from 0666 (rw-rw-rw-) to 0777 (rwxrwxrwx)
Франсуа
источник
1

Это определяется Umask . Устанавливает настройки по умолчанию для создания и изменения разрешений файлов.

Чтобы легко увидеть umask по умолчанию, введите команду umask -S. Например, результат:

u=rwx,g=rx,o=rx
означает, что для пользователя применяется все, для группы только чтение и выполнение, и то же самое для других .

Чтобы изменить это, выдайте umask следующим образом:

umask x@y

где:

х может быть: u(пользователь), g(группа), o(другое) или a(все)

@ может быть, +чтобы добавить разрешения, -чтобы удалить разрешения

у может быть r(чтение), w(запись), x(выполнение)

Например: umask g+wвключить разрешения на запись по умолчанию, groupкогда вы делаете chmod +w.

Больше информации здесь или выдача man umaskв командной строке.

jcbermu
источник