Проблемы с разрешением при установке с помощью sudo между 14.04 и 16.04
Я столкнулся с множеством проблем с разрешениями при установке пакетов в 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
2 ответа
О вашем вопросе:
казнить 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, может предположительно разорвать фоновый процесс, который сохраняется на оконечном устройстве пользователя после завершения основной программы. Использование этой опции сделает это невозможным. Этот флаг отключен по умолчанию.
Надеюсь это поможет. Удачи!
Похоже, проблема, с которой вы сталкиваетесь, связана со значением по умолчанию rootumask
Разрешения, которые были созданы в версии 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/