在使用Linux的过程中,经常会遇到各种用户ID(user identifier, UID)和组ID(group identifier, GID),Linux也是通过对这些ID的管理实现的自主访问控制(discretionary access control, DAC)。
在linux 2.2版本之前,当内核对进程进行权限验证的时候,可以将进程划分为两类:privileged(UID=0)和unprivilege(UID!=0)。其中privileged的进程拥有所有内核权限,而unprivileged则根据如可执行文件的权限(effective UID, effective GID,supplementary group等)进行判断。
Auditbeat Audited模块可以用来监控所有用户在系统上执行的 shell 命令。在终端用户偶尔才会登录的服务器上,通常需要进行监控。
在写《[apue] 进程控制那些事儿》/"进程创建"/"更改进程用户 ID 和组 ID"一节时,发现 setreuid 更新实际用户 ID (RUID) 或有效用户 ID (EUID) 时,保存的设置用户 ID (saved set-user-id SUID) 只会随 EUID 变更,并不像 man 上说的会随 RUID 变更 (man setreuid):
首先是下午14点左右有几台服务器出现流量超高,平时只有几百M的流量,那时候发现流量上G了,达到这个量第一感觉就是遭受了DDOS流量***,那时候手上的服务器比较多,出现几台并没
除了网络通信外,服务器程序还必须考虑许多其他细节问题,零碎,但基本上都是模板式的。
作者:且飙丶且珍惜 来源: http://blog.csdn.net/dextrad_ihacker/article/details/51930998 除了网络通信外,服务器程序还必须考虑许多其他细节问题,零碎,但基本上都是模板式的。 ———引 Linux服务器程序一般以后台形式运行。后台程序又称守护进程。它没有控制终端,因而也不会意外接受用户输入。守护进程的父进程一般是init进程(pid=1)。 Linux服务器程序通常有一套日志系统,它至少能输出日志到文件,有的高级服务器可以输出日志到专门的UDP
在介绍进程的创建、启动与终止之前,首先了解一下进程的唯一标识——进程 ID,它是一个非负整数,在系统范围内唯一,不过这种唯一是相对的,当一个进程消亡后,它的 ID 可能被重用。不过大多数 Unix 系统实现延迟重用算法,防止将新进程误认为是使用同一 ID 的某个已终止的进程,下面这个例子展示了这一点:
以下是对用户和组信息的举例。 /etc/shadow 中的口令信息为加密存储,不举例。
pkill 命令与 kill、killall 十分相似,都是用于杀死(结束)指定进程的命令。不过 kill 是杀掉单个进程,killall 是杀掉所有同名进程,pkill 是杀掉一类进程或某个用户的所有进程。
近日 sudo 被爆光一个漏洞,非授权的特权用户可以绕过限制获得特权。官方的修复公告请见:https://www.sudo.ws/alerts/minus_1_uid.html。
作者:Vamei 出处:http://www.cnblogs.com/vamei 欢迎转载,也请保留这段声明。谢谢! 我们在Linux的概念与体系,多次提及进程的重要性。Python的os包中有查询和修改进程信息的函数。学习Python的这些工具也有助于理解Linux体系。 进程信息 os包中相关函数如下: uname() 返回操作系统相关信息。类似于Linux上的uname命令。 umask() 设置该进程创建文件时的权限mask。类似于Linux上的umask命令,见Linux文件管理背景知识 get
下面开始这个Auditd新年版审计工具的介绍。安全防护是首先要考虑的问题。为了避免别人盗取我们的数据,我们需要时刻关注它。安全防护包括很多东西,审计是其中之一。
你可以使用ps命令。它能显示当前运行中进程的相关信息,包括进程的PID。Linux和UNIX都支持ps命令,显示所有运行中进程的相关信息。ps命令能提供一份当前进程的快照。如果你想状态可以自动刷新,可以使用top命令。
我安装完 RedHat Linux 5 之后,在终端使用一些命令,如: ifcinfig 查看本机的IP,发现不能使用此命令,提示说“command not found”,这该怎么办呢 想想肯定是环境变量没有加载,那就动手修改一下环境变量,修改如下:
Linux是一个多任务、多用户的操作系统,因此它允许多个进程同时运行而不相互干扰,进程是Linux操作系统的重要基本概念之一,进程是程序的执行实例,在操作系统中执行不同的任务。Linux为我们提供了一个名为ps的实用程序,用于查看与系统上的进程相关的信息,它是process status进程状态的缩写,ps命令用于列出当前正在运行的进程,它们的pid以及一些其他信息取决于不同的选项,它从/proc文件系统中的虚拟文件读取进程信息,/proc包含虚拟文件,这就是它被称为虚拟文件系统的原因,process status命令ps显示有关活动进程的信息,类似于windows的任务管理器,每个操作系统的ps版本都略有不同,因此若要是需要获取详细情况则需要查阅操作系统的wiki。
之前一直知道使用 Ctrl+Z 挂起前台进程来阻止进程运行,之后可以再通过 shell 的作业控制 (jobs / fg N) 来将后台进程切换为前台,从而继续运行。
每个用户均可同时运行多个程序。为了区分每一个运行的程序,Linux给每个进程都做了标识,称为进程号(process ID),每个进程的进程号是唯一的。
安全防护是首先要考虑的问题。为了避免别人盗取我们的数据,我们需要时刻关注它。安全防护包括很多东西,审计是其中之一。 我们知道Linux系统上有一个叫 auditd 的审计工具。这个工具在大多数Linu
ps是Linux系统中用于查看进程状况的命令,用于显示当前系统中进程的快照。ps会显示部分当前活动的进程信息,不同于top指令,top指令会实时的更新所显示的进程动态。
版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
由于你的公司标准规定,你可能只能允许部分人访问 Linux 系统。或者你可能只能够允许几个用户组中的用户访问 Linux 系统。那么如何实现这样的要求呢?最好的方法是什么呢?如何使用一个简单的方法去实现呢?
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:
本文出自:[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
这是一个独特的、付费的学习社区,专注于探索和理解开源项目中的 Rust 代码。在这里,你将有机会不仅学习 Rust 的基础知识,还能深入其核心概念和实际应用。我们的目标是通过实际的代码案例,让你在 Rust 编程领域迅速成长。你将有机会深入研究各种开源项目,分析它们的架构、设计模式和性能优化策略。
前几天我在代码审计知识星球里发表了一个介绍nmap利用interactive模式提权的帖子:
bash shell用一个叫做 环境变量(environment variable) 的特性来存储有关shell会话和工作环境的信息。即允许在内存中存储数据,使得在程序或shell中运行的脚本能够访问它们。
1、Linux服务器程序一般以后台进程形式运行,也就是以daemon守护进程的方式,守护进程的父进程通常是init进程(PID进程为1),作者在7.6 服务程序后台化给出了一个程序的清单,还是很有参考意义的。后台进程形式运行,也就是通过fork一个子进程,结束父进程的方式运行,这样避免很多前台启动,随着操作终端界面的关闭而结束服务器程序的运行;
pkill 命令与 kill、killall 十分相似,都是用于杀死(结束)指定进程的命令。不过 kill 是杀掉单个进程,killall 是杀掉所有同名进程,pkill 是杀掉一类进程或者某个用户的所有进程。
大概在十多年前,我当时还是一个产品经理。由于一些工作的原因,需要向运维工程师学习一些linux常用命令。当使用linux ps这个十分常用的命令时,遇到了一个小小的疑惑。有些工程师推荐使用ps aux的命令组合,有些工程师推荐使用ps -aux的命令组合,从输出结果上来看似乎也没有什么不同。考虑到如常用的ls -l命令在内,很多linux命令选项前都要加上一个短横线,这么来看似乎ps -axu是正确的。但是一些早期的linux版本,在执行ps -axu时又会报出如下错误Warning: bad syntax,而ps aux却没有这样的报错信息,这么看来似乎ps aux又是正确的。查阅市面上的一些linux书籍,在介绍linux ps命令示例时,有些说用ps aux,而有些又说用ps -axu。实在是让我这个初学者摸不着头脑。
CentOS的环境变量配置文件体系是一个层级体系,这与其他多用户应用系统配置文件是类似的,有全局的,有用户的,有shell的,另外不同层级有时类似继承关系。
在运维系统中,如果需要异步执行一些调度任务的时候,最常用的异步任务队列工具就是celery。但是celery默认是不自带后台运行等功能的,那么怎么办呢?
通常来说,Linux运行一个程序,是使用当前运行这个程序的用户权限,这当然是合理的。但是有一些程序比较特殊,比如我们常用的ping命令。
桌面上运行virtualbox出错: The virtual machine 'xp' has terminated unexpectedly during startup with exit code 1 (0x1). Effective UID is not root(euid=1000 egid=482 uid=1000 gid=482)(rc=-10) Please try reinstalling VirtualBox. 手动敲命令运行/usr/lib/virtual/VirtualBox的出错提示 VirtualBox: Error -10 in SUPR3HardenedMain! VirtualBox: Effective UID is not root (euid=1000 egid=100 uid=1000 gid=100) VirtualBox: Tip! It may help to reinstall VirtualBox. 重新安装virtualbox问题依旧, 查看其mode状态 ls -l /usr/lib/virtual/VirtualBox -rwxr-x--- 1 root vboxusers 35368 4月 15 01:50 VirtualBox 上面这种mode是不对的,需要修改 sudo chmod 4711 /usr/lib/virtualbox/VirtualBox 再次查看 ls -l /usr/lib/virtualbox/VirtualBox -rws--x--x 1 root vboxusers 35368 4月 15 01:50 /usr/lib/virtualbox/VirtualBox 对了,再运行,可以了.
客户端操作测试 [root@h202 ~]# ls anaconda-ks.cfg Downloads ip.log Music plot Templates vmware-tools-distrib Desktop install.log logger packages Public Videos zk Documents
进入容器,在/mnt目录下进行修改文件属性的操作,出现如下错误(此时容器中的user id=0)
https://thomassileo.name/blog/2012/08/20/how-to-keep-celery-running-with-supervisor/
celery beat v4.1.0 (latentcall) is starting. 2018-07-23 01:52:33 [signals_handler DEBUG] Receive django ready signal 2018-07-23 01:52:33 [signals_handler DEBUG] - fresh all settings 2018-07-23 01:52:33 [signals_handler DEBUG] Receive django ready signal 2018-07-23 01:52:33 [signals_handler DEBUG] - fresh all settings 2018-07-23 01:52:35 [signals_handler DEBUG] Receive django ready signal 2018-07-23 01:52:35 [signals_handler DEBUG] - fresh all settings 2018-07-23 01:52:35 [signals_handler DEBUG] Receive django ready signal 2018-07-23 01:52:35 [signals_handler DEBUG] - fresh all settings /opt/py3/lib/python3.6/site-packages/celery/platforms.py:795: RuntimeWarning: You're running the worker with superuser privileges: this is absolutely not recommended! Please specify a different userusing the -u option. User information: uid=0 euid=0 gid=0 egid=0 uid=uid, euid=euid, gid=gid, egid=egid, __ - ... __ - _ LocalTime -> 2018-07-2301:52:36 Configuration -> . broker -> redis://127.0.0.1:6379/3 . loader -> celery.loaders.app.AppLoader . scheduler -> django_celery_beat.schedulers.DatabaseScheduler . logfile -> [stderr]@%DEBUG . maxinterval -> 1.00minute (60.0s) Setting default socket timeout to30 beat: Starting... DatabaseScheduler: initial read Writing entries... DatabaseScheduler: Fetching database schedule Current schedule: <ModelEntry: terminal.tasks.delete_terminal_status_period terminal.tasks.delete_terminal_status_period(*[], **{}) <freq: 1.00hour>> <ModelEntry: terminal.tasks.clean_orphan_session terminal.tasks.clean_orphan_session(*[], **{}) <freq: 1.00hour>> beat: Ticking withmaxinterval->1.00minute beat: Waking up in1.00minute. | Worker: Preparing bootsteps. | Worker: Building graph... | Worker: New boot order: {Beat, StateDB, Timer, Hub, Pool, Autoscaler, Consumer} | Consumer: Preparing bootsteps. | Consumer: Building graph... | Consumer: New boot order: {Connection, Agent, Events, Mingle, Tasks, Control, Gossip, Heart, event loop} -------------- celery@h165 v4.1
今天跑实验,发现进程被随机kill。咨询了服务器上的其他同学,他们说之前也发生过,一直存在。看来可能有可能不是我自己程序的原因,只能自己动手解决了。
本文档介绍在CentOS 7系统中利用带有suid权限的程序提权从而获取root shell的方法。
最近搞了一个阿里ECS,CentOS7,涉及到一些基本的Linux指令,在这里总结一下,在搭环境中常用的一些指令,熟悉这些指令就基本能够使用CentOS进行日常操作了。
当我们使用Ptrace方式跟踪一个进程时,目标进程会记录自己被谁跟踪,可以查看/proc/pid/status看到这个信息,下图展示的是使用ida进行调试的情况。
在实际的生产环境中很有用(一般所有的内网机器hosts文件都保持一致),主要用于服务器迁移
进程pid和ppid、进程的uid和euid、用户的uid和gid、文件的创建者和所有者的关系辨析
说到 linux 上的文件权限,其实我们在说两个实体,一是文件,二是进程。一个进程能不能访问一个文件,其实由三部分内容决定:
setuid()用来重新设置执行目前进程的用户识别码. 不过, 要让此函数有作用, 其有效的用户识别码必须为0(root). 在Linux 下, 当root 使用setuid()来变换成其他用户识别码时, root 权限会被抛弃, 完全转换成该用户身份, 也就是说, 该进程往后将不再具有可setuid()的权利, 如果只是向暂时抛弃root 权限, 稍后想重新取回权限, 则必须使用seteuid().
今天卸载软件重新安装环境变量怎么都不对了,一生气把环境变量都清空了。命令:unset PATH
领取专属 10元无门槛券
手把手带您无忧上云