From 399af51ccc89753f216a7a214286627197dc8299 Mon Sep 17 00:00:00 2001 From: notplants Date: Sat, 18 Dec 2021 10:00:40 -0500 Subject: [PATCH] Add permissions function peach-config --- Cargo.lock | 2 +- peach-config/Cargo.toml | 2 +- peach-config/src/main.rs | 17 ++++++++++++++++- peach-config/src/set_permissions.rs | 18 ++++++++++++++++++ 4 files changed, 36 insertions(+), 3 deletions(-) create mode 100644 peach-config/src/set_permissions.rs diff --git a/Cargo.lock b/Cargo.lock index 4e54f81..a022f95 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -2415,7 +2415,7 @@ dependencies = [ [[package]] name = "peach-config" -version = "0.1.14" +version = "0.1.15" dependencies = [ "clap", "env_logger 0.6.2", diff --git a/peach-config/Cargo.toml b/peach-config/Cargo.toml index c669acf..4afbe02 100644 --- a/peach-config/Cargo.toml +++ b/peach-config/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "peach-config" -version = "0.1.14" +version = "0.1.15" authors = ["Andrew Reid ", "Max Fowler "] edition = "2018" description = "Command line tool for installing, updating and configuring PeachCloud" diff --git a/peach-config/src/main.rs b/peach-config/src/main.rs index ea5184e..c7dae8b 100644 --- a/peach-config/src/main.rs +++ b/peach-config/src/main.rs @@ -5,6 +5,7 @@ mod generate_manifest; mod setup_networking; mod setup_peach; mod setup_peach_deb; +mod set_permissions; mod update; mod utils; @@ -17,6 +18,7 @@ use crate::change_password::set_peach_web_password; use crate::generate_manifest::generate_manifest; use crate::setup_peach::setup_peach; use crate::update::update; +use crate::set_permissions::set_permissions; #[derive(StructOpt, Debug)] #[structopt( @@ -50,6 +52,10 @@ enum PeachConfig { /// Changes the password for the peach-web interface #[structopt(name = "changepassword")] ChangePassword(ChangePasswordOpts), + + /// Updates file permissions on PeachCloud device + #[structopt(name = "permissions")] + SetPermissions, } #[derive(StructOpt, Debug)] @@ -124,7 +130,7 @@ fn main() { Ok(_) => {} Err(err) => { error!( - "peach-config countered an error generating manifest: {}", + "peach-config encountered an error generating manifest: {}", err ) } @@ -144,6 +150,15 @@ fn main() { ) } }, + PeachConfig::SetPermissions => match set_permissions() { + Ok(_) => {} + Err(err) => { + error!( + "peach-config ecountered an error updating file permissions: {}", + err + ) + } + } } } } diff --git a/peach-config/src/set_permissions.rs b/peach-config/src/set_permissions.rs new file mode 100644 index 0000000..678d6b5 --- /dev/null +++ b/peach-config/src/set_permissions.rs @@ -0,0 +1,18 @@ +use crate::error::PeachConfigError; +use crate::utils::cmd; + +/// All configs are stored in this folder, and should be read/writeable by peach group +/// so they can be read and written by all PeachCloud services. +pub const CONFIGS_DIR: &str = "/var/lib/peachcloud"; + +/// Utility function to set correct file permissions on the PeachCloud device. +/// Accidentally changing file permissions is a fairly common thing to happen, +/// so this is a useful CLI function for quickly correcting anything that may be out of order. +pub fn set_permissions() -> Result<(), PeachConfigError> { + println!("[ UPDATING FILE PERMISSIONS ON PEACHCLOUD DEVICE ]"); + cmd(&["chmod", "-R", "660", CONFIGS_DIR])?; + cmd(&["chown", "-R", "peach", CONFIGS_DIR])?; + cmd(&["chgrp", "-R", "peach", CONFIGS_DIR])?; + println!("[ PERMISSIONS SUCCESSFULLY UPDATED ]"); + Ok(()) +}