1

Я читаю «Командную строку The Linux Command Line » William Shotts и где-то в книге читаю часть, касающуюся разрешений, в которой говорится, что The operation may be a “+” indicating that a permission is to be added, a “-” indicating that a permission is to be taken away, *or a “=” indicating that only the specified permissions are to be applied and that all others are to be removed*.(см. часть между **)

Итак, я попробовал это:

me@ubuntu:~$ > foo
me@ubuntu:~$ ls -al | grep foo
-rw-rw-r--  1 me me     0 Apr  2 05:17 foo
me@ubuntu:~$ chmod g=x foo 
me@ubuntu:~$ ls -al | grep foo
-rw---xr--  1 me me     0 Apr  2 05:17 foo
iuliu@ubuntu:~$ 

Теперь файл создается с назначенными правами -rw-rw-r-- и после того, как я выполню chmod g=x foo я ожидаю, что они будут ------x--- (только у группы есть права на выполнение и ничего Больше). Я понимаю, что для получения разрешения на выполнение вы должны иметь разрешение на чтение, поэтому необходимо разрешение на чтение для группы, но почему права пользователя по-прежнему равны rw?

Спасибо!

2 ответа2

1

g = x добавляет разрешение на выполнение в группу, не изменяя другие разрешения. Это влияет только на указанную часть разрешений, когда вы выбираете определенную часть разрешений. Если вы используете chmod с числами, например, chmod 777, это перезапишет все текущие разрешения.

0

Чтобы развить и / или уточнить ответ Davidw: Поскольку вы говорите « g= , вы запрашиваете изменение только групповых разрешений.  Если вы скажете chmod =x foo , вы получите ---x--x--x .  Если вы хотите получить ------x--- , сделайте

chmod =,g=x foo

Это так же, как

chmod  =  foo
chmod g=x foo

Первая команда устанавливает права доступа равными 0 (----------), потому что она устанавливает отсутствие доступа ко всем трем группам пользователей (u , g и o), и я думаю, теперь вы понимаете, что такое вторая один делает.  Как указано, вы можете объединять операции, разделяя их запятыми.

Я понимаю, что для получения разрешения на выполнение необходимо иметь разрешение на чтение, поэтому необходимо разрешение на чтение для группы,…

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

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