修改文件的所有者和访问权限

原文链接: http://www.pfmboy.com/post/100.html

下面代码修改文件的所有者为当前用户并添加everyone完全控制权限。注意一定要先设置一下所有者(owner),然后再进行权限设置,二者一起执行是不会成功的。

BOOL AdjustPrivileges(LPWSTR lpName)
{
HANDLE hToken = NULL;
TOKEN_PRIVILEGES tp = {0};
TOKEN_PRIVILEGES oldtp = {0};
DWORD dwSize = sizeof(TOKEN_PRIVILEGES);
LUID luid = {0};

if (!OpenProcessToken(GetCurrentProcess(), TOKEN_ADJUST_PRIVILEGES | TOKEN_QUERY, &hToken)) {
if (GetLastError()==ERROR_CALL_NOT_IMPLEMENTED)
return TRUE;
else
return FALSE;
}
if (!LookupPrivilegeValueW(NULL, lpName, &luid)) {
CloseHandle(hToken);
return FALSE;
}

tp.PrivilegeCount=1;
tp.Privileges[0].Luid = luid;
tp.Privileges[0].Attributes = SE_PRIVILEGE_ENABLED;

/* Adjust Token Privileges */
if (!AdjustTokenPrivileges(hToken, FALSE, &tp, sizeof(TOKEN_PRIVILEGES), &oldtp, &dwSize)) {
CloseHandle(hToken);
return FALSE;
}

// close handles
CloseHandle(hToken);
return TRUE;
}

BOOL TakeOwner(char *FilePath)
{
CHAR UserName[36];
DWORD cbUserName = sizeof(UserName);
CHAR Sid[1024] = {0};
DWORD cbSid = sizeof(Sid);
CHAR DomainBuffer[128] = {0};
DWORD cbDomainBuffer = sizeof(DomainBuffer);
SID_NAME_USE eUse;
PACL Dacl = NULL,OldDacl = NULL;
EXPLICIT_ACCESS Ea;
PSECURITY_DESCRIPTOR Sd = NULL;
BOOL Ret = FALSE;

if (AdjustPrivileges(SE_TAKE_OWNERSHIP_NAME) && AdjustPrivileges(SE_RESTORE_NAME))
{
GetUserNameA(UserName,&cbUserName);
if (LookupAccountNameA(NULL,UserName,&Sid,&cbSid,DomainBuffer,&cbDomainBuffer,&eUse))
{

ZeroMemory(&Ea,sizeof(EXPLICIT_ACCESS));
GetNamedSecurityInfoA(FilePath,SE_FILE_OBJECT, DACL_SECURITY_INFORMATION,NULL, NULL, &OldDacl, NULL, &Sd);
BuildExplicitAccessWithNameW(&Ea,L"everyone",GENERIC_ALL,GRANT_ACCESS,SUB_CONTAINERS_AND_OBJECTS_INHERIT);
if (SetEntriesInAclW(1,&Ea,OldDacl,&Dacl) == ERROR_SUCCESS)
{
SetNamedSecurityInfoA(FilePath,SE_FILE_OBJECT,OWNER_SECURITY_INFORMATION ,&Sid,NULL,NULL,NULL);
if (SetNamedSecurityInfoA(FilePath,SE_FILE_OBJECT,OWNER_SECURITY_INFORMATION | DACL_SECURITY_INFORMATION,&Sid,NULL,Dacl,NULL) == ERROR_SUCCESS)
{
Ret = TRUE;
}
}

}
}
return Ret;
}

时间: 2024-11-06 17:11:57

修改文件的所有者和访问权限的相关文章

修改文件(夹)的用户访问权限的程序代码

原文链接: http://www.cppblog.com/wrhwww/archive/2011/08/23/154117.html 一般Windows下的系统文件(夹)只让受限帐户读取而不让写入和修改.如果要开启写操作权限就需要手动修改文件(夹)的用户帐户安全权限(这操作当然要在管理员帐户下执行).以下用程序封装了一下该操作: 先来个API版本: // // 启用某个账户对某个文件(夹)的所有操作权限 // pszPath: 文件(夹)路径 // pszAccount: 账户名称 // BOO

[添加用户]解决useradd 用户后没有添加用户Home目录的情况,Linux改变文件或目录的访问权限命令,linux修改用户密码,usermod的ysuum安装包。飞

