Capabilities机制是在Linux内核2.2之后引入的,原理很简单,就是将之前与超级用户root(UID=0)关联的特权细分为不同的功能组,Capabilites作为线程(Linux并不真正区分进程和线程)的属性存在,每个功能组都可以独立启用和禁用。其本质上就是将内核调用分门别类,具有相似功能的内核调用被分到同一组中。
setuid()用来重新设置执行目前进程的用户识别码. 不过, 要让此函数有作用, 其有效的用户识别码必须为0(root). 在Linux 下, 当root 使用setuid()来变换成其他用户识别码时, root 权限会被抛弃, 完全转换成该用户身份, 也就是说, 该进程往后将不再具有可setuid()的权利, 如果只是向暂时抛弃root 权限, 稍后想重新取回权限, 则必须使用seteuid().
这个挑战有点复杂,既是实际挑战,又是关于在Linux上安装和配置的两因素身份验证是否可以阻止Linux服务器被利用的“概念证明”。
在Linux中,一切皆文件。文件系统是操作系统的重要组成部分,它负责管理和组织存储在磁盘上的文件和目录。Linux使用类Unix的文件系统结构,根目录为“/”。
在写《[apue] 进程控制那些事儿》/"进程创建"/"更改进程用户 ID 和组 ID"一节时,发现 setreuid 更新实际用户 ID (RUID) 或有效用户 ID (EUID) 时,保存的设置用户 ID (saved set-user-id SUID) 只会随 EUID 变更,并不像 man 上说的会随 RUID 变更 (man setreuid):
我猜,你读这篇文章,说明你已经对Linux安全模块(LSM)有所了解。如果你使用过SELinux或AppArmor,其实就已经用过LSM了。甚至,在你使用的Linux发行版本或Android系统之上,也使用了LSM。
版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
原创文章,转载请务必将下面这段话置于文章开头处。 本文转发自:字母哥博客,原文链接 http://www.zimug.com/463.html
Unix machines depend on accurate timekeeping. The kernel maintains the system clock, which is the clock that is consulted when you run commands like date. You can also set the system clock using the date command, but it’s usually a bad idea to do so because you’ll never get the time exactly right. Your system clock should be as close to the correct time as possible.
d在我们攻防当中,常常会碰到linux机器,拿到之后为了避免发现 低权限升高权限 创建一个c文件 #include <stdio.h> int main() { setuid(0); system("/bin/bash"); return 0; } #include <stdio.h> int main(int argc,char* argv[]) { setuid(0); system(argv[1]); return 0; } 在高权限用户下编译,并赋予
本文出自:[url]http://www.nsfocus.com[/url] 维护:小四 6. /etc/system可调资源限制 6.1 Solaris下如何限制每个用户可拥有的最大进程数 6.2 如何配置系统使之支持更多的伪终端 6.3 如何增加每个进程可打开文件句柄数 6.4 6.5 做了setuid()这类调用的程序如何产生core dump 6.6 消息队列调整 -------------------------------------------------------------------------- 6. /etc/system可调资源限制 6.1 Solaris下如何限制每个用户可拥有的最大进程数 A: Casper Dik 在/etc/system设置 set maxuprc = Q: maxusers参数究竟影响了什么 A: Casper Dik 下面以/etc/system语法格式举例说明: * set maxusers = <以MB为单位计的可用物理内存数量> * 系统所允许的最大进程数,通常最多30000 set max_nprocs = 10 + 16 * maxusers * 每个用户可以拥有的最大进程数(为超级用户保留5个) set maxuprc = max_nprocs - 5; # sysdef | sed -n '/System Configuration/,$p' 6.2 如何配置系统使之支持更多的伪终端 A: Argoth 不要试图通过'/usr/bin/adb -k'到达目的。 a. 如果Solaris版本小于7,修改/etc/system,增加如下行 set pt_cnt= 执行/usr/sbin/reboot -- -r,或者Stop-A,执行boot -r b. 对于Solaris 8,支持的伪终端数目根据需要动态改变,系统依然有一个内部限制, 但是这个值非常大。如果"pt_cnt"变量小于这个内部限制,将被忽略。一般情况 下,不再需要指定"pt_cnt"变量。但还是有某些罕见的情形,需要设置"pt_cnt" 变量大于内部限制。 6.3 如何增加每个进程可打开文件句柄数 A: Casper Dik 从Solaris 2.4开始,可以通过修改/etc/system实现 * set hard limit on file descriptors set rlim_fd_max = 4096 * set soft limit on file descriptors set rlim_fd_cur = 1024 软限制超过256时,某些应用程序会出问题,尤其BCP程序。软限制超过1024时,那些 使用select()的应用程序可能会出问题。Solaris 7之前,select()使用的文件句柄 数不能超过1024。Solaris 2.6的RPC代码被重写过了,使用poll()代替select(),可 以使用超过1024的文件句柄。Solaris 2.6之前,如果软限制超过1024,所有RPC服务 很可能崩溃。 Solaris 7下select()可以使用最多达65536的文件句柄,64-bit应用程序缺省情况如 此。如果是32-bit应用程序,需要指定给FD_SETSIZE一个更大的值,重新编译。 如果程序使用标准输入/输出(stdio),或者调用那些使用stdio的库函数,当打开的 文件超过256时,程序可能会出问题,这个限制是stdio的限制。当程序需要大量文件 句柄时,应该想办法保留一些小数字的文件句柄,让stdio使用它们。 Solaris 7下64-bit应用程序不再受这个stdio限制的影响。如果你的确需要超过256 个FILE *,而又不能使用Solaris 7,或者需要运行32-bit代码,考虑使用来自AT&T 的SFIO([url]http://www.research.att.com/sw/tools/sfio/[/url])。 A: [email]qaz@smth.org[/email] 检查当前设置 # ulimit -H -n 1024 # ulimit -S -n 64 # 对于Solaris,建议修改/etc/system后重启 * set hard limit on file descriptors set rlim_fd_max=0x8000 * set soft limit on file descriptors set rlim_fd_cur=0x8000 然后 ulimit -S -n 8192 对于Linux echo 65536 > /proc/sys/fs/file-max 然后 ulimit -S -n 8192 对于FreeBSD 编辑/etc
suid即set user id,是一种授予文件的权限类型,它允许用户使用者以文件所有者的权限来执行文件。需要这种特殊权限的场景在Linux下很常见。 已知的可以用来提权的Linux可执行文件有: CopyNmap、Vim、find、Bash、More、Less、Nano、cp 比如常用的ping命令。ping需要发送ICMP报文,而这个操作需要发送Raw Socket。在Linux 2.2引入CAPABILITIES前,使用Raw Socket是需要root权限的(当然不是说引入CAPABILITIES就不需要权限了,而是可以通过其他方法解决,这个后说),所以你如果在一些老的系统里ls -al $(which ping),可以发现其权限是-rwsr-xr-x,其中有个s位,这就是suid:
众所周知,在 Linux 系统下,只允许 Root 用户运行的程序才可以使用特权端口 ( 1024 以下的端口 )。如果在普通用户下使用特权端口将会报错。
在SUN Cluster搭建过程中,主机工程师在配置集群资源组时报一个oracle的文件权限错误; 协助排查,发现报错很明确,直接指出说oracle的s bit 权限未设置。 直接去查看$ORACLE_HOME/bin/oracle的权限
文章讲述了 1Password 团队使用 Rust 开发 1Password 的心路历程及幕后花絮。
经过对大量客户的配置审计与渗透测试,我们总结出了一些Linux系统下的常见配置错误。我们相信总结、回顾这些常见错误可以在以后为我们节省更多时间与资源,更重要的是可以帮助系统管理员,使其服务器更加安全可靠。 五个常见配置错误如下: 1、用户/home目录的权限 2、系统中的getgid与setuid程序 3、全局可读/可写的文件/目录 4、使用包含漏洞的服务 5、默认的NFS挂载选项或不安全的导出选项 1、用户的/home目录权限 在大部分Linux发行版中,/home目录的默认权限是75
Linux的权限不是很细致,只有RWX三种 r(Read,读取):对文件而言,具有读取文件内容的权限;对目录来说,具有 浏览 目录的权限。 w(Write,写入):对文件而言,具有新增,修改,删除文件内容的权限;对目录来说,具有新建,删除,修改,移动目录内文件的权限。 x(eXecute,执行):对文件而言,具有执行文件的权限;对目录了来说该用户具有 进入 目录的权限。 1、目录的只读访问不允许使用cd进入目录,必须要有执行的权限才能进入。 2、只有执行权限只能进入目录,不能看到目录下的内容,要想看到目录下的文件名和目录名,需要可读权限。 3、一个文件能不能被删除,主要看该文件所在的目录对用户是否具有写权限,如果目录对用户没有写权限,则该目录下的所有文件都不能被删除,文件所有者除外
前几天我在代码审计知识星球里发表了一个介绍nmap利用interactive模式提权的帖子:
说到 linux 上的文件权限,其实我们在说两个实体,一是文件,二是进程。一个进程能不能访问一个文件,其实由三部分内容决定:
-多年互联网运维工作经验,曾负责过大规模集群架构自动化运维管理工作。 -擅长Web集群架构与自动化运维,曾负责国内某大型金融公司运维工作。 -devops项目经理兼DBA。 -开发过一套自动化运维平台(功能如下): 1)整合了各个公有云API,自主创建云主机。 2)ELK自动化收集日志功能。 3)Saltstack自动化运维统一配置管理工具。 4)Git、Jenkins自动化代码上线及自动化测试平台。 5)堡垒机,连接Linux、Windows平台及日志审计。 6)SQL执行及审批流程。 7)慢查询日志分析web界面。
一.Ganglia概述 Ganglia是UC Berkeley发起的一个开源集群监视项目,设计用于测量数以千计的节点。Ganglia的核心包含gmond、gmetad以及一个Web前端。主要是用来监控系统性能,如:cpu 、mem、硬盘利用率, I/O负载、网络流量情况等,通过曲线很容易见到每个节点的工作状态,对合理调整、分配系统资源,提高系统整体性能起到重要作用。(来自百度百科) 二.前期工作EPEL的安装 EPEL(Extra Packages for Enterprise Linux),这是针对RHEL设计的软件仓库,在这个仓库中有很多免费的常用软件,由Fedora项目维护,如果使用的是RHEL,CentOS,Scientific等RHEL系列的linux,可以非常方便的使用EPEL的yum源。 查看本机是否安装了EPEL: rpm -q epel-release package epel-release is not installed 如果没有安装,可以选择下面的情况来安装: 32位系统选择: rpm -ivh http://download.fedora.RedHat.com/pub/epel/6/i386/epel-release-6-8.noarch.rpm 64位系统选择: rpm -ivh http://download.fedora.redhat.com/pub/epel/6/x86_64/epel-release-6-8.noarch.rpm 导入key: rpm --import /etc/pki/rpm-gpg/RPM-GPG-KEY-EPEL-6 安装后可以查看,得到: rpm -q epel-release epel-release-6-8.noarch 三.ganglia的安装 目前集群有三个节点:hdp1,hdp2,hdp3,其中hdp1为主节点 1.服务端安装 在服务器中需要安装 yum -y install ganglia 2.客户端安装 在客户端中需要安装 yum -y install ganglia-gmond 四.ganglia的配置 1.服务端配置 在/etc/ganglia/gmetad.conf中进行下面的配置 data_source "ShaQi" hdp1 hdp2 hdp3 setuid_username "apache" (可以不设置) 2.客户端配置 在/etc/ganglia/gmond.conf中进行下面的配置 cluster { name = "ShaQi" owner = "apache" latlong = "unspecified" url = "unspecified" } 其中name需要与gmetad.conf中data_source中的“ShaQi”匹配 owner需要与setuid_username中的值对应(如果没有设置,可以不用修改) 修改了setuid_username后需要对权限进行更改: Chown -R apache:apache /var/lib/ganglia/rrds 否则使用service gmetad status时出现gmetad dead but subsys locked 3.Apache的服务端配置 /etc/httpd/conf.d/ganglia.conf 代码如下: Alias /ganglia /usr/share/ganglia <Location /ganglia> Order deny,allow Allow from all </Location> 五.ganglia的启动 启动服务端gmetad并且设为开机启动 service gmetad start chkconfig gmetad on 通过telnet localhost 8651进行测试 启动客户端的gmond并设为开机启动 service gmond start chkconfig gmond on 通过telnet localhost 8649进行测试 启动apache服务端 service httpd restart 六.ganglia的测试 通过浏览器访问:http://service_ip/ganglia加载下面界面
通常来说,Linux运行一个程序,是使用当前运行这个程序的用户权限,这当然是合理的。但是有一些程序比较特殊,比如我们常用的ping命令。
对于linux中文件或目录的权限,应该都知道普通的rwx权限。Linux的权限不是很细致,只有RWX三种
在介绍进程的创建、启动与终止之前,首先了解一下进程的唯一标识——进程 ID,它是一个非负整数,在系统范围内唯一,不过这种唯一是相对的,当一个进程消亡后,它的 ID 可能被重用。不过大多数 Unix 系统实现延迟重用算法,防止将新进程误认为是使用同一 ID 的某个已终止的进程,下面这个例子展示了这一点:
对于linux中文件或目录的权限,应该都知道普通的rwx权限(关于linux中rwx权限的看我的这篇博文http://www.cnblogs.com/javaee6/p/3994750.html)。我们先看看下面两个的权限是什么
英国国家网络安全中心(NCSC)近日宣布加大力度,推动企业开展网络事件响应演习。为了确保参与演习的供应商具备可靠的技术和能力,NCSC制定了一项新计划,旨在认证有保证的提供商。据悉,该机构已与长期合作伙伴CREST和IASME达成合作,共同评估组织是否适合成为新网络事件演习(CIE)计划中的有保证服务提供商。这一举措将有助于提高英国企业在应对网络安全事件方面的能力,确保关键信息基础设施的安全。
Linux是一种安全操作系统,它给普通用户尽可能低的权限,而把全部的系统权限赋予一个单一的帐户–root。root帐户用来管理系统、安装软件、管理帐户、运行某些服务、安装/卸载文件系统、管理用户、安装软件等。另外,普通用户的很多操作也需要root权限,这通过setuid实现。
Google Chrome早就支持了headless模式,但一般都是在Linux上运行,而我则习惯于在WSL上开发,折腾了好久终于找到了可以在WSL上跑headless模式的方法。
默认权限需要换算成字母再相减,所有建立文件之后的默认权限,为666减去umask的值
系统调用是应用程序和操作系统内核之间的功能接口。其主要目的是使得用户可以使用操作系统提供的有关设备管理、输入/输入系统、文件系统和进程控制、通信以及存储管理等方面的功能,而不必了解系统程序的内部结构和有关硬件细节,从而起到减轻用户负担和保护系统以及提高资源利用率的作用。 Linux操作系统作为自由软件的代表,它优良的性能使得它的应用日益广泛,不仅得到专业人士的肯定,而且商业化的应用也是如火如荼。在Linux中,大 部分的系统调用包含在Linux的libc库中,通过标准的C函数调用方法可以调用这些系统
可见在权限位置有一个s权限。那么这个s的作用是什么呢? 答案是当其他用户执行该文件时,该文件会以root的身份执行。 这里就涉及到了Effective UID和Real UID以及Saved UID Effective UID: 程序实际操作时生效的UID Real UID: 执行该程序的用户的实际UID Saved UID: 在高权限用户降权后,保留的其原本UID (不展开说)
在Linux系统中,有3种特殊权限,它们分别是Setuid(SUID)、Setgid(SGID) 和 Sticky Bit。
LooneyPwner是一款针对Linux “Looney Tunables”漏洞的安全测试工具,该漏洞CVE编号为CVE-2023-4911,可以帮助广大研究人员针对各种Linux发行版中的“Looney Tunables”glibc漏洞执行安全检测,以判断目标Linux系统的安全态势。
上篇文章介绍了 Linux capabilities 的诞生背景和基本原理,本文将会通过具体的示例来展示如何查看和设置文件的 capabilities。
User namespace 是 Linux 3.8 新增的一种 namespace,用于隔离安全相关的资源,包括 user IDs and group IDs,keys, 和 capabilities。同样一个用户的 user ID 和 group ID 在不同的 user namespace 中可以不一样(与 PID nanespace 类似)。换句话说,一个用户可以在一个 user namespace 中是普通用户,但在另一个 user namespace 中是超级用户。
Linux 系统中 文件权限对应的数字: r = 4; w = 2; x = 1;
ASLR,应为全称为Address Space Layout Randomization,即地址空间布局随机化。它是一种概率性安全防御机制,由PaX团队于2001年正式提出,并在2005年开始引入到Linux内核之中。ASLR能够在每次运行可执行文件的时候通过基地址随机映射的方式来为其随机分配地址空间。ASLR存在的目的,就是为了防止那些需要了解内存地址来利用内存崩溃漏洞的攻击行为。
Ubuntu是一种基于Linux操作系统的自由软件,它以用户友好的界面和易用性而著称。
Linux与Unix是多用户操作系统,所以文件的权限与所有权的实现就显得很有必要;每个文件主要与三组权限打交道,分别是用户(user),用户组(group),其他用户(other)
描述:相信各位看友都看了UP主上一篇《Linux运维学习之文件目录属性及权限管理笔记》了吧,此篇将针对文件目录特殊权限等相关命令进行详细讲解,包括文件基本权限与特殊权限。
贴一个试验代码, 子进程直接获取锁, 若获取不到则输出错误; 父进程睡3秒后退出.
运行在单核下, 单操作系统上运行多个虚拟服务;服务提供者可以利用较低的代价提供主机服务。
没有想不到只有做不到,其实还有更狠的,只是永远无法抓现场,因为系统已经崩溃了。。别问我为啥知道...
声明:请勿利用文章内的相关技术从事非法测试,如因此产生的一切不良后果与文章作者及本公众号无关!
Google推出了无图形界面的headless Chrome之后,可以直接在远程服务器上直接跑一些测试脚本或者爬虫脚本了,猴开心!Google还附送了Puppeteer用于驱动没头的Chome。
2022年1月25号,国外安全研究团队披露了Polkit中的pkecex组件存在的本地权限提升漏洞,漏洞编号为:CVE-2021-4034。 Polkit默认安装在各个主要的Linux发行版本上,pkexec 应用程序是一个 setuid 工具,可在允许非特权用户根据预定义的策略以特权用户身份运行命令。
4 最小权限原则 最小权限原则(最早由 Saltzer 和 Schroeder 提出): 每个程序和系统用户都应该具有完成任务所必需的最小权限集合。 限制代码运行所需的安全权限,有一个非常重要的原因,就是降低你的代码在被恶意用户利用时,造成的损失。如果你的代码仅仅使用最小权限来执行,恶意用户就难以使用它造成损失。如果你需要用户使用管理员权限来执行代码,任何代码中的安全缺陷,都会通过利用该缺陷的恶意用户,潜在造成更大的损失。 编写特权程序时的问题: 程序需要该权限吗? 如果程序不需要任何特殊权限来
Linux/Unix 的文件调用权限分为三级 : 文件所有者(Owner)、用户组(Group)、其它用户(Other Users)。
这边文章不是一个如何引导,尽管它确实展示了如何编译和调试共享库和可执行文件。为了解动态加载的内部工作方式进行了优化。写这篇文章是为了消除我在该主题上的知识欠缺,以便成为一名更好的程序员。我希望它也能帮助您变得更好。
领取专属 10元无门槛券
手把手带您无忧上云