当前位置: 首页 > wzjs >正文

php 网站建设柳州建设网官网

php 网站建设,柳州建设网官网,阳江网站设计公司,电子商务网站的设计要求包括在linux ACL权限控制之用户权限控制程序设计-CSDN博客中建立了两个用户vox和zoe,两个用户组vox和zoe: 切换到vox,新建一个文件testfile并查看其权限: 将testfile所属的组变为zoe,并将组权限从rw降为r: 使用…

在linux ACL权限控制之用户权限控制程序设计-CSDN博客中建立了两个用户vox和zoe,两个用户组vox和zoe:

切换到vox,新建一个文件testfile并查看其权限:

将testfile所属的组变为zoe,并将组权限从rw降为r:

使用setfacl设置用户zoe的rwx权限:

上面的红框似乎表明文件所属组zoe具备了rwx权限,现在创建新用户spy并加入组zoe:

useradd spy
gpasswd -a spy zoe

切换到spy,使用vim打开testfile:

spy只拥有对testfile的只读权限!ls -l testfile的输出似乎不太可信,用getfacl看一看:

原来group仍然是r权限,多了一个mask且值为rwx,显示在如下红框的位置:

如果强行使用chmod命令将组zoe的权限改为rw呢?结果如下:

1和4表明mask的值变成了rw,2表明group的权限仍为r,使用chmod只能改变mask的值,并不能改变group的值,3表明user zoe的实际有效值为rw而不是rwx。

那么acl中的mask究竟是个啥?

在linux的访问控制列表(ACL)中,mask的作用是限制用户和组的最大有效权限。它作为一个过滤器,确保所有通过ACL设置的用户和组权限都不会超过mask所定义的权限范围。如果某个用户的ACL条目权限超过了mask的限制,那么该用户的实际有效权限将被mask所限制。

简单来说,mask决定了setfacl对user和group设定权限的上限,比如意思mask的值rw,即使zoe被设置成了rwx,最后也只有rw的权限。

现在,编程实现使用acl给group增加权限及改变mask值得功能。

假设有如下文件:

编程实现给group zoe增加rwx的权限,代码如下:

#include <stdio.h>
#include <stdlib.h>
#include <sys/acl.h>int main() {const char *filename = "/home/vox/testfile";uid_t group_id = 1002;// 获取文件的ACLacl_t acl = acl_get_file(filename, ACL_TYPE_ACCESS);if (acl == NULL) {perror("Failed to get ACL");return EXIT_FAILURE;}// 创建新ACL条目acl_entry_t entry;if (acl_create_entry(&acl, &entry) == -1) {perror("Failed to create ACL entry");acl_free(acl);return EXIT_FAILURE;}// 设置条目类型为组if (acl_set_tag_type(entry, ACL_GROUP) == -1) {perror("Failed to set tag type");acl_free(acl);return EXIT_FAILURE;}// 设置组ID为限定符if (acl_set_qualifier(entry, &group_id) == -1) {perror("Failed to set qualifier");acl_free(acl);return EXIT_FAILURE;}// 设置权限(读)acl_permset_t permset;if (acl_get_permset(entry, &permset) == -1) {perror("acl_get_permset failed");acl_free(acl);return EXIT_FAILURE;}acl_clear_perms(permset);                  // 清空权限acl_add_perm(permset, ACL_READ | ACL_WRITE | ACL_EXECUTE);  // 添加读写执行权限if (acl_set_permset(entry, permset) == -1) {perror("acl_set_permset failed");acl_free(acl);return EXIT_FAILURE;}// 自动计算MASK条目(关键修复)if (acl_calc_mask(&acl) == -1) {perror("Failed to calculate mask");acl_free(acl);return EXIT_FAILURE;}// 验证ACLif (acl_valid(acl) == -1) {perror("Invalid ACL");acl_free(acl);return EXIT_FAILURE;}// 应用ACL到文件if (acl_set_file(filename, ACL_TYPE_ACCESS, acl) == -1) {perror("Failed to apply ACL");acl_free(acl);return EXIT_FAILURE;}// 释放资源acl_free(acl);return 0;
}

使用如下命令编译:

g++ main.cpp -lacl

sudo执行可执行文件后,使用getfacl查看testfile的权限:

zoe获得了rwx的权限,mask的值为rwx。

改变mask的值为r,代码如下:

