linux基础之权限管理

1ACL权限

1.1.开启

mount -o remount,acl   #重新挂载根分区,并挂载加入ACL权限

永久开启分区ACL权限:
第一步:修改vim /etc/fstab在defaults后面加acl  #开机自动挂载文件
UUID=1a0b2bc7-847f-49d8-baa7-2903e818cf75 /boot     ext4    defaults,acl        1 2
第二步:重启挂载文件mount -o remount

1.2.查看与设定

查看ACL权限:getfacl [文件名]
设定权限:setfacl [-m-x-b-d-k-R] [文件名]
-m设定权限
-x删除指定的权限
-b删除所有的权限
-d设定默认权限
-k删除默认权限
-R 递归设定权限

例如: setfacl -m u:acltest:rx  /test1  #给用户acltest赋予rx权限  格式[u:用户名:权限]
设定前drwxrwx---. 2 root testgroup 6 Feb 24 03:28 test1
设定后drwxrwx---+ 2 root testgroup 6 Feb 24 03:28 test1

[root@MiWiFi-R3L-srv home]# getfacl test1
# file: test1
# owner: root
# group: testgroup
user::rwx
user:acltest:r-x
group::rwx
mask::rwx
other::---

扩展:给组设定ACL权限
setfacl -m g:testgroup2:rwx test2   #给组testgroup2赋予rwx权限  格式[g:组名:权限]

1.3最大有效权限与删除ACL权限

mask:是用来指定最大有效权限的。如果设定后仅可以无视ACL用户设置的最大权限
setfacl -m m:rx test2   #设定mask值为rx  格式[m:权限]

删除ACL用户权限: setfacl -x u:用户名 文件名
删除文件的所有ACL权限:  setfacl -b 文件名
删除ACL组权限: setfacl -x g:组名 文件名

1.4默认ACL权限与递归ACL权限

递归: setfacl -m u:用户名:权限 -R 文件名 #只给目前所有子目录设定权限,而新建目录没有权限
默认: setfacl -m d:u:用户名:权限 文件名  #父目录设定了ACL默认权限,以后父目录中所有新建的子目录都会继承父目录的ACL权限

2文件特殊权限

2.1.SetUID

root@MiWiFi-R3L-srv home]# ll -h /etc/shadow
----------. 1 root root 1.6K Feb 24 03:39 /etc/shadow
[root@MiWiFi-R3L-srv home]# ll -h /bin/passwd 
-rwsr-xr-x. 1 root root 35K May 11  2019 /bin/passwd
可以看到shadow文件不具有任何权限,而用户修改密码其实是修改shadow文件又是怎么操作呢,是因为passwd命令具有rwsr权限
,这个s就是SetUID权限,就是可以让普通用户临时化身为root权限,从而去执行任何操作

注意:SetUID的4个功能
只有可以执行的二进制程序才能设定该权限
命令执行者要对该程序拥有x权限,否则设定后权限位会以s变成S的方式来报错
命令执行者在执行程序时获得该程序文件属主的身份(root)
SetUID权限只在该程序执行过程中有效

设置: chmod 4755 文件名  4代表SUID
设置: chmod u+s 文件名   
取消: chmod 755 文件名
取消: chmod u-s 文件名

2.2SetGID

[root@MiWiFi-R3L-srv home]# ll /var/lib/mlocate/mlocate.db
-rw-r-----. 1 root slocate 3134543 Feb 24 05:21 /var/lib/mlocate/mlocate.db
[root@MiWiFi-R3L-srv home]# ll /usr/bin/locate 
-rwx--s--x. 1 root slocate 48552 May 11  2019 /usr/bin/locate
可以看到mlocate.db文件的组用户是没有执行权限的,组中的用户能通过locate命令查询的真正原因是因为locate命令
的组用户有s权限,这里的s就是SetGID权限,就是可以让组身份临时升级为该文件的属组(root组),那么属组的用户就可以执行了

注意:SetGID针对文件的作用
只有可执行的二进制程序菜能设置SetGID权限
命令执行着要对该程序拥有x权限
命令执行在执行程序的时候,组身份升级为该程序文件的属组
SetGID权限一样只有在该程序执行过程中有效
注意:SetGID针对目录的作用
普通用户必须对此目录具拥有rx权限
普通用户在此目录中的有效组会变成此目录的属组
若普通用户对此目录拥有w权限,新建的文件的默认属组是这个目录的属组

设置: chmod 2755 文件名  2代表GUID
设置: chmod g+s 文件名   
取消: chmod 755 文件名
取消: chmod g-s 文件名

2.3Sticky BIT(粘着位权限)

[root@MiWiFi-R3L-srv home]# ll -d /tmp/
drwxrwxrwt. 17 root root 4096 Feb 24 05:18 /tmp/
可以看到临时目录tmp的其他用户有t权限,意味着所有的用户都只能删除自己创建的文件而不能删除别人创建的文件

注意:只对目录有效
普通用户对该目录拥有wx权限
如果没有粘着位权限,因为普通用户拥有w权限,所有可以删除此目录下所有文件,一旦赋予了粘着位权限,除了root可以删除所有有文件
,普通用户就算拥有w权限,也只能删除自己建立的文件,但是不能删除其他用户创建的文件

设置: chmod 1755 目录名  1代表GUID
设置: chmod o+t 目录名   
取消: chmod 755 目录名
取消: chmod o-t 目录名

3文件系统属性chattr权限

