使用root权限运行自己所编译程序的解决方法
这几天照着UNP上提供的ping源码编写了一个用来学习。虽然编译后能运行,但由于使用了原始套接字,必须root权限运行,这与和Linux下真实的ping有差别:后者是不需要输入sudo或者切换到#才能运行的。linux中的ping源码没有找到,但是看到oschina上有一例自制的ping源码相似,作者提供的示意图中在$提示符下没有用sudo运行的。总之,希望能够使自己编写的程序以root权限运行而不需要加上sudo或者切换到#提示符。
没有找到能在进程运行时提升自身权限的方法,另查到一种方法(来源见文后注释)可以实现,这两步缺一不可:
(1)用root权限完成gcc;
(2)chmod u+s <可执行文件>
这时,就能像Linux自带的ping一样,无需sudo或切换至#提示符就能运行了。
当然,由于UNP上的ping源码在创建原始套接字后就使用setuid(getuid()),保持了最小权限原则。
相关推荐
-
让PHP以ROOT权限执行系统命令的方法
用来作为解决php以root权限执行一些普通用户不能执行的命令或应用的参考. 其实php里的popen()函数是可以解决这个问题的,但是由于某些版本的linux(如我使用的Centos 5)对系统安全的考虑, 使得这个问题解决起来麻烦了好多.先来看一个网友使用popen()函数的例子. 复制代码 代码如下: /* PHP中如何增加一个系统用户 下面是一段例程,增加一个名字为james的用户, root密码是 louis.仅供参考 */ $sucommand = "su root --comman
-
Android中Root权限获取的简单代码
我们知道Android手机操作系统采用的是Linux内核,Linux中最高的系统权限就是Root,这就类似与Windows中的Administrator系统管理员权限,也就是操作系统的最高权限.由于Root的权限过高,因此手机产商一般都不允许用户直接拥用Root权限,以防止用户修改系统内置的业务跟程序.但是对于用户来说,当然希望能拥有Root权限以将手机修改成自己的一种特色,因为有Root权限则可以任意修改手机的所有文件跟程序,让手机更加个性化. 复制代码 代码如下: Process proce
-
Android获取ROOT权限的实例代码
获取Android的ROOT权限其实很简单,只要在Runtime下执行命令"su"就可以了. 复制代码 代码如下: // 获取ROOT权限public void get_root(){ if (is_root()){ Toast.makeText(mCtx, "已经具有ROOT权限!", Toast.LENGTH_LONG).show(); } else{ try{ progress_dialog = P
-
Android 操作系统获取Root权限 原理详细解析
android root权限破解分析 许多机友新购来的Android机器没有破解过Root权限,无法使用一些需要高权限的软件,以及进行一些高权限的操作,其实破解手机Root权限是比较简单及安全的,破解Root权限的原理就是在手机的/system/bin/或/system/xbin/目录下放置一个可执行文件"su",这是一个二进制文件,相当于电脑上的exe文件,仅仅在系统中置入这个"su"文件是不会给手机的软件或硬件造成任何故障. 下面的代码是android系统原版的
-
使用root权限运行自己所编译程序的解决方法
这几天照着UNP上提供的ping源码编写了一个用来学习.虽然编译后能运行,但由于使用了原始套接字,必须root权限运行,这与和Linux下真实的ping有差别:后者是不需要输入sudo或者切换到#才能运行的.linux中的ping源码没有找到,但是看到oschina上有一例自制的ping源码相似,作者提供的示意图中在$提示符下没有用sudo运行的.总之,希望能够使自己编写的程序以root权限运行而不需要加上sudo或者切换到#提示符. 没有找到能在进程运行时提升自身权限的方法,另查到一种方法(来
-
Pycharm以root权限运行脚本的方法
因为权限不够,导致Pycharm在运行脚本时报错: socket.error: [Errno 1] Operation not permitted 网上有一些修改文件使得Pycharm运行脚本时可以不需要密码的以root权限运行. 但是大多操作雷同,估计是复制粘贴的,而且下方有几条评论表示IDE报错. 在跟随他操作到最后时发现无法继续,就干脆用简单粗暴的方式,以sudo启动IDE: sudo ./pycharm.sh 启动后需要手动导入项目与解释器,不然代码无法运行. 导入解释器后即可运行代码
-
Android手机获取root权限并实现关机重启功能的方法
本文实例讲述了Android手机获取root权限并实现关机重启功能的方法,是Android程序设计中非常常见的重要功能.现分享给大家,供大家在Android程序开发中参考之用. 具体功能代码如下: /* * 执行命令 * @param command * 1.获取root权限 "chmod 777 "+getPackageCodePath() * 2.关机 reboot -p * 3.重启 reboot */ public static boolean execCmd(String c
-
MySQL重置root密码提示"Unknown column ‘password"的解决方法
晚上打开MAC,发现root帐户突然不能正常登陆MySQL,于是打算重置密码,看了几篇文章,竟然重置不成功,总是得到Unknown column 'password'的错误,看了user的表结构也确实没有该字段了.经查发现是MySQL升级后将字段名给改了,password名称改为authentication_string了.知道原因后,按照如下命令就可以成功重置root密码了. $sudo mysql.server stop #先关闭正常的MySQL服务 $sudo mysqld_safe --
-
Android Studio 运行按钮灰色的完美解决方法
今天新建项目的时候突然发现编译后运行按钮为灰色. 解决方案: 第一步:点击图中的Add Configuration,出来如下界面 第二步:点+号,并选择Android App选项 出来下图所示界面 第三步:在Module 中下拉框中选择app 如果在Module 下拉框没有app这个选项 点击搜索框,输入sync,从搜索结果中选择如下项: 点击运行 然后就可以在Module下拉框中发现app这个选项了. 第四步: 点击Add Configuratio 选择app ,运行按钮就可以用啦. 到此这篇
-
SpringBoot Shiro 权限注解不起作用的解决方法
最近在学习springboot结合shiro做权限管理时碰到一个问题. 问题如下: 我在userRealm中的doGetAuthorizationInfo方法中给用户添加了权限,然后在Controller中写了下面的代码.其中URL为/listArticle的方法必须要有article:over权限才能通过.我在doGetAuthorizationInfo方法中给该用户添加的权限并没有article:over,但是当前端向该URL发送请求时,@RequiresPermissions注解不起作用,
-
MySQL重置root密码提示"Unknown column ‘password"的解决方法
晚上打开MAC,发现root帐户突然不能正常登陆MySQL,于是打算重置密码,看了几篇文章,竟然重置不成功,总是得到Unknown column 'password'的错误,看了user的表结构也确实没有该字段了.经查发现是MySQL升级后将字段名给改了,password名称改为authentication_string了.知道原因后,按照如下命令就可以成功重置root密码了. $sudo mysql.server stop #先关闭正常的MySQL服务 $sudo mysqld_safe --
-
Mysql的Root密码忘记,查看或修改的解决方法(图文介绍)
首先启动命令行 1.在命令行运行:taskkill /f /im mysqld-nt.exe 下面的操作是操作mysql中bin目录下的一些程序,如果没有配置环境变量的话,需要切换到mysql的bin 目录下执行如下语句.不然无效 2.继续在命令行运行:mysqld-nt --skip-grant-tables 3.新开一个命令行运行:mysql -u root (如果没有配置mysql的bin环境变量的话需要切换到bin目录下执行此语句) 如果不想改密码,只是想看原来的密码的话.可以在命令
-
IIS7下运行Access+Asp的解决方法
IIS7下面运行Asp+Access数据库,无法运行. 在goole.百度里搜了半天,没有搜到解决办法.在远景看到有几个人问,似乎有一个人声称自己成功了,然而却没有给出方法. 今天突然心血来潮想起到微软网站上搜了下,终于让俺发现解决方法了. 原文: ------- By adding appropriate ACL for the user to %windir%\ServiceProfiles\NetworkService\AppData\Local\Temp should resolve t
-
js实现运行代码需要刷新的解决方法
现在大多网站都有"运行代码"的功能,搜索吧也很早就实现了这个功能,但最近在做一个项目时,发现有些需要刷新才能看到结果,自己摸索了下,其实解决方法很简单,看如下代码: function runCode(cod1) { cod=document.getElementById(cod1) var code=cod.innerText; var newwin=window.open('','',''); newwin.opener = null;
随机推荐
- Angular CLI 安装和使用教程
- 让 Asp 与 XML 交互
- jquery中常用的SET和GET
- vbs输入助手执行会调用好多乱的进程
- 域名涨价以后,如何修改代理成本价?
- Spark的广播变量和累加器使用方法代码示例
- Linux I/O多路复用详解及实例
- C# 解析 Excel 并且生成 Csv 文件代码分析
- Swift和C语言混合编程教程
- ZendFramework2连接数据库操作实例
- php入门教程之Zend Studio设置与开发实例
- C#使用LINQ查询表达式的基本子句总结
- Android使用post方式上传图片到服务器的方法
- javascript实现动态改变层大小的方法
- SQL中的ISNULL函数使用介绍
- 基于C语言实现的贪吃蛇游戏完整实例代码
- JS实现的最简Table选项卡效果
- Listview中Button抢占焦点的解决方法
- PHP中addslashes()和stripslashes()实现字符串转义和还原用法实例
- Java深度复制功能与用法实例分析