Linux, чому я не можу писати, хоча у мене є групові дозволи?


108

Я хочу створити файл у каталозі, що належить групі співробітників, до якої я є член. Чому я не можу цього зробити?

bmccann@bmccann-htpc:~$ ls -l /usr/local/lib/R/
total 4
drwxrwsr-x 2 root staff 4096 2010-07-31 16:21 site-library
bmccann@bmccann-htpc:~$ id -nG bmccann
bmccann adm dialout cdrom plugdev staff lpadmin admin sambashare
bmccann@bmccann-htpc:~$ touch /usr/local/lib/R/site-library/tmp
touch: cannot touch `/usr/local/lib/R/site-library/tmp': Permission denied

1
Чи є у вас дозвіл на запис в каталог бібліотеки сайтів в / usr / local / lib / R?
Тед Хопп

1
Чи не перша команда, яку я опублікував, не показує, що група має пільги на запис?
Бен Макканн

3
Чи вже є site-library/tmpфайл / каталог?
Єремія Віллок

Відповіді:


200

Ви вийшли з системи та ввійшли знову після внесення змін до групи? Див.: Відповідь
Супер Користувача, що стосується відмови дозволу на дотик


1
Якщо я відкрию нове вікно терміналу, чи не слід це вважати новим процесом? Я впевнений, що я спробував це, і це не спрацювало, щоб змусити мене вийти.
Бен Макканн

7
@Ben: Запуск нового процесу успадковує uid / gids від свого батьківського. Вам потрібно привілейована програма (наприклад login, suі т.д.) насправді встановити UID / GID.
ефемієнт

4
Якщо це незручно вихід з системи / Увійти назад, як випливає з вищесказаного, ви можете зробити це в терміналі: su your-user-name. Отримана оболонка матиме ваші оновлені групові дозволи.
TJ Crowder

2
Дякую за це! Я витрачав близько 15 хвилин, тягнучи волосся, намагаючись з'ясувати, чому я не мав групових дозволів у папці.
Джеремі Спенсер

2
Для мене знадобився перезапуск на Ubuntu 16.04 x64, а не лише вихід та вхід знову
Kartikey Tanna

15

Чому користувач Linux не може редагувати файли в групі, до якої він входить?

Я використовую Ubuntu 12.04 і мав таку ж проблему, коли користувач не може записати у файл, до якого йому дозволено груповий доступ. Наприклад:

whoami                                        //I am user el
  el                                            

touch /foobar/test_file                       //make a new file

sudo chown root:www-data /foobar/test_file    //User=root  group=www-data

sudo chmod 474 /foobar/test_file              //owner and others get only read, 
                                              //group gets rwx


sudo groupadd www-data                        //create group called www-data    

groups                                        //take a look at the groups and see
 www-data                                     //www-data exists.

groups el                                     //see that el is part of www-data
  el : www-data                               

Перезапустіть термінал зараз, щоб переконатися, що користувачі та групи набули чинності. Увійти як el.

vi /foobar/test_file                          //try to edit the file.

Випускає попередження:

Warning: W10: Warning: Changing a readonly file"

Що? Я все зробив правильно, чому це не працює?

Відповідь:

Зробіть повну перезавантаження комп’ютера. Зупинення терміналу недостатньо для усунення цих проблем.

Думаю, що apache2 також використовує групу даних www, тому завданням було якось запобігти правильному застосуванню користувачів та груп. Ви маєте не тільки вийти з системи, але й зупинити та перезапустити будь-які сервіси, які використовують вашу групу. Якщо перезавантаження не отримує, у вас є більші проблеми.


1
Що таке "більші проблеми"?
Еджаз

13

У мене була така ж проблема, перевірте, чи в папці є правила ACL чи ні!

Якщо ви можете бачити + (плюс знак), коли ви перераховуєте папку, це означає, що в ньому є спеціальні правила доступу. Наприклад:

[user_in_apache_group@web02 html]$ ls -l
total 16
drwxrwxr-x  16 apache apache 4096 Sep  4 13:46 ilias
drwxrwxr-x+ 15 apache apache 4096 Sep  4 13:46 ilias5

Переглянути дозвіл:

[user_in_apache_group@web02 html] getfacl ilias5
# file: ilias5
# owner: apache
# group: apache
user::rwx
user:user_in_apache_group:r-x
group::rwx
mask::rwx
other::r-x

Отже, це означає, що мій користувач (user_in_apache_group) не має дозволу на запис для цієї папки.

Рішення полягає в тому, що сказав @techtonik, додайте дозвіл на запис користувача:

[user_in_apache_group@web02 html]$ sudo setfacl -m u:user_in_apache_group:rwx ./ilias5

Перевірте дозвіл ще раз:

[user_in_apache_group@web02 html] getfacl ilias5
...
user:user_in_apache_group:rwx
...

Сподіваюся, це допомагає. ;)


8

Використовуйте Linux ACL (списки контролю доступу) - це більш точна версія дозвольної системи,

setfacl -R -m 'group:staff:rwx' -m 'd:group:staff:rwx' /usr/local/lib/R/

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

Це не спрацює без перегляду, якщо ви щойно додали себе до staffгрупи, але ви можете встановити дозвіл лише для себе на поточний сеанс.


5

У мене виникла проблема, коли користувач не міг отримати доступ до /foo/bar/bazкаталогу, навіть коли він мав дозволи, оскільки не мав доступу до barкаталогу.


-2

Перевірте, чи має ваш батьківський каталог дозвіл, перш ніж додавати вміст у цей файл

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