Есть несколько вещей, которые могут помешать пользователям выполнять команды:
Права доступа к файлам
Вы можете проверить их с помощью ls -l <файл>
, в форме чего-то вроде "rwxr-xrw-", который определяет права владельца, группы и других пользователей для этого файла на чтение, запись и выполнение.
Список управления доступом
Если на смонтированном устройстве включен acl, вы можете получить его свойства с помощью getfacl
и проверить те же разрешения, что и выше, или ограничения для разных пользователей. Пример:
[root] # getfacl
# file:
# owner:
# group:
user :: rw-
user:
: rwx
group :: r-
mask :: rwx
other :: r-
Переменные среды
Переменная PATH определяет список каталогов, в которых bash будет искать команды. Вы можете проверить его содержимое с помощью echo $ PATH
.
SElinux
SElinux - еще один способ добиться этого. Вы можете проверить разрешения SElinux с помощью ls -Z
.
Это всего лишь несколько примеров, надеюсь, это поможет.
В вашем примере показано, что вы указали -p
, который в цитируемой документации объясняет, копирует права доступа к файлам из источника вместо использования umask.
Удалить флаг -p
, если вы хотите использовать вместо этого umask.
Ваша umask
установлена на 0002
, то есть маскирует запись разрешения для других.
В обоих ваших примерах созданный файл не доступен для записи другим пользователям.
Он работает правильно.