三种特殊权限简介

SUID

当一个设置了SUID 位的可执行文件被执行时,该文件将以所有者的身份运行,也就是说无论谁来执行这个文件,他都有文件所有者的特权。

如果所有者是 root 的话,那么执行人就有超级用户的特权了。

SGID

当一个设置了SGID 位的可执行文件运行时,该文件将具有所属组的特权, 任意存取整个组所能使用的系统资源。

若一个目录设置了SGID,则所有被复制到这个目录下的文件, 其所属的组都会被重设为和这个目录一样,除非在复制文件时加上-p (preserve,保留文件属性)的参数,才能保留原来所属的群组设置。

sticky-bit

对一个文件设置了sticky-bit之后,尽管其他用户有写权限, 也必须由属主执行删除、移动等操作。

对一个目录设置了sticky-bit之后,存放在该目录的文件仅准许其属主执行删除、 移动等操作。

特殊权限的数值表示

三种特殊权限可以用单独的一位8进制数值表示

SUID、SGID和sticky-bit的数值表示

SUID SGID sticky 二进制 八进制 说明

- - - 000 0 不设置特殊权限

- - t 001 1 只设置sticky

- s - 010 2 只设置SGID

- s t 011 3 只设置SGID和sticky

s - - 100 4 只设置SUID

s - t 101 5 只设置SUID和sticky

s s - 110 6 只设置SUID和SGID

s s t 111 7 设置三种特殊权限

我们知道了文件的权限可以用三个八进制数字表示。其实文件的权限应该用四个八进制来表示,不过用 ls -l 命令时,只显示三个罢了。那个没有显示的八进制数字其实是第一个,它用来设定一些特殊权限。这个八进制数字的三个位是:

SUID SGID sticky-bit

它们的含义是:

SUID

当设置了SUID 位的文件被执行时,该文件将以所有者的身份运行,也就是说无论谁来执行这个文件,他都有文件所有者的特权。如果所有者是 root 的话,那么执行人就有超级用户的特权了。这时该位将变成一个安全漏洞,因此不要轻易设置该位。

SGID

与上面的内容类似。文件运行时,运行者将具有所属组的特权。

sticky-bit

sticky 位要求操作系统既是在可执行程序退出后,仍要在内存中保留该程序的映象。这样做是为了节省大型程序的启动时间。但是会占用系统资源。因此设置该位,不如把程序写好。

set uid ;set gid;sticky bit区别

每一个文件有所有者及组编号,set uid ;set gid可以改变用户对文件具有的权限:写和执行.

setuid: 在执行时具有文件所有者的权限.

setgid: 设置目录. 一个目录被标上setgid位,此目录下创建的文件继承该目录的属性.

sticky bit: 该位可以理解为防删除位. 设置sticky bit位后,就算用户对目录具有写权限,但也只能添加文件而不能删除文件。

如何设置:

操作这些标志与操作文件权限的命令是一样的, 都是 chmod. 有两种方法来操作,

1) chmod u+s temp -- 为temp文件加上setuid标志. (setuid 只对文件有效,U=用户)

chmod g+s tempdir -- 为tempdir目录加上setgid标志 (setgid 只对目录有效,g=组名)

chmod o+t temp -- 为temp文件加上sticky标志 (sticky只对文件有效)

2) 采用八进制方式. 这一组八进制数字三位的意义如下,

abc

a - setuid位, 如果该位为1, 则表示设置setuid

b - setgid位, 如果该位为1, 则表示设置setgid

c - sticky位, 如果该位为1, 则表示设置sticky

设置后, 可以用 ls -l 来查看. 如果本来在该位上有x, 则这些特殊标志显示为小写字母 (s, s, t). 否则, 显示为大写字母 (S, S, T)

如:

rwsrw-r-- 表示有setuid标志 (rwxrw-r--:rwsrw-r--)

rwxrwsrw- 表示有setgid标志 (rwxrwxrw-:rwxrwsrw-)

rwxrw-rwt 表示有sticky标志 (rwxrw-rwx:rwxrw-rwt)

理解文件权限

所谓的文件权限,是指对文件的访问权限,包括对文件的读、写、删除、执行。Linux 是一个多用户操作系统,它允许多个用户同时登录和工作。因此 Linux 将一个文件或目录与一个用户和组联系起来。请看下面的例子:

drwxr-xr-x 5 root root 1024 Sep 13 03:27 Desktop

