提交 67d79ad7 编写于 作者: O Osier Yang

util: Use current uid and gid if they are passed as -1 for virDirCreate

All the callers of virDirCreate are updated incidentally.
上级 ea9509b9
...@@ -786,17 +786,10 @@ virStorageBackendFileSystemBuild(virConnectPtr conn ATTRIBUTE_UNUSED, ...@@ -786,17 +786,10 @@ virStorageBackendFileSystemBuild(virConnectPtr conn ATTRIBUTE_UNUSED,
/* Now create the final dir in the path with the uid/gid/mode /* Now create the final dir in the path with the uid/gid/mode
* requested in the config. If the dir already exists, just set * requested in the config. If the dir already exists, just set
* the perms. */ * the perms. */
uid_t uid;
gid_t gid;
uid = (pool->def->target.perms.uid == (uid_t) -1)
? getuid() : pool->def->target.perms.uid;
gid = (pool->def->target.perms.gid == (gid_t) -1)
? getgid() : pool->def->target.perms.gid;
if ((err = virDirCreate(pool->def->target.path, if ((err = virDirCreate(pool->def->target.path,
pool->def->target.perms.mode, pool->def->target.perms.mode,
uid, gid, pool->def->target.perms.uid,
pool->def->target.perms.gid,
VIR_DIR_CREATE_FORCE_PERMS | VIR_DIR_CREATE_FORCE_PERMS |
VIR_DIR_CREATE_ALLOW_EXIST | VIR_DIR_CREATE_ALLOW_EXIST |
(pool->def->type == VIR_STORAGE_POOL_NETFS (pool->def->type == VIR_STORAGE_POOL_NETFS
...@@ -808,9 +801,9 @@ virStorageBackendFileSystemBuild(virConnectPtr conn ATTRIBUTE_UNUSED, ...@@ -808,9 +801,9 @@ virStorageBackendFileSystemBuild(virConnectPtr conn ATTRIBUTE_UNUSED,
/* Reflect the actual uid and gid to the config. */ /* Reflect the actual uid and gid to the config. */
if (pool->def->target.perms.uid == (uid_t) -1) if (pool->def->target.perms.uid == (uid_t) -1)
pool->def->target.perms.uid = uid; pool->def->target.perms.uid = getuid();
if (pool->def->target.perms.gid == (gid_t) -1) if (pool->def->target.perms.gid == (gid_t) -1)
pool->def->target.perms.gid = gid; pool->def->target.perms.gid = getgid();
if (flags != 0) { if (flags != 0) {
ret = virStorageBackendMakeFileSystem(pool, flags); ret = virStorageBackendMakeFileSystem(pool, flags);
...@@ -1050,13 +1043,9 @@ static int createFileDir(virConnectPtr conn ATTRIBUTE_UNUSED, ...@@ -1050,13 +1043,9 @@ static int createFileDir(virConnectPtr conn ATTRIBUTE_UNUSED,
return -1; return -1;
} }
uid_t uid = (vol->target.perms.uid == -1)
? getuid() : vol->target.perms.uid;
gid_t gid = (vol->target.perms.gid == -1)
? getgid() : vol->target.perms.gid;
if ((err = virDirCreate(vol->target.path, vol->target.perms.mode, if ((err = virDirCreate(vol->target.path, vol->target.perms.mode,
uid, gid, vol->target.perms.uid,
vol->target.perms.gid,
VIR_DIR_CREATE_FORCE_PERMS | VIR_DIR_CREATE_FORCE_PERMS |
(pool->def->type == VIR_STORAGE_POOL_NETFS (pool->def->type == VIR_STORAGE_POOL_NETFS
? VIR_DIR_CREATE_AS_UID : 0))) < 0) { ? VIR_DIR_CREATE_AS_UID : 0))) < 0) {
......
...@@ -1126,6 +1126,12 @@ int virDirCreate(const char *path, mode_t mode, ...@@ -1126,6 +1126,12 @@ int virDirCreate(const char *path, mode_t mode,
int waitret; int waitret;
int status, ret = 0; int status, ret = 0;
/* allow using -1 to mean "current value" */
if (uid == (uid_t) -1)
uid = getuid();
if (gid == (gid_t) -1)
gid = getgid();
if ((!(flags & VIR_DIR_CREATE_AS_UID)) if ((!(flags & VIR_DIR_CREATE_AS_UID))
|| (getuid() != 0) || (getuid() != 0)
|| ((uid == 0) && (gid == 0)) || ((uid == 0) && (gid == 0))
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册