Почему я получаю отказ в разрешении при использовании mv, хотя права доступа к каталогу правильные?

Это похоже на то, что вы сделали для установки php-5.3

Просто запустите:

yum install php-mysql
10
27.02.2019, 06:26
4 ответа

У меня возникла эта проблема, когда набор программ выполнялся в каталоге, который я пытался удалить. Чтобы переместить каталог, мне пришлось сначала убить все запущенные программы из этого каталога.

В следующих командах будьте очень осторожны при выборе имени вашей программы. Я использовал следующие команды для справки:

ps aux | grep -i [NAME_OF_ANNOYING_PROGRAM] | grep -v grep
# make sure that you are only about to kill the programs you want to kill

ps aux | grep -i [NAME_OF_ANNOYING_PROGRAM] | grep -v grep | awk '{print $2}' | sudo xargs kill -9
sudo mv /usr/local/[DIR_FOR_ANNOYING_PROGRAM] /usr/local/[DIR_FOR_ANNOYING_PROGRAM]2

Общая процедура:

  1. убить все программы, запущенные из указанного каталога
  2. попытка переименовать каталог
  3. если это не поможет, принудительно убить(kill -9с большой осторожностью)все программы из каталога
  4. попытка переименовать каталог
  5. если это не удается, проверьте, запущена ли программа снова, т.е.что он был перезапущен какой-то программой-демоном, работающей из другого каталога
  6. принудительное уничтожение программы-демона, которая перезапускает надоедливую программу
  7. принудительно завершить надоедливую программу
  8. переименовать каталог
  9. прибыль
3
27.01.2020, 19:59

Я использовал подсистему Windows для Linux. У меня был открыт каталог в другом экземпляре bash. Закрытие позволило мне переместить каталог.

54
27.01.2020, 19:59

Проблема здесь, вероятно, связана со списком управления доступом (ACL )папки «Музыка». ACL — это отдельная система разрешений для обычных POSIX-систем, которые обычно перечислены в ls -l. Некоторые другие каталоги в домашней папке и в других местах также имеют ACL.

Чтобы просмотреть списки ACL в домашнем каталоге, используйте:

/bin/ls -le ~

Скорее всего, вы увидите правило типа 0: group:everyone deny deleteдля музыкального каталога. Как вы заметили, вы можете обойти проблему с sudo. Если вы не хотите этого делать (или не можете ), у вас есть другие варианты, учитывая, что вы являетесь владельцем файла. Вы можете удалить оскорбительную запись из ACL музыкального каталога на основе ее индекса (0 в примере, который я привел выше ):

.
/bin/chmod -a# 0 Music

Либо можно удалить все записи в ACL:

/bin/chmod -N Music

Теперь вы можете перемещать каталог (в соответствии с обычными разрешениями POSIX ). Если вы хотите вернуть ACL обратно после перемещения, вы можете использовать:

/bin/chmod +a "group:everyone deny delete" Music_tmp

И снова нажмите /bin/ls -le, чтобы подтвердить, что ACL соответствует вашим требованиям. Ознакомьтесь с примерами ACL в man chmodдля получения дополнительной информации. В частности, это введение полезно:

Each file has one ACL, containing an ordered list of entries. Each entry refers to a user or group, and grants or denies a set of permissions. In cases where a user and a group exist with the same name, the user/group name can be prefixed with "user:" or "group:" in order to specify the type of name.

Приказ ACL

Я не думаю, что эта справочная страница объясняет правила порядка следования, но эта страница ясно объясняет правила порядка для ACL. В частности, явное правило denyбудет применяться перед явным правилом allow. Таким образом, пока существует запись group:everyone deny delete, невозможно дать пользователю разрешение на удаление с помощью правила allow. Это связано с тем, что доступ запрещен для группы everyone, в которую входит и вы, и это правило будет применено первым.

8
27.01.2020, 19:59

Это также может произойти, когда один из файлов внутри защищен -от записи. Сегодня у меня был пограничный случай, когда access.logбыл защищен от записи -для Apache, который уже был остановлен. Я просто удалил этот файл, так что дальше я смог переместить родительский каталог.

0
27.01.2020, 19:59

Теги

Похожие вопросы