与文件权限相关联的是第一、第三、第四个域。第三个域是文件的所有者,第四个域是文件的所属组,而第一个域则限制了文件的访问权限。在这个例子中,文件的所有者是 root,所属的组是 root,文件的访问权限是 drwxr-xr-x。对于文件和目录讲,每个文件和目录都有一组权限标志和它们结合在一起,在上例中就是第一个域中的内容。下面来仔细分析这个域中各个符号的意义:

该域由 10 个字符组成,可以把它们分为四组,具体含义分别是:

d rwx r-x r-x

文件类型 所有者权限标志 组权限标志 其他用户权限标志

其中:

文件类型:第一个字符。由于 Linux 系统对与设备、目录、文件都当作是文件来处理,因此该字符表明此文件的类型,字符与对应的意义如下表: 文件标志

文件类型

例子

-

普通文件

数据文件、

ASCII 纯文本文件、程序

d

目录

/bin

b

块设备

/dev/hda(第一个 IDE 硬盘)

c

字符设备

/dev/ttyS1(与 DOS 种的串口 2 等同)

s

套接字

/dev/log

p

命名管道

/dev/initctl(与“|”等同)

l

符号链接

/dev/modem->/dev/ttyS1

权限标志:

对每个文件或目录都有 4 类不同的用户。每类用户各有一组读、写和执行(搜索)文件的访问权限,这 4 类用户是:

root:系统特权用户类,既 UID = 0 的用户。

owner:拥有文件的用户。

group:共享文件的组访问权限的用户类的用户组名称。

world:不属于上面 3 类的所有其他用户。

作为 root,他们自动拥有了所有文件和目录的全面的读、写和搜索的权限,所以没有必要明确指定他们的权限。其他三类用户则可以在耽搁文件或者目录的基础上别授权或撤消权限。因此对另外三类用户,一共 9 个权限位与之对应,分为 3 组,每组 3 个,分别用 r、w、x 来表示,分别对应 owner、group、world。

权限位对于文件和目录的含义有些许不同。每组 3 个字符对应的含义从左至右的顺序,对于文件来说是:读文件的内容(r)、写数据到文件(w)、做为命令执行该文件(x)。对于目录来说是:读包含在目录中的文件名称(r)、写信息到目录中去(增加和删除索引点的连接)、搜索目录(能用该目录名称作为路径名去访问它所包含的文件或子目录)。具体来说就是:

1. 有只读权限的用户不能用 cd 进入该目录;还必须有执行权限才能进入。

2. 有执行权限的用户只有在知道文件名并拥有该文件的读权限的情况下才可以访问目录下的文件。

3. 必须有读和执行权限才可以使用 ls 列出目录清单,或使用 cd 进入目录。

4. 如用户有目录的写权限,则可以创建、删除或修改目录下的任何文件或子目录,既是该文件或子目录属于其他用户。

修改文件权限

首先讲修改文件的所有权,使用 chown 和 chgrp 命令:

chown new_user file or directory:修改文件或目录的所有者。

chgrp new_group file or directory:修改文件或目录的所属组。

这里需要注意的是:普通用户不能将文件或目录的所有权交与他人,只有 root 有这一权限。但是普通用户有权改变文件或目录的所属组。

由于每类用户的权限都是由 rwx 三位组成,因此可以用三个八进制数字表示文件的访问权。一个八进制数字可以用三个二进制数字表示,那么与其对应,权值为 4 的位对应 r,权值为 2 的位对应 w,权值为 1 的位对应 x。对于一类用户,将这三位与其对应的权值相乘求和,就可以得出对该类用户的访问权限。

改变文件访问权限的命令是 chmod,格式是:

chmod permission file_name

比如 chmod 764 a.txt,它表示对于文件的所有者,具有对该文件读、写、执行的权限。对于文件所属组的用户,拥有读、写的权限。对于其他用户,只有读权限。

这里需要注意的是:文件的创建者是唯一可以修改该文件访问权限的普通用户,另外一个可以修改文件访问权限的用户是 root。

还有一种表示方法,就是用字符串来设定文件访问权限。其中读用 r 表示,写用 w 表示,执行用 x 表示;所有者用 u 表示,组用户用 g 表示,其他用户用 o 表示,所有用户用 a 表示。

我们平时安装 gi时,看到的oracle命令,就是带了s的:

[oracle@rac1 test]$ ls -ltr /u01/app/grid/product/11.2.0/grid/bin/oracle

-rwsrwsr-x 1 grid dba 209854149 Jun 1 20:17 /u01/app/grid/product/11.2.0/grid/bin/oracle

更多数据库和linux技术内容欢迎搜索“重庆思庄”

