Linux Permission denied 问题
Linux Permission denied 问题
来源 https://www.cnblogs.com/sparkdev/p/10287164.html
如果当前用户没有某个文件的写权限,又要通过输出重定向往该文件中写入内容。结果只能是 "Permission denied"。比如当前用户为 nick,下面的命令视图查询 /root 目录下的文件并把结果写入到 /root/test.txt 文件中(注意:用户 nick 没有对 /root/test.txt 文件的写权限):
$ sudo ls -al /root/test.txt
$ sudo ls -al /root > /root/test.txt

Permission denied 的原因
sudo ls -al /root > /root/test.txt 命令不工作的原因是:
虽然 ls 命令是以 sudo 方式执行的,但是输出重定向操作是由当前 shell 执行的,它(当前 shell)没有 /root/test.txt 文件的权限,所以最终失败。
搞清楚了原因,就可以通过不同的方式来解决这个问题了,下面介绍四种方式。
以 sudo 方式运行 shell
既然是 shell 进程没有权限,那就用 sudo 的方式执行 shell:
$ sudo bash -c 'ls -al /root > /root/test.txt'

把命令写入脚本,以 sudo 方式执行脚本
把下面的代码保存到脚本文件 test.sh 中:
#!/bin/bash
ls -al /root > /root/test.txt
然后通过下面的方式执行:
$ chmod +x test.sh
$ sudo ./test.sh

如果觉着创建脚本麻烦的话还可以使用变通的方式:
$ sudo bash <<EOF
> ls -al /root > /root/test.txt
> EOF
或者是下面的写法:
$ echo 'ls -al /root > /root/test.txt' | sudo bash
先通过 sudo -s 启动 shell,然后执行命令
先通过 sudo -s 命令切换到 root 用户再执行命令,最后 ctrl + d 退出:

通过 sudo tee 命令实现
Tee 命令用于将数据重定向到文件,另一方面还可以提供一份重定向数据的副本作为后续命令的 stdin。简单的说就是把数据重定向到给定文件和屏幕上(下图来自互联网):

下面的命令中通过 sudo tee 把 ls 命令的输出写入文件:
$ sudo ls -al /root | sudo tee /root/test.txt > /dev/null
其中的 > /dev/null 阻止 tee 把内容输出到终端:

参考:
linux – 如何使用sudo将输出重定向到一个我没有权限写入的位置?
====================== End
Linux Permission denied 问题的更多相关文章
- Linux permission denied问题
初试Linux 本来想试一试递归的mkdir -p结果遇到了permission denied,但是自己明明是管理员啊 查了博客,在文件名前加上chmod 777 ,例如chmod 777 temp ...
- Linux permission denied解决方法
一.准备 比如建立一个test.sh的脚本文件,脚本代码如下: #! /bin/bash echo Hello,world! 代码功能实现的是:输出字符Hello,world! 二.运行脚本 在终端切 ...
- Linux 客户端访问 NFS报Permission Denied错误
在Linux服务器上访问NFS共享目录时,报错:Permission denied. 如下截图所示: 因为这个NFS是系统管理员配置的,我又不了解具体情况,而系统管理员休假中,联系不上.那么我只能先多 ...
- Linux启动ftp服务器530 Permission denied解决方法(已试,行)
Linux启动ftp服务器530 Permission denied解决方法重新在虚拟机下安装了linux.现在我想启动linux自带的ftp服务器:#service vsftpd start . ...
- 关于LINUX权限-bash: ./startup.sh: Permission denied
关于LINUX权限-bash: ./startup.sh: Permission denied <script type="text/javascript"></ ...
- Linux下解决permission denied问题
由于权限问题,在linux下启动tomcat出现权限permission denied 提示解决方法如下: 1.cd 进入tomcat/bin目录 2.运行下面命令 sudo chmod 777 st ...
- linux 下执行.sh文件总是提示permission denied
linux 下执行.sh文件总是提示permission denied 如果你是root登陆的话(不是的话,切换到root用户,对*.sh赋可执行的权限) chmod 777 *.sh or ch ...
- linux 下执行.sh文件提示permission denied
linux 下执行.sh文件提示permission denied 在脚本文件目录下运行命令,赋予权限: chmod 777 *.sh or chmod +x *.sh
- 【jvm】linux 调用 jmap 报错Permission denied
linux 调用 jmap 报错Permission denied 解决方案: 分别对java安装目录,java的bin目录以及jmap命令设置权限 chmod jdk1..0_79 chmod b ...
随机推荐
- LeetCode 128. 最长连续序列(Longest Consecutive Sequence)
题目描述 给定一个未排序的整数数组,找出最长连续序列的长度. 要求算法的时间复杂度为 O(n). 示例: 输入: [100, 4, 200, 1, 3, 2] 输出: 4 解释: 最长连续序列是 [1 ...
- LC 934. Shortest Bridge
In a given 2D binary array A, there are two islands. (An island is a 4-directionally connected grou ...
- LC 835. Image Overlap
Two images A and B are given, represented as binary, square matrices of the same size. (A binary ma ...
- 使用Jsp/Js/Ajax/Json/Jquery/Easyui + Servlet + JDBC + Lucene/Mysql/Oracle完成数据库分页
package loaderman.action; import java.io.IOException; import java.io.PrintWriter; import java.util.L ...
- RabbitMQ学习之:(十一)AMQP.0-10规范,中文翻译1,2,3章 (转载)
From:http://blog.sina.com.cn/s/blog_4aba0c8b0100p6ho.html From: http://blog.sina.com.cn/s/blog_4aba0 ...
- [转]html里a标签中href调用js的几种方法
文章转自:https://blog.csdn.net/best_luxi/article/details/45062301 我们常用的在a标签中有点击事件: 1. a href=”javascript ...
- JAVA 基础编程练习题12 【程序 12 计算奖金】
12 [程序 12 计算奖金] 题目:企业发放的奖金根据利润提成.利润(I)低于或等于 10 万元时,奖金可提 10%:利润高于 10 万元, 低于 20 万元时,低于 10 万元的部分按 10%提成 ...
- Java内部类(5):应用例
例1-闭包(Closure) 闭包是一个可调用的对象(通过Callback),它记录了一些信息,这些信息来自于创建它的作用域 interface Incrementable { void increm ...
- 在java中异常中的题目---重要的一点
public classTest { public static void main(String[] args) { System.out.println(newTest().test()); } ...
- python 学习记录1
存储 序号 分类 技术 用途 01 存储 Number 数字(不可变) String 字符串(不可变) List 列表 Tuple ...