Я понял, что разрешения для новых файлов и каталогов ведут себя немного странно. Прежде всего, umask, кажется, возвращает правильный ответ:
$ umask
0002
Это означает полный доступ для моего пользователя и моей группы, нет права на запись для остального мира, нет suid. Но если я создаю файл в моем $ HOME, это выглядит так:
$ ls -l testfile
-rw-rw-rw- 1 robe robe 0 mar 16 12:58 testfile
то есть, предоставляя доступ для записи каждому. То же самое происходит с каталогами:
$ ls -ld testdir
drwxrwxrwx 2 robe robe 6 mar 16 13:00 testdir
Я думаю, что это то же самое, что иметь umask 0000, а не 0002. Я искал во всех / etc какой-то экземпляр umask, который изменяет значение по умолчанию 0002 или 0022, но не нашел ни одного. Это установка CentOS 5.5 по умолчанию. Любой намек на то, почему это происходит?
testfile
иtestdir
?Ответы:
Я не знаю, правильно ли отвечать на мой вопрос. Редакторы, пожалуйста, сообщите об этом, если это не так. Заранее спасибо.
Я думаю, что разгадал эту загадку: проблема заключалась в отсутствии ACL по умолчанию на томах XFS. Вот запись ACL для / srv / backups, одного из затронутых каталогов:
Всякий раз, когда я делал «тест mkdir» или «тестовый файл касания», он выдавал разрешения 777. Поэтому я сделал это:
Оставив ACL так:
Раньше там (якобы) не было ACL, а сейчас есть. Я вижу знак "+", прикрепленный к разрешениям, когда я делаю "ls -l". И волшебным образом теперь «mkdir test» и «touch testfile» работают с ожидаемыми разрешениями:
Я не знаю, почему это происходит. Я предполагаю, что XFS не нравится отсутствие ACL по умолчанию, и ведет себя странно, когда это происходит. Кроме того, я видел это только в CentOS, а не в Debian / Ubuntu. Может быть, это связано с версией XFS в ядре, или что-то в этом роде. Без понятия.
Во всяком случае, это решает дело для меня. Большое спасибо за все предложения :-)
источник
Вызов creat может явно указывать разрешения, которые имеют приоритет над umask.
Вы не ответили, как вы создаете
testfile,testdir
.Создайте файл, используя
touch testfile
, затем перечислите и опубликуйте разрешенияисточник
Попробуйте
getfacl .
в каталоге, в котором вы создаете свой тестовый файл, посмотреть, есть ли ACL по умолчанию, влияющий на разрешения.источник
Просто найдите переменную USERGROUPS_ENAB в /etc/login.defs
Их комментарий для того, чтобы отключить его # USERGROUPS_ENAB да
Если вы также хотите изменить umask вашего текущего пользователя, вы должны сначала выполнить предыдущую процедуру, а затем сделать следующее.
пример для 027
echo "umask 027" >> ~ / .bashrc && pkill -KILL -u your_username_here
echo "umask 027" >> ~ / .bashrc эта команда установит значение umask по умолчанию для вашего профиля
это заставит вас выйти
после входа снова
просто запустите команду umask и посмотрите, работает ли она для вас
источник