usermod的yum安装包: shadow-utils 将nobody用户添加到nogroup 组: usermod -g nogroup nobody cat /etc/passwd|grep nobody nobody:x:65534:65534:nobody:/var/lib/nobody:/bin/bash 第3个字段是65534:意思就是,UID(用户的ID)是500. 第4个字段是65534:意思就是.GID(用户的组ID)的500. 使用usermod -g nogroup no

修改文件的所有者失(chown: changing ownership of `uploads': Operation not permitted)

在项目开发的时候,经常需要将文件上传到指定的目录下. 例如这次用thinkphp5的时候,需要在public目录下建立uploads目录用于存放上传的资源. 首先在命令窗口下输入: 1 mkdir uploads 当前,前提是当前执行命令的用户需要权限(假设此处有,非root). 问题来了,即使你目录创建成功,对于项目来说并不算成功. 因为项目运行的时候上传文件以及新建目录的时候,可以看出是apache用户. apache对该用户创建的目录并没有写入权限啊! 当然你可以继续输入: 1 chmod

Linux改变文件或目录的访问权限命令

使用  ll  或  ls -l 指令时 第一列会显示出目录下文件的权限 例如∶ -rw-r-r- 横线代表空许可.r代表只读,w代表写,x代表可执行.注意这里共有10个位置.第一个字符指定了文件类型.在通常意义上,一个目录也是一个文件.如果第一个字符是横线,表示是一个非目录的文件.如果是d,表示是一个目录. 确定了一个文件的访问权限后,用户可以利用Linux系统提供的chmod命令来重新设定不同的访问权限.也可以利用chown命令来更改某个文件或目录的所有者.利用 chgrp命令来更改某个文件

查询或修改文件的创建、访问、修改等时间戳信息

查询或修改文件的创建.访问.修改等时间戳信息.(作者写了一个命令程序以支持这些操作,程序下载链接:http://down.51cto.com/data/2286646) 这是一个命令程序,需要获取命令行参数才可以工作.命令帮助信息如下: setfiletime 文件时间戳修改命令. setfiletime [-q type] | [-s sametime] | [[-c createtime] [-aaccesstime] [-w wri tetime]] | [-h] | [-0] | [-1

linux下修改文件的所有者和所属组chown

owner表示所有人 linux下修改文件的所有者和所属组 chown命令 (注意:需要sudo 变为root来操作chown 才生效)同时所有者或所属组必须存在sudo chown root:root aa -R 递归的更改aa文件夹下所有的文件root:root 表示==>所有者:所属组

linux系统如何修改文件的所有者和所属组别

目前看到的MySQL文件属于zrby用户和zrby组,我们需要将mysql文件修改为属于root用户和root用户组 输入命令先在修改文件的所有者:(必须是在root用户下才能操作) 输入完命令执行完之后  输入ll查看修改是否成功. 然后我们输入以下的命令,来修改文件的用户组 输入完命令执行完毕后 输入ll查看是否修改成功 此时我们已经修改好了!! 原文地址:https://www.cnblogs.com/jingjiaming/p/8990455.html

chmod,chgrp,chown命令 修改文件权限

参考地址:http://www.cnblogs.com/avril/archive/2010/03/23/1692809.html linux系统的文件和目录属性都有访问许可权限. 文件或目录的访问权限分为只读.只写和可执行三种.其中这三种权限还对用户进行区分,分别是文件或目录拥有者.同用户组用户及其他用户. 如: 一个文件或目录有十位属性,分别是: 1--文件是目录还是纯文件.若是目录的话此位为d,否则为- 2~4--文件拥有者的读.写及可执行权限.r为可读,w为可写,x为可执行. 5~7--

chmod修改文件的权限/chown修改文件和目录的所有者

ll指令的显示的信息为(当前目录下只有nameservice1一个目录): drwxr-xr-x 3 hdfs hdfs 4096 4月 14 16:19 nameservice1 上述信息分别表示:权限(drwxr-xr-x 3).所属用户(hdfs)和组(hdfs).大小(4096).时间(4月 14 16:19).名称(nameservice1). 权限中的字母一共有10位数: 其中,第1位有两种选择:-表示是文件,d表示是目录.此处是d,表示nameservice1是目录:   第2位到