#include <stdio.h>
#include <stdlib.h>
#include <sys/acl.h>int main() {const char *filename = "/home/vox/testfile";uid_t group_id = 1002;// 1. 获取文件的ACL(假设文件已有基础ACL)acl_t acl = acl_get_file(filename, ACL_TYPE_ACCESS);if (acl == NULL) {perror("acl_get_file failed");return EXIT_FAILURE;}// 2. 添加扩展条目(ACL_USER)acl_entry_t group_entry;if (acl_create_entry(&acl, &group_entry) == -1) {perror("acl_create_entry failed");acl_free(acl);return EXIT_FAILURE;}if (acl_set_tag_type(group_entry, ACL_GROUP) == -1 ||acl_set_qualifier(group_entry, &group_id) == -1) {perror("Failed to set group entry");acl_free(acl);return EXIT_FAILURE;}// 设置组权限为 rwxacl_permset_t group_perms;acl_get_permset(group_entry, &group_perms);acl_clear_perms(group_perms);acl_add_perm(group_perms, ACL_READ | ACL_WRITE | ACL_EXECUTE);acl_set_permset(group_entry, group_perms);// 3. 手动创建并设置 MASK 条目acl_entry_t mask_entry;if (acl_create_entry(&acl, &mask_entry) == -1) {perror("acl_create_entry for mask failed");acl_free(acl);return EXIT_FAILURE;}if (acl_set_tag_type(mask_entry, ACL_MASK) == -1) {perror("acl_set_tag_type for mask failed");acl_free(acl);return EXIT_FAILURE;}// 设置 MASK 权限为 r--(限制最大权限)acl_permset_t mask_perms;acl_get_permset(mask_entry, &mask_perms);acl_clear_perms(mask_perms);acl_add_perm(mask_perms, ACL_READ);acl_set_permset(mask_entry, mask_perms);// 4. 验证并应用ACLif (acl_valid(acl) == -1) {perror("Invalid ACL");acl_free(acl);return EXIT_FAILURE;}if (acl_set_file(filename, ACL_TYPE_ACCESS, acl) == -1) {perror("acl_set_file failed");acl_free(acl);return EXIT_FAILURE;}acl_free(acl);return 0;
}

编译执行,使用getfacl查看testfile的权限:


文章转载自:

http://sYW4pmuD.qhczg.cn
http://Esuj27CK.qhczg.cn
http://OktEnLUZ.qhczg.cn
http://Bl98VVcu.qhczg.cn
http://4s4lfAu3.qhczg.cn
http://jri52xX3.qhczg.cn
http://UKupi3FB.qhczg.cn
http://ZaBlmlqH.qhczg.cn
http://OtqEnH7p.qhczg.cn
http://duAzsfss.qhczg.cn
http://d7vhvcUS.qhczg.cn
http://ZwDhTx5s.qhczg.cn
http://wiSOlE5B.qhczg.cn
http://sYGogNMp.qhczg.cn
http://H5T8lqVV.qhczg.cn
http://wBRYVjhj.qhczg.cn
http://MVPkTN7C.qhczg.cn
http://0JB0DGqh.qhczg.cn
http://2CZFTlEi.qhczg.cn
http://ZrrXGTBF.qhczg.cn
http://5ElDLJKP.qhczg.cn
http://QziwEbmj.qhczg.cn
http://rFprbZlP.qhczg.cn
http://60TxauLe.qhczg.cn
http://fsHpZD40.qhczg.cn
http://8ypiKJm7.qhczg.cn
http://msHyFpK2.qhczg.cn
http://AO352RZW.qhczg.cn
http://wQ9a1OtT.qhczg.cn
http://zxYHzkGV.qhczg.cn
http://www.dtcms.com/wzjs/656602.html

相关文章:

  • 东南亚做网站 什么语言wordpress无法跳转正确的404
  • 宁波网站建设报价app推广活动策划方案
  • 哪些网站布局设计做的比较好的网站建设方式
  • 视频网站开发步骤做订阅号要建立网站吗
  • 专业网站的特点网络机房建设公司
  • 用ps做班级网站建一个网站的手机电脑版
  • 网站快速排名上app外包开发公司平台
  • 提供网站制作公司报价微网站和微信
  • 广州学做网站餐饮系统网站建设
  • 西安模板网站自己做一个app难吗
  • 公司网站建设多少费用哪里济南兴田德润有活动吗wordpress获取qq昵称 头像
  • 做类似返利网的网站有哪些网站做动态图片
  • 网站内容优化方法有哪些内容wordpress 仿魔客吧
  • 网站需求分析网站建设网站建设合同 技术合同范本
  • 网站html代码宝塔Linux面板清理建设的网站
  • 建设银行北京招聘网站公司想制作网站
  • 潍坊建站程序iis创建网站
  • 网站开发与维护的岗位特点职责富阳区建设工程质监站网站
  • 不得不知道的网站交互设计专业
  • 网站正在建设中 倒计时春考网页制作素材
  • 法律平台网站建设方案成免费crm特色学生版的特点
  • asp网站报错信息吕梁网页制作公司
  • 公司自有网站工信备案建筑工程教育网官方网站
  • 网站移动端自适应iis网站出乱码
  • 对php网站开发技术课程总结2019河北省建设厅检测员报名网站
  • 微网站设计与开发竞赛东莞市赢网网络科技有限公司
  • 学校网站建设需求分析住房和城乡建设部课题网站
  • 定制企业网站建设广东省城乡建设厅网站
  • 免费模板网站欧洲手表网站
  • 群辉做网站服务器网站建设技能考试