MsgInitCallStatusManager();
try {
+ /* ipc data folder set acl for priv_read and priv_write */
+ if (!MsgAclInit()) {
+ MSG_ERR("FAIL TO INITIALIZE ACL [%d]", err);
+ }
+
/* storage handler initialize */
err = MsgStoInitDB(false);
if (err != MSG_SUCCESS) {
bool MsgScanFile(char *filePath);
void MsgGetMimeType(char *filePath, char *mimeType, int size);
+bool MsgAclInit();
#endif /* MSG_UTIL_FILE_H */
cond->pAddressVal = NULL;
}
cond->pAddressVal = (char *)new char[size+1];
+ memset(cond->pAddressVal, 0x00, sizeof(char)*(size+1));
if (cond->pAddressVal)
memcpy(cond->pAddressVal, value, sizeof(char)*size);
else
cond->pTextVal = NULL;
}
cond->pTextVal = (char *)new char[size+1];
+ memset(cond->pTextVal, 0x00, sizeof(char)*(size+1));
if (cond->pTextVal)
memcpy(cond->pTextVal, value, sizeof(char)*size);
else
Requires(post): systemd
Requires(postun): systemd
BuildRequires: cmake
+BuildRequires: libacl-devel
BuildRequires: pkgconfig(alarm-service)
BuildRequires: pkgconfig(aul)
BuildRequires: pkgconfig(badge)
%post tools
/sbin/ldconfig
-chmod 660 /usr/dbspace/.msg_service.db
+chmod 640 /usr/dbspace/.msg_service.db
chmod 660 /usr/dbspace/.msg_service.db-journal
+mkdir -p -m 775 /opt/usr/data/msg-service
+mkdir -p -m 770 /opt/usr/data/msg-service/msgdata
+mkdir -p -m 770 /opt/usr/data/msg-service/smildata
+mkdir -p -m 770 /opt/usr/data/msg-service/ipcdata
+mkdir -p -m 770 /opt/usr/data/msg-service/msgdata/thumbnails
+
+
chgrp priv_message_read /usr/dbspace/.msg_service.db
-chmod o= /usr/dbspace/.msg_service.db
-chsmack -a "*" /usr/dbspace/.msg_service.db
+chgrp priv_message_read /opt/usr/data/msg-service/msgdata
+chgrp priv_message_read /opt/usr/data/msg-service/smildata
+chgrp priv_message_write /opt/usr/data/msg-service/ipcdata
+chgrp priv_message_read /opt/usr/data/msg-service/msgdata/thumbnails
-mkdir -p -m 775 /opt/usr/data/msg-service
-mkdir -p -m 775 /opt/usr/data/msg-service/msgdata
-mkdir -p -m 775 /opt/usr/data/msg-service/smildata
-mkdir -p -m 775 /opt/usr/data/msg-service/ipcdata
-mkdir -p -m 775 /opt/usr/data/msg-service/msgdata/thumbnails
+
+chsmack -a "*" /usr/dbspace/.msg_service.db
+chsmack -a "System::Shared" /opt/usr/data/msg-service/msgdata -t
+chsmack -a "System::Shared" /opt/usr/data/msg-service/smildata -t
+chsmack -a "System::Run" /opt/usr/data/msg-service/ipcdata -t
+chsmack -a "System::Shared" /opt/usr/data/msg-service/msgdata/thumbnails -t
%post -n sms-plugin -p /sbin/ldconfig
%post -n mms-plugin -p /sbin/ldconfig
SET(CMAKE_EXE_LINKER_FLAGS "-Wl,--as-needed")
ADD_LIBRARY(${UTILS-LIB} SHARED ${UTILS-SRCS})
-TARGET_LINK_LIBRARIES(${UTILS-LIB} ${utils_pkgs_LDFLAGS} rt ${VOBJECT-LIB})
+TARGET_LINK_LIBRARIES(${UTILS-LIB} ${utils_pkgs_LDFLAGS} rt ${VOBJECT-LIB} acl)
INSTALL(TARGETS ${UTILS-LIB} DESTINATION ${LIBDIR} COMPONENT RuntimeLibraries)
#include <unistd.h>
#include <fcntl.h>
#include <libgen.h>
+#include <acl/libacl.h>
#include <media_content.h>
#include <thumbnail_util.h>
{
aul_get_mime_from_file(filePath, mimeType, size);
}
+
+
+bool MsgAclInit()
+{
+ /* ACL */
+ /* In msg-service.spec file use libacl-devel. Because acl get not process open API */
+ /* So have to set TARGET_LINK_LIBRARIES(acl) in makefile */
+ /* After GPL-3.0, not supply shell commend (setfacl, getfacl) by license issue, use the API */
+ MSG_BEGIN();
+
+ const char *priv_read =
+ "user::rwx\n"
+ "group::rwx\n"
+ "group:priv_message_read:rwx\n"
+ "mask::rwx\n"
+ "other::---";
+ acl_t acl = NULL;
+ int ret = 0;
+
+ acl = acl_from_text(priv_read);
+ if (!acl) {
+ MSG_ERR("%s: `%s': %s\n", MSG_IPC_DATA_PATH, priv_read, strerror(errno));
+ return false;
+ }
+
+ ret = acl_check(acl, NULL);
+ if (ret != 0) {
+ acl_free(acl);
+ if (ret == ACL_DUPLICATE_ERROR) {
+ MSG_DEBUG("Already Set ACL");
+ return true;
+ }
+ MSG_ERR("acl_check Fail : [%d],[%s]", ret, acl_error(ret));
+ return false;
+ }
+
+ ret = acl_set_file((const char *)MSG_IPC_DATA_PATH, ACL_TYPE_ACCESS, acl);
+ if (ret != 0) {
+ MSG_ERR("acl_set_file Fail : [%d][%s]", ret, strerror(errno));
+ }
+ acl_free(acl);
+
+ MSG_END();
+ return true;
+}