避免’sudo echo x >’ 时’Permission denied’

版权声明:本文为博主原创文章,遵循 CC 4.0 by-sa 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/vola9527/article/details/86760978

甲: 示例
sudo echo a > 1.txt
-bash: 1.txt: Permission denied
乙: 分析:
bash 拒绝这么做,说是权限不够.
这是因为重定向符号 “>” 也是 bash 的命令。sudo 只是让 echo 命令具有了 root 权限,
但是没有让 “>” 命令也具有root 权限,所以 bash 会认为这个命令没有写入信息的权限。
丙: 解决办法。三种:

  1. 利用 “sh -c” 命令,它可以让 bash 将一个字串作为完整的命令来执行,这样就可以将 sudo 的影响范围扩展到整条命令。
    具体用法如下:
    sudo sh -c “echo a > 1.txt”
    利用bash -c 也是一样的,现在bash shell 流行。

  2. 利用管道和 tee 命令,该命令可以从标准输入中读入信息并将其写入标准输出或文件中,
    具体用法如下:
    echo a |sudo tee 1.txt
    echo a |sudo tee -a 1.txt // -a 是追加的意思,等同于 >>
    tee 命令很好用,它从管道接受信息,一边向屏幕输出,一边向文件写入。
    linux 总是有一些小工具为我们考虑的很贴切!

  3. 提升shell 权限。
    sudo -s //提到root 权限。提示符为#
    当你觉得该退回到普通权限时,
    sudo su username //退回到username 权限,提示符为$
    exit 退出当前用户,回到上一层目录.

展开阅读全文

java.net.SocketException: Permission denied报错

09-24

在AndroidManifest.xml文件中添加还是会报错java.net.SocketException: Permission deniedrnrn本人菜鸟一枚,刚刚接触androidrn还请各位大牛帮忙解决一下,感谢!!!rn一下是源码:rnrn[color=#FF0000][b]MainActivity.java[/b][/color]rnpackage com.example.httptest;rnrnimport android.os.StrictMode;rnimport android.util.Log;rnimport android.support.v7.app.AppCompatActivity;rnimport android.os.Bundle;rnimport android.view.View;rnimport android.content.Intent;rnimport android.content.res.AssetManager;rnimport android.os.AsyncTask;rnimport android.support.v7.app.AppCompatActivity;rnimport android.os.Bundle;rnimport android.widget.TextView;rnimport android.widget.Button;rnrnimport java.io.*;rnimport java.io.BufferedInputStream;rnimport java.io.BufferedOutputStream;rnimport java.io.ByteArrayInputStream;rnimport java.io.ByteArrayOutputStream;rnimport java.io.IOException;rnimport java.io.InputStream;rnimport java.io.OutputStream;rnimport java.io.UnsupportedEncodingException;rnimport java.net.HttpURLConnection;rnimport java.net.MalformedURLException;rnimport java.net.URL;rnimport java.util.HashMap;rnimport java.util.Iterator;rnimport java.util.List;rnimport java.util.Map;rnimport java.util.logging.Handler;rnimport java.util.logging.LogRecord;rnrnimport org.json.*;rnrnpublic class MainActivity extends AppCompatActivity rnrn private TextView textview = null;rn public static String text = null;rnrn @Overridern protected void onCreate(Bundle savedInstanceState) rn super.onCreate(savedInstanceState);rn setContentView(R.layout.activity_main);rn textview = (TextView) findViewById(R.id.textview);rn StrictMode.setThreadPolicy(new StrictMode.ThreadPolicy.Builder().detectDiskReads().detectDiskWrites().detectNetwork().penaltyLog().build());rn rnrnrnrn public void btnOnClick(View view)rn new MyThread().start();rn textview.setText("text");rn rnrnrnclass MyThread extends Threadrn public void run()rn tryrn URL url = new URL("http://192.168.1.104:80/www/text.php");rn HttpURLConnection conn = (HttpURLConnection) url.openConnection();rn conn.setRequestMethod("POST");rn conn.setDoOutput(true);rn conn.setDoInput(true);rn InputStream is = conn.getInputStream();rn MainActivity.text = readInputStream(is);rn catch (MalformedURLException e)rn e.printStackTrace();rn catch (IOException e)rn e.printStackTrace();rn rnrn rnrn public String readInputStream(InputStream is)rn tryrn ByteArrayOutputStream baos = new ByteArrayOutputStream();rn int length = 0;rn byte[] buffer = new byte[1024];rn while ((length = is.read(buffer))!=-1)rn baos.write(buffer,0,length);rn rn is.close();rn baos.close();rn return baos.toString();rn catch (IOException e)rn e.printStackTrace();rn return "failed";rn rn rnrnrn[color=#FF0000][b]AndroidManifest.xml[/b][/color]rnrnrnrn rn rn rn rnrn rn rn rn rn rn rnrnrnrn[color=#FF0000][b]activity_main.xml[/b][/color]rnrnrnrn rnrn rnrnrn 论坛

没有更多推荐了,返回首页