Чому файли в моєму домашньому редакторі створюються як світові, незважаючи на більш обмежувальний умаск?


10

Я зрозумів, що дозволи на нові файли та каталоги ведуть себе трохи дивним чином. Перш за все, umask, здається, повертає правильну відповідь:

$ umask
0002

Це означає повний доступ для мого користувача та моєї групи, жодного доступу для запису для решти країн світу, жодного суїдду. Але якщо я створю файл у своєму $ 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 за замовчуванням. Будь-який натяк, чому це відбувається?


3
На якому типі файлової системи входить ваш домашній каталог?
mattdm

4
А як ти твориш testfileі testdir?
mattdm

3
@mattdm, ви праві наполягали: це XFS. Я забув, у нас є окремі томи для / home, / var та ще декілька. Хоча я часто використовую XFS і не бачив такої поведінки. Як це можна пов’язати?
rsuarez

2
acl може локально змінювати umask. Чи можливо ваші каталоги монтуються acl?
Faheem Mitha

3
Хм, мабуть, у xfs завжди включений acl. тому він може не відображатися у вашому / etc / fstab. Спробуйте запустити getfacl на своїх розділах / каталогах.
Faheem Mitha

Відповіді:


3

Я не знаю, чи правильно відповісти на моє власне питання. Редактори, будь ласка, порадьте це, якщо це не так. Заздалегідь спасибі.

Я думаю, що я вирішив цю таємницю: проблема полягала у відсутності ACL за замовчуванням на томах XFS. Ось запис ACL для / srv / резервного копіювання, одного з таких каталогів:

# file: srv/backups
# owner: root
# group: root
user::rwx
group::r-x
other::r-x

Щоразу, коли я робив "тест mkdir" або "touch testfile", він створював би дозволи 777. Отже, я робив це:

setfacl -m d:u::rwx /srv/backups

Залишаючи ACL так:

# file: srv/backups
# owner: root
# group: root
user::rwx
group::r-x
other::r-x
default:user::rwx
default:group::r-x
default:other::r-x

Раніше там (нібито) не було ACL, але зараз є. Я можу бачити знак "+", доданий до дозволів, коли я роблю "ls -l". І магічно, зараз "mkdir test" та "touch testfile" працюють із очікуваними дозволами:

# ls -l testfile 
-rw-r--r-- 1 root root 0 Dec 20 10:00 testfile
# ls -ld testdir
drwxr-xr-x+ 2 root root 6 Dec 20 10:00 testdir

Я не знаю, чому це відбувається. Я думаю, що XFS не любить відсутність ACL за замовчуванням, і веде себе дивно, коли це відбувається. Також я бачив, що це відбувається лише в CentOS, а не в Debian / Ubuntu. Можливо, це пов’язано з версією XFS в ядрі, або щось подібне. Не маю уявлення.

У всякому разі, це вирішує справу для мене. Велике спасибі за всі пропозиції :-)


Відповідь на власне питання цілком прийнятна .
Кіт Томпсон

0

Виклик create може чітко вказати дозволи, які мають перевагу над umask.

Ви не відповіли, як створюєте testfile,testdir.

Створіть файл за допомогою touch testfile, потім перерахуйте та опублікуйте дозволи


Вибачте за затримку. Я робив тест, використовуючи "touch testfile", а також "mkdir testdir", з подібними результатами. Здається, umask встановлений на "0000", оскільки вони створені з дозволами 777.
rsuarez

0

Спробуйте getfacl .в каталозі, у якому ви створюєте тестовий файл, щоб побачити, чи є acl за замовчуванням, що впливає на дозволи.


1
Ні, немає ACL за замовчуванням. Здається, якимось чином пов’язаний із XFS, тому що це відбувається лише в томах XFS. Але все-таки спасибі
rsuarez

-1

Просто шукайте змінну 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 ще раз і перевірте, чи працює вона для вас

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.