oracle 授权 增删改查权限_linux suid,sgid,sticky-bit三种特殊权限简介相关推荐

  1. oracle 授权 增删改查权限_Oracle增删改查与函数

    SQL -- 结构化查询语言 关系型数据库 分类: DDL DML DCL DQL TCL Oracle 的数据类型: 字符 char() varchar2() 数字 number(p,s) 时间 d ...

  2. jdbc链接mysql按照id查询_使用jdbc连接并操作Oracle数据库(增删改查IDUS)

    使用jdbc连接并操作Oracle数据库(增删改查IDUS) [oracle@zaibei-db ~]$ sqlplus /nolog SQL*Plus: Release 11.2.0.4.0 Pro ...

  3. UltraGrid本地Oracle数据库增删改查

    UltraGrid本地Oracle数据库增删改查 {public partial class Form1 : Form{public Form1(){InitializeComponent();DoQ ...

  4. Java Web 应用实例 servlet实现oracle 基本增删改查

    原文地址为: Java Web 应用实例 servlet实现oracle 基本增删改查 很久没有写博客了,可能是太懒散,不愿意把时间花在这上面,可是我心里还是知道写博客的重要性的 ,所以从今天开始 , ...

  5. c# 操作oracle数据库,C#连接oracle数据库增删改查实例

    [实例简介] C#连接oracle数据库,增删改查实例,OracleParameter防Sql注入等,适用于新手学习 [实例截图] [核心代码] 5868e8be-414a-4138-8390-2fb ...

  6. Oracle数据增删改查基本命令

    1.数据导入 导入一个示例表LVYOU,执行数据库增删改查等命令以及语法讲解.首先连接MyDataBase,鼠标右键点击表,选择导入数据,然后浏览本地文件,选择文件格式,是否保留标题,以及预览显示行数 ...

  7. laravel mysql增删改查_Laravel框架数据库操作的增删改三种方式 阿星小栈

    Laravel提供了3种操作数据库方式:DB facade(原始方式).查询构造器和Eloquent ORM. 数据库的配置文件在config目录下的database.php里.打开这个文件,找到my ...

  8. Oracle存储过程-增删改查与调用

    存储过程: 存储过程是 SQL, PL/SQL, Java 语句的组合, 它使你能将执行商业规则的代码从你的应用程序中移动到数据库.这样的结果就是,代码存储一次但是能够被多个程序使用.是存放在数据库服 ...

  9. java 连接oracle 进行增删改查

    1.在DAO层新增类OraclePersionDao package com.test.dao;import java.sql.*;/*** Created by wdw on 2017/9/16.* ...

最新文章

  1. 部署Small Business Server 2003服务器之四
  2. ElasticSearch 面试 4 连炮,你顶得住么?
  3. 属于哪种虚拟化类型_经络淤堵,疲乏无力?有3种疲劳类型,你属于哪种,快来自测一下...
  4. 树莓派 系统的 启动与安装
  5. Codeforces Round #355 (Div. 2) D. Vanya and Treasure dp+分块
  6. 载波聚合或双连接的方式进行_智能电表常用远程抄表方式,您想知道吗?--老兵聊电之...
  7. 冰雪复古鸿蒙碎片哪里出,冰雪复古:玩法攻略,如何高爆率搞回收!
  8. 高效分页的SQL技巧(以Oracle为例)
  9. 好程序员分享24个canvas基础知识小结 1
  10. 614 Second Degree Follower
  11. 苹果手机投屏电脑win7
  12. 跌破150美元、市值蒸发3600亿美元,这个圣诞节苹果过得“太冷了”!...
  13. android平板电脑 微信,安卓微信重大更新,手机和平板可同时登录
  14. 微信小程序个性头像、国庆头像、新年头像、圣诞头像等合成
  15. Spring Cloud Alibaba与Spring Cloud的区别
  16. flash源文件小,导出后变大的问题
  17. 论微信抢红包与谁手气最佳的关系(微信红包matlab实现)
  18. (manacher)马拉车算法专题题目
  19. Open3D 区域生长分割:详解Python实现过程
  20. Redis 基础入门教程以及使用场景

热门文章

  1. 语音识别(ASR)评估指标-WER(字错误率)和SER(句错误率)
  2. LeetCode简单题之检查字符串是否为数组前缀
  3. 低代码技术与市场(Mendix与 OutSystems)
  4. TVM性能评估分析(六)
  5. ML Pipelines管道
  6. TensorFlow实现多层感知机MINIST分类
  7. TensorFlow解析常量、变量和占位符
  8. 低层级GPU虚拟内存管理引论
  9. 2021年大数据Flink(二十九):Flink 容错机制 Savepoint
  10. C++实现九九乘法表