(转)linux sudo 重定向,实现只有系统管理员才有权限操作的文件中写入信息

众所周知,使用 echo 并配合命令重定向是实现向文件中写入信息的快捷方式。

本文介绍如何将 echo 命令与 sudo 命令配合使用,实现向那些只有系统管理员才有权限操作的文件中写入信息。

比如要向 test.asc 文件中随便写入点内容,可以:

$ echo "信息" > test.asc

# 或者

$ echo "信息" >> test.asc

下面,如果将 test.asc 权限设置为只有 root 用户才有权限进行写操作:

$ sudo chown root.root test.asc

然后,我们使用 sudo 并配合 echo 命令再次向修改权限之后的 test.asc 文件中写入信息:

$ sudo echo "又一行信息" >> test.asc

-bash: test.asc: Permission denied

这时,可以看到 bash 拒绝这么做,说是权限不够。这是因为重定向符号 ">" 和 ">>" 也是 bash 的命令。我们使用 sudo 只是让 echo 命令具有了 root 权限,但是没有让 “>” 和 ">>" 命令也具有 root 权限,所以 bash 会认为这两个命令都没有向 test.asc 文件写入信息的权限。

解决这一问题的途径有两种。第一种是利用 "sh -c" 命令,它可以让 bash 将一个字串作为完整的命令来执行,这样就可以将 sudo 的影响范围扩展到整条命令。具体用法如下:

sudo sh -c "echo ‘又一行信息‘ >> test.asc"

这样sudo执行的是一个shell,在具有root权限的shell中执行前面的命令,就不会再出现权限问题了。

另一种方法是利用管道和 tee 命令,该命令可以从标准输入中读入信息并将其写入标准输出或文件中,具体用法如下:

$ echo "第三条信息" | sudo tee -a test.asc

注意,tee 命令的 "-a" 选项的作用等同于 ">>" 命令,如果去除该选项,那么 tee 命令的作用就等同于 ">" 命令。

时间: 2024-10-05 04:27:21

(转)linux sudo 重定向,实现只有系统管理员才有权限操作的文件中写入信息的相关文章

Linux如何在一个文件中写入内容

Linux中,在一个文件中写入内容,可以vim打开编辑模式,输入我们想要的内容,此次我们使用echo命令 来在一个文件夹中写入内容. echo命令: 第一种: echo 'i love u' >a.txt *在a.txt这个文件中输入i love u,如果没有这个文件则创建.如果有这个文件,那么新内容代替原来的内容. 第二种: echo 'i love u' >a.txt *在a.txt这个文件中输入i love u,如果没有这个文件则创建.如果有这个文件,那么新内容添加在原来内容的后面 原文

Linux使用sudo提权时,出现xx 不在 sudoers 文件中。此事将被报告。

在使用 sudo 临时提权时,出现:不在 sudoers 文件中.此事将被报告. 可以使用visudo命令来配置/etc/sudoers文件,将目标用户赋予使用sudo命令的能力. 在 /etc/sudoers 文件中,有一处配置专门是配置哪些用户可以使用sudo命令的: 在这下边接着写: myusername ALL=(ALL:ALL) ALL 完后保存退出,此时myusername这个用户就可以使用sudo了.

Ubuntu无法sudo提权,报当前用户不在sudoers文件中错误

Ubuntu安装后默认root不能登陆系统,密码也是随机生成,其他用户使用root权限,可以使用sudo提权,前提是该用户在/etc/sudoers配置列表中. 但是有时用户名从/etc/sudoers被意外删除了,sudo不能用了,root又不知道root密码(之前没有改过或者忘记了),如果想修改/etc/sudoers也不可能了,进入了一个死循环. 但可以如下面的方法解决: 1.重启按shift键,进入Ubuntu高级模式,选择一个recovery mode进入,出现一个9个选项的菜单,如果

linux下用sed和grep命令替换目录下所有文件中的字符串

试例如下: 第三条命令是将当前目录下代码中所有的"arm-none-linux-gnueabi" 替换成 "arm-linux" sed -i 's/arm-none-linux-gnueabi-g++/arm-linux-g++\ -O2\ -I\$\(INC\)\ -I\$\(INCSYS\)\ -static/g' `grep arm-none-linux-gnueabi-g++ . -rl` sed -i 's/arm-none-linux-gnueabi-

Linux sudo 命令的应用

.note-content { font-family: "Helvetica Neue", Arial, "Hiragino Sans GB", STHeiti, "Microsoft YaHei", "WenQuanYi Micro Hei", SimSun, Song, sans-serif } sodo 的字面意思理解应该是switch user excute a command as another user,用另外

linux ‘|’ 与重定向 实例详解

重定向与管道 ----------小命令大作为 >:重定向标准输入出定向命令 用的最多的就是向某个文件中写入内容 [[email protected] ~]# echo "Hello,world">1.txt [[email protected] ~]# cat 1.txt Hello,world 把某个命令的结果重定向到某个文件中 [[email protected] ~]# cat /etc/passwd >2.txt [[email protected] ~]#

[Linux] - xxx 不在 sudoers 文件中。此事将被报告。

redhat系统: linux中创建用户命令为:useradd 用户名, eg: useradd test 指定密码:passwd test 但是有时候我们需要使用test运行执行一些root用户才有权限执行的命令,此时有两种方式:第一种,方式使用test用户执行,采用root用户执行.第二种,使用sudo命令临时给用户test赋予root权限.第一种我们就不考虑了,第二种是我们主要的采用方式,但是默认情况下,用户是不具有sudo权限的,这个需要root用户赋予.如果没有进行任何操作,执行sud

[转]linux sudo 命令

转自:http://www.cnblogs.com/xiaochaohuashengmi/archive/2011/11/11/2245341.html “Sudo”是Unix/Linux平台上的一个非常有用的工具,它允许系统管理员分配给普通用户一些合理的“权利”,让他们执行一些只有超级用户或其他 特许用户才能完成的任务,比如:运行一些像mount,halt,su之类的命令,或者编辑一些系统配置文件,像/etc/mtab,/etc /samba/smb.conf等.这样以来,就不仅减少了root

【转】linux sudo 命令+个人事例

“Sudo”是Unix/Linux平台上的一个非常有用的工具,它允许系统管理员分配给普通用户一些合理的“权利”,让他们执行一些只有超级用户或其他 特许用户才能完成的任务,比如:运行一些像mount,halt,su之类的命令,或者编辑一些系统配置文件,像/etc/mtab,/etc /samba/smb.conf等.这样以来,就不仅减少了root用户的登陆次数和管理时间,也提高了系统安全性. 一. sudo的特点 sudo扮演的角色注定了它要在安全方面格外谨慎,否则就会导致非法用户攫取root权限