【海通源码】【gcc 4.4.7 源码编译】【teamtalk源码分析 六二】setuid源码

2024-11-19 06:14:01 来源:WMS PDA 源码 分类:探索

1.CentOS 6.2编译安装Nginx1.0.14+MySQL5.5.22+PHP5.3.10步骤分享
2.linux创建目录命令linux创建命令
3.什么是源码缓冲区溢出

setuid源码

CentOS 6.2编译安装Nginx1.0.14+MySQL5.5.22+PHP5.3.10步骤分享

       说明:

       操作系统:CentOS 6.2 位

           准备篇:

           一、配置好IP、源码DNS 、源码网关,源码确保使用远程连接工具能够连接服务器

           二、源码配置防火墙,源码海通源码开启端口、源码端口

           vi /etc/sysconfig/iptables

           -A INPUT -m state --state NEW -m tcp -p tcp --dport -j ACCEPT(允许端口通过防火墙)

           -A INPUT -m state --state NEW -m tcp -p tcp --dport -j ACCEPT(允许端口通过防火墙)

           特别提示:很多网友把这两条规则添加到防火墙配置的源码最后一行,导致防火墙启动失败,源码正确的源码应该是添加到默认的端口这条规则的下面

           添加好之后防火墙规则如下所示:

           #########################################################

           # Firewall configuration written by system-config-firewall

           # Manual customization of this file is not recommended.

           *filter

           :INPUT ACCEPT [0:0]

           :FORWARD ACCEPT [0:0]

           :OUTPUT ACCEPT [0:0]

           -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT

           -A INPUT -p icmp -j ACCEPT

           -A INPUT -i lo -j ACCEPT

           -A INPUT -m state --state NEW -m tcp -p tcp --dport -j ACCEPT

           -A INPUT -m state --state NEW -m tcp -p tcp --dport -j ACCEPT

           -A INPUT -m state --state NEW -m tcp -p tcp --dport -j ACCEPT

           -A INPUT -j REJECT --reject-with icmp-host-prohibited

           -A FORWARD -j REJECT --reject-with icmp-host-prohibited

           COMMIT

           #########################################################

           /etc/init.d/iptables restart #最后重启防火墙使配置生效

           三、关闭SELINUX

           vi /etc/selinux/config

           #SELINUX=enforcing #注释掉

           #SELINUXTYPE=targeted #注释掉

           SELINUX=disabled #增加

           :wq 保存,源码关闭

           shutdown -r now #重启系统

           四 、源码系统约定

           软件源代码包存放位置:/usr/local/src

           源码包编译安装位置:/usr/local/软件名字

           五、源码下载软件包

           1、源码下载nginx(目前稳定版)

           .php.net/distributions/php-5.3..tar.gz

           5、源码下载cmake(MySQL编译工具)

           f /etc/my.cnf #拷贝配置文件(注意:如果/etc目录下面默认有一个my.cnf,直接覆盖即可)

           vi /etc/my.cnf #编辑配置文件,gcc 4.4.7 源码编译在 [mysqld] 部分增加

           datadir = /data/mysql #添加MySQL数据库路径

           ./scripts/mysql_install_db --user=mysql #生成mysql系统数据库

           cp ./support-files/mysql.server /etc/rc.d/init.d/mysqld #把Mysql加入系统启动

           chmod /etc/init.d/mysqld #增加执行权限

           chkconfig mysqld on #加入开机启动

           vi /etc/rc.d/init.d/mysqld #编辑

           basedir = /usr/local/mysql #MySQL程序安装路径

           datadir = /data/mysql #MySQl数据库存放目录

           service mysqld start #启动

           vi /etc/profile #把mysql服务加入系统环境变量:在最后添加下面这一行

           export PATH=$PATH:/usr/local/mysql/bin

           下面这两行把myslq的库文件链接到系统默认的位置,这样你在编译类似PHP等软件时可以不用指定mysql的库文件地址。

           ln -s /usr/local/mysql/lib/mysql /usr/lib/mysql

           ln -s /usr/local/mysql/include/mysql /usr/include/mysql

           shutdown -r now #需要重启系统,等待系统重新启动之后继续在终端命令行下面操作

           mysql_secure_installation #设置Mysql密码

           根据提示按Y 回车输入2次密码

           或者直接修改密码/usr/local/mysql/bin/mysqladmin -u root -p password "" #修改密码

           service mysqld restart #重启

           到此,mysql安装完成!

           五、安装 nginx

           groupadd www #添加www组

           useradd -g www www -s /bin/false #创建nginx运行账户www并加入到www组,不允许www用户直接登录系统cd /usr/local/src

           tar zxvf nginx-1.0..tar.gz

           cd nginx-1.0.

           ./configure --prefix=/usr/local/nginx --user=www --group=www --with-tl --enable-sockets --with-xmlrpc --enable-zip --enable-soap --without-pear --with-gettext --enable-session --with-mcrypt --with-curl #配置

           make #编译

           make install #安装

           cp php.ini-production /usr/local/php5/etc/php.ini #复制php配置文件到安装目录

           rm -rf /etc/php.ini #删除系统自带配置文件

           ln -s /usr/local/php5/etc/php.ini /etc/php.ini #添加软链接

           cp /usr/local/php5/etc/php-fpm.conf.default /usr/local/php5/etc/php-fpm.conf #拷贝模板文件为php-fpm配置文件

           vi /usr/local/php5/etc/php-fpm.conf #编辑

           user = www #设置php-fpm运行账号为www

           group = www #设置php-fpm运行组为www

           pid = run/php-fpm.pid #取消前面的分号

           设置 php-fpm开机启动

           cp /usr/local/src/php-5.3./sapi/fpm/init.d.php-fpm /etc/rc.d/init.d/php-fpm #拷贝php-fpm到启动目录

           chmod +x /etc/rc.d/init.d/php-fpm #添加执行权限

           chkconfig php-fpm on #设置开机启动

           vi /usr/local/php5/etc/php.ini #编辑配置文件

           找到:;open_basedir =

           修改为:open_basedir = .:/tmp/ #防止php木马跨站,重要!teamtalk源码分析 六二

           找到:disable_functions =

           修改为:disable_functions = passthru,exec,system,chroot,scandir,chgrp,chown,shell_exec,proc_open,proc_get_status,ini_alter,ini_alter,ini_restore,dl,openlog,syslog,readlink,symlink,popepassthru,stream_socket_server,escapeshellcmd,dll,popen,disk_free_space,checkdnsrr,checkdnsrr,getservbyname,getservbyport,disk_total_space,posix_ctermid,posix_get_last_error,posix_getcwd, posix_getegid,posix_geteuid,posix_getgid, posix_getgrgid,posix_getgrnam,posix_getgroups,posix_getlogin,posix_getpgid,posix_getpgrp,posix_getpid, posix_getppid,posix_getpwnam,posix_getpwuid, posix_getrlimit, posix_getsid,posix_getuid,posix_isatty, posix_kill,posix_mkfifo,posix_setegid,posix_seteuid,posix_setgid, posix_setpgid,posix_setsid,posix_setuid,posix_strerror,posix_times,posix_ttyname,posix_uname

           #列出PHP可以禁用的函数,如果某些程序需要用到这个函数,可以删除,取消禁用。

           找到:;date.timezone =

           修改为:date.timezone = PRC #设置时区

           找到:expose_php = On

           修改为:expose_php = OFF #禁止显示php版本的信息

           找到:display_errors = On

           修改为:display_errors = OFF #关闭错误提示

           七、配置nginx支持php

           vi /usr/local/nginx/conf/nginx.conf

           修改/usr/local/nginx/conf/nginx.conf 配置文件,需做如下修改

           user www www; #首行user去掉注释,修改Nginx运行组为www www;必须与/usr/local/php5/etc/php-fpm.conf中的user,group配置相同,否则php运行出错

           index index.php index.html index.htm; #添加index.php

           # pass the PHP scripts to FastCGI server listening on .0.0.1:

           #

           location ~ /.php$ {

           root html;

           fastcgi_pass .0.0.1:;

           fastcgi_index index.php;

           fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;

           include fastcgi_params;

           }

           #取消FastCGI server部分location的egret 引擎 runtime 源码注释,并要注意fastcgi_param行的参数,改为$document_root$fastcgi_script_name,或者使用绝对路径

           /etc/init.d/nginx restart #重启nginx

           八、配置php支持Zend Guard

           安装Zend Guard

           cd /usr/local/src

           mkdir /usr/local/zend #建立Zend安装目录

           tar xvfz ZendGuardLoader-php-5.3-linux-glibc-i.tar.gz #解压安装文件

           cp ZendGuardLoader-php-5.3-linux-glibc-i/php-5.3.x/ZendGuardLoader.so /usr/local/zend/ #拷贝文件到安装目录

           vi /usr/local/php5/etc/php.ini #编辑文件

           在最后位置添加以下内容

           [Zend Guard]

           zend_extension=/usr/local/zend/ZendGuardLoader.so

           zend_loader.enable=1

           zend_loader.disable_licensing=0

           zend_loader.obfuscation_level_support=3

           zend_loader.license_path=

           测试篇

           cd /usr/local/nginx/html/ #进入nginx默认网站根目录

           rm -rf /usr/local/nginx/html/* #删除默认测试页

           vi index.php #新建index.php文件

           ?php

           phpinfo();

           ?

           :wq! #保存

           chown www.www /usr/local/nginx/html/ -R #设置目录所有者

           chmod /usr/local/nginx/html/ -R #设置目录权限

           shutdown -r now #重启

           在客户端浏览器输入服务器IP地址,可以看到相关的配置信息!

           service nginx restart #重启nginx

           service mysqld restart #重启mysql

           /usr/local/php5/sbin/php-fpm #启动php-fpm

           /etc/rc.d/init.d/php-fpm restart #重启php-fpm

           /etc/rc.d/init.d/php-fpm stop #停止php-fpm

           /etc/rc.d/init.d/php-fpm start #启动php-fpm

           #############################################################################

           备注:

           nginx默认站点目录是:/usr/local/nginx/html/

           权限设置:chown www.www /usr/local/nginx/html/ -R

           MySQL数据库目录是:/data/mysql

           权限设置:chown mysql.mysql -R /data/mysql

           到此,CentOS 6.2下 Nginx1.0.+MySQL5.5.+PHP5.3.+Zend Guard Loader基本运行环境搭建完成!

linux创建目录命令linux创建命令

       linux命令如何新建一个文件?

       1、终端下键入:touch加文件名,这样就创建了一个文件。

       2、用ls命令即可查看刚刚创建的文件。

       3、然后就可以随意编辑这个文件了。

       æ‰©å±•èµ„æ–™

       1、Linux常用的命令:arch显示机器的处理器架构,uname-r显示正在使用的内核版本。

       linux修改命令?

       chmod

       u+s

       ifconfig

       ç»™å‘½ä»¤æ·»åŠ ä¸€ä¸ªsetuid权限就可以,这样执行命令时,普通用户就成了root。

       åœ¨linux中,不管是root用户还是普通用户,都可以使用“password”命令来更改自身的密码。但是,linux中的密码通常是保存在“/etc/paswd”和“/etc/shadow”文件中,这两个文件对系统安全至关重要,因此只有root用户才能对其执行读写操作。以管理员的身份登陆系统,在linxu提示符下执行“ls

       /etc/passwd

       /etc/shadow”命令,在返回信息中可以看到普通用户对上述这两个文件并没有写权限,因此从文件属性的角度看,普通用户在更改自身密码时,是无法将密码信息写入到上述文件中的,哪么用户是怎样成功的更改密码的呢?实际上,问题的关键不在于密码文件本身,而在于密码更改命令“passwd”。在提示符下执行命令“ls

       /usr/bin/passwd”,在返回信息中的文件所有者执行权限位上显示“s”字样,表示“passwd”命令具有setuid权限,其所有者为root,这样普通用户在执行“passwd”命令时,实际上以有效用户root的身份来执行的,并具有了相应的权限,从而将新的密码写入到“/etc/passwd”和“/etc/shadow”文件中,当命令执行完毕,该用户的身份立即消失。如何设置setuid权限呢?使用“chmod”命令即可为指定文件设置setuid权限,例如“chmod

       4xxx

       filename”命令,取消setuid权限的命令为“chmod

       xxx

       filename”。类似的,执行“chmod

       2xxx

       filename”命令可以设置setuid权限,使用“chmod

       xxx

       filename”命令即可取消setgid权限,如果执行“chmod

       6xxx

       filename”命令,即可同时为指定文件设置setuid和setgid,执行命令“chmod

       0xxx

       filename”,即可同时取消指定文件的setuid和setgid权限。例如以root用户登陆系统,执行“chmod

       

       /usr/bin/passwd”命令,就可以取消“passwd”命令的setuid权限,这样普通用户就无法修改自己的密码了。

       linux中make命令怎么用?

       ç”¨æ³•ï¼š

       1、make:

       è¿™ä¸€æ­¥å°±æ˜¯ç¼–译,大多数的源代码包都经过这一步进行编译(当然有些perl或python编写的软件需要调用perl或python来进行编译)。

       å¦‚果在make过程中出现error,就要记下错误代码(注意不仅仅是最后一行),然后可以向开发者提交bugreport(一般在INSTALL里有提交地址)。或者系统少了一些依赖库等,这些需要自己仔细研究错误代码。

       make的作用是开始进行源代码编译,以及一些功能的提供,这些功能由他的Makefile设置文件提供相关的功能。

       æ¯”如makeinstall一般表示进行安装,makeuninstall是卸载,不加参数就是默认的进行源代码编译。

       make是Linux开发套件里面自动化编译的一个控制程序,他通过借助Makefile里面编写的编译规范进行自动化的调用gcc、ld以及运行某些需要的程序进行编译的程序。

       ä¸€èˆ¬æƒ…况下,他所使用的Makefile控制代码,由configure这个设置脚本根据给定的参数和系统环境生成。

       linux里创建一个文本文件的命令是什么?

       touchfilename就创建了一个文件名为filename的空文本文件linux下的默认的文件格式都是纯文本,不用考虑后缀的问题

       linux启动命令?

       ä¸€ï¼šå¯åŠ¨Nginx服务--在sbin目录下

       å¯åŠ¨å‘½ä»¤:./nginx

       å…³é—­å‘½ä»¤:./nginx-sstop和./nginx-squit

       åˆ·æ–°é…ç½®æ–‡ä»¶:./nginx-sreload(每次对Nginx的配置文件nginx.conf修改后,都要进行重新加载配置文件)

       äºŒï¼šè¿›ç¨‹

       æŸ¥çœ‹è¿›ç¨‹ps-ef|grep-ixxxx-i大概是ignore是忽略的意思这里是忽略大小写。

       æ€æ­»è¿›ç¨‹kill-9xxxx

       ä¸‰ï¼šé˜²ç«å¢™

       å¼€å¯é˜²ç«å¢™serviceiptablesstart

       å…³é—­é˜²ç«å¢™serviceiptablesstop

       æŸ¥çœ‹é˜²ç«å¢™çš„状态serviceiptablesstatus

       æ°¸ä¹…关闭防火墙chkconfigiptablesoff

       å››ï¼šå¯åŠ¨zookeeper服务--在zookeeper的bin目录下

       å¼€å¯zookeeper服务:./zkServer.shstart

       æŸ¥çœ‹zookeeper状态./zkServer.shstatus

       äº”:启动Redis服务--在redis的bin目录下

       ä»¥åŽå°çš„方式启动:./redis-server../redis.conf(后面的的redis.conf路径要根据每个人配置文件存放的位置来写)

       è¿›å…¥redis命令服务:./redis-cli

       è¾“入:ping如果返回pong则表示连接成功!

       å…­.启动tomcat服务

       Linux下tomcat服务的启动、关闭与错误跟踪,使用PuTTy远程连接到服务器以后,通常通过以下几种方式启动关闭tomcat服务:

       åˆ‡æ¢åˆ°tomcat主目录下的bin目录(cdusr/local/tomcat/bin)

       1,启动tomcat服务

       æ–¹å¼ä¸€ï¼šç›´æŽ¥å¯åŠ¨./startup.sh

       æ–¹å¼äºŒï¼šä½œä¸ºæœåŠ¡å¯åŠ¨nohup./startup.sh

       æ–¹å¼ä¸‰ï¼šæŽ§åˆ¶å°åŠ¨æ€è¾“出方式启动./catalina.shrun动态地显示tomcat后台的控制台输出信息,Ctrl+C后退出并关闭服务

       è§£é‡Šï¼š

       é€šè¿‡æ–¹å¼ä¸€ã€æ–¹å¼ä¸‰å¯åŠ¨çš„tomcat有个弊端,当客户端连接断开的时候,tomcat服务也会立即停止,通过方式二可以作为linux服务一直运行

       é€šè¿‡æ–¹å¼ä¸€ã€æ–¹å¼äºŒæ–¹å¼å¯åŠ¨çš„tomcat,其日志会写到相应的日志文件中,而不能动态地查看tomcat控制台的输出信息与错误情况,通过方式三可以以控制台模式启动tomcat服务,

       ç›´æŽ¥çœ‹åˆ°ç¨‹åºè¿è¡Œæ—¶åŽå°çš„控制台输出信息,不必每次都要很麻烦的打开catalina.out日志文件进行查看,这样便于跟踪查阅后台输出信息。tomcat控制台信息包括log4j和System.out.println()等输出的信息。

       2,关闭tomcat服务

       ./shutdown.sh

       ä¸ƒ>启动数据库:

       servicemysqldstart启动

       servicemysqldrestart重启

什么是缓冲区溢出

       缓冲区溢出是指当计算机向缓冲区内填充数据位数时超过了缓冲区本身的容量溢出的数据覆盖在合法数据上,理想的情况是 程序检查数据长度并不允许输入超过缓冲区长度的字符,但是绝大多数程序都会假设数据长度总是与所分配的储存空间想匹配,这就为缓冲区溢出埋下隐患.

       操作系统所使用的缓冲区又被称为堆栈. 在各个操作进程之间,指令会被临时储存在堆栈当中,堆栈也会出现缓冲区溢出.

       缓冲区溢出有时又称为堆栈溢出攻击,是过去的十多年里,网络安全漏洞常用的一种形式并且易于扩充。相比于其他因素,flash教程 源码下载缓冲区溢出是网络受到攻击的主要原因。

       例如:计算机在内存中存储了所有的东西,包括程序、数据和。如果计算机要求用户输入8位字符密码却接收到了位字符的密码,多出来的字符可以写在内存中的其他地方。但事实并不是这样。这就是个小错误。

       _______________________________________________________

       缓冲区溢出的处理

       由于缓冲区溢出是一个编程问题,所以只能通过修复被破坏的程序的代码而解决问题。如果你没有源代码,从上面“堆栈溢出攻击”的原理可以看出,要防止此类攻击,我们可以:

       1、开放程序时仔细检查溢出情况,不允许数据溢出缓冲区。由于编程和编程语言的原因,这非常困难,而且不适合大量已经在使用的程序;

       2、使用检查堆栈溢出的编译器或者在程序中加入某些记号,以便程序运行时确认禁止黑客有意造成的溢出。问题是无法针对已有程序,对新程序来讲,需要修改编译器;

       3、经常检查你的操作系统和应用程序提供商的站点,一旦发现他们提供的补丁程序,就马上下载并且应用在系统上,这是最好的方法。但是系统管理员总要比攻击者慢一步,如果这个有问题的软件是可选的,甚至是临时的,把它从你的系统中删除。举另外一个例子,你屋子里的门和窗户越少,入侵者进入的方式就越少。

本文地址:http://581.net.cn/news/93c375796149.html 欢迎转发