2015-04-25 3 views
2

Я пытаюсь запустить командуНевозможно изменить владельца файла с Баш скрипт

chown -R "$USER" /mnt/namenode 

от Баш скрипт для смены владельца папки NameNode и ее подпапок. При вводе команды вручную

sudo chown -R ubuntu /mnt/namenode 

это работает, но не тогда, когда я делаю это из сценария. Из скрипта меняется только принадлежность наменода, а не его подпапок. Кто-нибудь знает, как я могу это исправить?

ОК, я понял. Мой скрипт форматировал namenode после того, как была установлена ​​собственность. Перед форматом вложенные папки имеют правильное владение рекурсивно. После формата владение подпапками менялось на root. Таким образом, я внесла следующее изменение:

echo 'Y' | /home/$USER/hadoop-2.2.0/bin/hadoop namenode -format 
sudo chown -R $USER:$USER /mnt/namenode 
sudo chown -R $USER:$USER /mnt/datanode 

Другими словами, я установил право собственности после того, как сделал форматирование.

+0

Вы уверены, что $ USER имеет правильное значение? Вставьте 'echo $ USER' перед' chown' – ern0

+0

эта команда хорошо работает для меня 'sudo chown -R ubuntu/mnt/namenode' ..... возможно ли, что диск защищен от записи? –

+0

Мой совет, что ваша переменная 'USER' ошибочна. Повторите это, чтобы убедиться, что это его контент. – ern0

ответ

0

Попробуйте это:

chown -R $USER:$USER /mnt/namenode 
0

Если вы запустите скрипт с sudo (как вы делаете), внутри сценария $USER будет root не обычный пользователь. Так используйте sudoвнутри сценарий:

sudo chown -R "$USER" /mnt/namenode 

и запустить скрипт без sudo.

+0

$ USER показан как ubuntu. Кроме того, я должен запустить сценарий как sudo из-за некоторых команд, которые требуют более высоких привилегий. – user3033194

+0

Вы пробовали 'echo $ USER' внутри скрипта? Он должен показывать «root». И вы на живом DVD? – Jahid

+0

Это показывает ubuntu. Нет, я не использую dvd. Это виртуальная машина с запуском ubuntu. – user3033194

0

У меня такая же проблема.

Попробуйте добавить слеш в конце папки, как:

chown -R "$USER" /mnt/namenode/ 
Смежные вопросы