Я столкнулся с множеством проблем с разрешениями при установке пакетов в 16.04. Я устанавливаю их, используя sudo
, но тогда обычные пользователи не могут читать файлы в пакете.
Итак, я запустил простой тест: я создал каталог, используя sudo
в 14.04, и посмотрел на разрешения:
sudo mkdir test_14_04
ls -ld test_14_04/
#returns: drwxr-xr-x 2 root root 4096 Jan 3 05:57 test_14_04/
Затем я сделал то же самое в 16.04, но вместо этого я получил:
#returns: drwxr-x--- 2 root root 4096 Jan 3 06:00 test_16_04/
Как видите, разрешение по умолчанию - чтение мира в 14.04, но не в 16.04. Так что это может быть проблемой с sudo
-установленными разрешениями пакета.
Как это можно исправить?
PS:
Моя версия Ubuntu 16.04:
Distributor ID: Ubuntu
Description: Ubuntu 16.04.3 LTS
Release: 16.04
Codename: xenial
, а моя версия 14.04:
Distributor ID: Ubuntu
Description: Ubuntu 14.04.5 LTS
Release: 14.04
Codename: trusty
О вашем вопросе:
Выполните sudo visudo
и добавьте следующие строки:
`Defaults umask=0022`
`Defaults umask_override`
umask_override (см. Справочную страницу sudoers) :
Если установлено, sudo будет устанавливать umask, как указано sudoers без изменений. Это позволяет указать более разрешающий umask в sudoers, чем собственный umask, и соответствует историческому поведению. Если umask_override не установлен, sudo установит umask как объединение umask пользователя и того, что указано в sudoers. Этот флаг отключен по умолчанию. Если установлено, sudo будет запускать команду в псевдо-pty, даже если ведение журнала ввода-вывода не ведется. Вредоносная программа, запущенная под sudo, может предположительно разорвать фоновый процесс, который сохраняется на оконечном устройстве пользователя после завершения основной программы. Использование этой опции сделает это невозможным. Этот флаг по умолчанию отключен.
Надеюсь, это поможет, удачи!
Похоже, проблема, с которой вы столкнулись, заключается в значении по умолчанию root
umask
Разрешения, созданные в версии 14.04, равны umask
из 0022
, что должно значение по умолчанию root
из umask
# umask
0022
Похоже, что вашим значением по умолчанию umask
в 16.04
является 0027
, что можно проверить, запустив в приглашении root
:
umask
, чтобы изменить поведение по умолчанию, вам нужно проверить root
стартовые скрипты (profile
, login
и т. Д.) И найти, где было установлено это значение, и измените его следующим образом:
umask 0022
Вместо:
umask 0027
Дополнительную информацию можно найти в понимании использования значения linux umask
Пример:
root@ubuntu:~# umask
0022
root@ubuntu:~# mkdir /tmp/z123
root@ubuntu:~# ll -ld /tmp/z123
drwxr-xr-x 2 root root 4096 Jan 3 14:51 /tmp/z123/
root@ubuntu:~# umask 0027
root@ubuntu:~# umask
0027
root@ubuntu:~# mkdir /tmp/a123
root@ubuntu:~# ll -ld /tmp/a123
drwxr-x--- 2 root root 4096 Jan 3 14:54 /tmp/a123/