#pragma once #include #include #include #include #include #include #include namespace phosphor { namespace user { namespace shadow { using InternalFailure = sdbusplus::xyz::openbmc_project::Common::Error::InternalFailure; using namespace phosphor::logging; /** @class Lock * @brief Responsible for locking and unlocking /etc/shadow */ class Lock { public: Lock(const Lock&) = delete; Lock& operator=(const Lock&) = delete; Lock(Lock&&) = delete; Lock& operator=(Lock&&) = delete; /** @brief Default constructor that just locks the shadow file */ Lock() { if (!lckpwdf()) { log("Locking Shadow failed"); elog(); } } ~Lock() { if (!ulckpwdf()) { log("Un-Locking Shadow failed"); elog(); } } }; } // namespace shadow } // namespace user } // namespace phosphor