语法:chattr [+-=] [-i-a] [文件或目录名]
+ 增加权限
- 删除权限
= 等于权限
-i 如果对文件设置,则不允许对文件进行删除/改名,添加和修改数据;如果对目录,则只能修改目录下文件的数据,但不允许建立和删除文件
-a 如果对文件设置,则只能在文件中增加数据,但是不能删除和修改数据;如果对目录设置,则只允许在目录中建立和修改文件,但是不允许删除

查看文件系统属性
lsattr [-a-d] 文件名
-a 显示所有文件和目录
-d 若目标是目录,仅列出目录本身的属性,而不是子文件的属性

4系统命令sudo权限

注意:1.root把本来只能超级用户执行的命令赋予普通用户执行
     2.sudo的操作对象是系统命令
使用:visudo  #实际是修改 vim /etc/sudoers
root    ALL=(ALL)                        ALL
用户名  被管理主机的地址=*(可使用的身份)    授权命令(绝对路径)
%wheel  ALL=(ALL)                        ALL
%组名   被管理主机的地址=*(可使用的身份)    授权命令(绝对路径)

例如:
sc      ALL=/sbin/shutdown   
#意思就是sc用户可以使用root身份在本机上重启服务器
sudo -l  #查看root赋予自己的权限
sc如何使用:    #sudo /sbin/shutdown 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
后台采用apache服务器下的cgi处理c语言做微信小程序后台逻辑的脚本映射。PC端的服务器和客户端都是基于c语言写的。采用mysql数据库进行用户数据和聊天记录的存储。.zip C语言是一种广泛使用的编程语言,它具有高效、灵活、可移植性强等特点,被广泛应用于操作系统、嵌入式系统、数据库、编译器等领域的开发。C语言的基本语法包括变量、数据类型、运算符、控制结构(如if语句、循环语句等)、函数、指针等。下面详细介绍C语言的基本概念和语法。 1. 变量和数据类型 在C语言中,变量用于存储数据,数据类型用于定义变量的类型和范围。C语言支持多种数据类型,包括基本数据类型(如int、float、char等)和复合数据类型(如结构体、联合等)。 2. 运算符 C语言中常用的运算符包括算术运算符(如+、、、/等)、关系运算符(如==、!=、、=、<、<=等)、逻辑运算符(如&&、||、!等)。此外,还有位运算符(如&、|、^等)和指针运算符(如、等)。 3. 控制结构 C语言中常用的控制结构包括if语句、循环语句(如for、while等)和switch语句。通过这些控制结构,可以实现程序的分支、循环和多路选择等功能。 4. 函数 函数是C语言中用于封装代码的单元,可以实现代码的复用和模块化。C语言中定义函数使用关键字“void”或返回值类型(如int、float等),并通过“{”和“}”括起来的代码块来实现函数的功能。 5. 指针 指针是C语言中用于存储变量地址的变量。通过指针,可以实现对内存的间接访问和修改。C语言中定义指针使用星号()符号,指向数组、字符串和结构体等数据结构时,还需要注意数组名和字符串常量的特殊性质。 6. 数组和字符串 数组是C语言中用于存储同类型数据的结构,可以通过索引访问和修改数组中的元素。字符串是C语言中用于存储文本数据的特殊类型,通常以字符串常量的形式出现,用双引号("...")括起来,末尾自动添加'\0'字符。 7. 结构体和联合 结构体和联合是C语言中用于存储不同类型数据的复合数据类型。结构体由多个成员组成,每个成员可以是不同的数据类型;联合由多个变量组成,它们共用同一块内存空间。通过结构体和联合,可以实现数据的封装和抽象。 8. 文件操作 C语言中通过文件操作函数(如fopen、fclose、fread、fwrite等)实现对文件的读写操作。文件操作函数通常返回文件指针,用于表示打开的文件。通过文件指针,可以进行文件的定位、读写等操作。 总之,C语言是一种功能强大、灵活高效的编程语言,广泛应用于各种领域。掌握C语言的基本语法和数据结构,可以为编程学习和实践打下坚实的基础
该资源内项目源码是个人的课程设计、毕业设计,代码都测试ok,都是运行成功后才上传资源,答辩评审平均分达到96分,放心下载使用! ## 项目备注 1、该资源内项目代码都经过测试运行成功,功能ok的情况下才上传的,请放心下载使用! 2、本项目适合计算机相关专业(如计科、人工智能、通信工程、自动化、电子信息等)的在校学生、老师或者企业员工下载学习,也适合小白学习进阶,当然也可作为毕设项目、课程设计、作业、项目初期立项演示等。 3、如果基础还行,也可在此代码基础上进行修改,以实现其他功能,也可用于毕设、课设、作业等。 下载后请首先打开README.md文件(如有),仅供学习参考, 切勿用于商业用途。 该资源内项目源码是个人的课程设计,代码都测试ok,都是运行成功后才上传资源,答辩评审平均分达到96分,放心下载使用! ## 项目备注 1、该资源内项目代码都经过测试运行成功,功能ok的情况下才上传的,请放心下载使用! 2、本项目适合计算机相关专业(如计科、人工智能、通信工程、自动化、电子信息等)的在校学生、老师或者企业员工下载学习,也适合小白学习进阶,当然也可作为毕设项目、课程设计、作业、项目初期立项演示等。 3、如果基础还行,也可在此代码基础上进行修改,以实现其他功能,也可用于毕设、课设、作业等。 下载后请首先打开README.md文件(如有),仅供学习参考, 切勿用于商业用途。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值