Linux, почему я не могу написать, хотя у меня есть права доступа к группе? - PullRequest
99 голосов
/ 20 февраля 2011

Я хочу создать файл в каталоге, принадлежащем группе сотрудников, членом которой я являюсь.Почему я не могу этого сделать?

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

Ответы [ 6 ]

188 голосов
/ 20 февраля 2011

Вы вышли из системы и снова вошли в нее после внесения изменений в группу? См:
Ответ суперпользователя, связанный с ошибкой сенсорных разрешений

12 голосов
/ 19 ноября 2013

Почему пользователь 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-data, поэтому задача была как-то помешать правильному применению пользователей и групп. Вы должны не только выйти из системы, но и остановить и перезапустить все службы, которые используют вашу группу. Если перезагрузка не получится, у вас будут большие проблемы.

9 голосов
/ 04 сентября 2015

У меня была такая же проблема, проверьте, есть ли в папке больше правил 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
...

Надеюсь, это поможет. ;)

7 голосов
/ 17 сентября 2014

Используйте Linux ACL (списки контроля доступа) - это более детальная версия системы разрешений,

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

Устанавливает активные права для каталога и права по умолчанию для всего, что создано внутри.

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

5 голосов
/ 27 марта 2014

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

0 голосов
/ 09 ноября 2018

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

sudo chmod -R 777 /yourDir/file.log
...