$ 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?

4 ответа4

1

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

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

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

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

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

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

umask x@y

где:

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

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

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

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

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

1

Umask (по умолчанию 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)

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .