autossh не работает на rc.local

Команда tee при передаче несуществующего файла как параметр, создаст этот файл перед записью в него вывода. Добавляя к этой команде sudo , вы просите оболочку запустить команду tee от имени root . Вследствие этого файл, созданный tee , принадлежит пользователю, запускающему команду: root , и, следовательно, доступен только для чтения для других пользователей. Вы можете убедиться в этом сами, запустив ls -l и посмотрев на столбцы пользователь и группа .

$ rm -f writeProtectedFile # Removing the file in case it already exists
$ echo $text | sudo tee writeProtectedFile
yourtext
$ ls -l
total 4
-rw-r--r-- 1 root root 9 22.07.2015 14:26 writeProtectedFile

Есть несколько способов преодолеть это:

  • Создайте файл от имени обычного пользователя, прежде чем запрашивать tee записать в него. tee затем либо усечет, либо просто - добавит к нему , не меняя владельца:

     $ touch writeProtectedFile # создает файл как стандартный пользователь 
     $ echo $ текст | sudo tee writeProtectedFile 
     $ rm writeProtectedFile 
     
  • Измените владельца файла перед попыткой его удаления:

     $ echo $ text | sudo tee writeProtectedFile 
     $ sudo chown $ (whoami) writeProtectedFile # `whoami` возвращает текущее имя пользователя 
     $ rm writeProtectedFile 
     
  • Сообщите rm пользователю игнорируйте тот факт, что файл защищен от записи, используя -f, --force :

     $ echo $ text | sudo tee writeProtectedFile 
     $ rm --force writeProtectedFile 
     
0
20.12.2017, 20:43
0 ответов

Теги

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