最近很多小伙伴都在问在EC2上:找不到sudo节点命令,但没有sudo的节点可以和找不到ecpol.msc这两个问题,那么本篇文章就来给大家详细解答一下,同时本文还将给你拓展bash–sudocat文
最近很多小伙伴都在问在 EC2 上:找不到 sudo 节点命令,但没有 sudo 的节点可以和找不到ecpol.msc这两个问题,那么本篇文章就来给大家详细解答一下,同时本文还将给你拓展bash – sudo cat << EOF>文件不起作用,sudo su、centos执行sudo命令提示找不到该命令怎么办、E09 - 关于 sudo sudo: effective uid is not 0, is sudo installed setuid root?、Linux sudo 命令与其配置文件 /etc/sudoers等相关知识,下面开始了哦!
本文目录一览:- 在 EC2 上:找不到 sudo 节点命令,但没有 sudo 的节点可以(找不到ecpol.msc)
- bash – sudo cat << EOF>文件不起作用,sudo su
- centos执行sudo命令提示找不到该命令怎么办
- E09 - 关于 sudo sudo: effective uid is not 0, is sudo installed setuid root?
- Linux sudo 命令与其配置文件 /etc/sudoers
在 EC2 上:找不到 sudo 节点命令,但没有 sudo 的节点可以(找不到ecpol.msc)
我刚刚在一个新的 EC2 微型实例上安装了 nodejs。
我正常安装了,./configure -> make -> sudo make install。
问题:当我在 ec2-user 下运行“node”时,它运行良好。当我运行“sudo node”时,它失败了。
我发现该节点位于:
[ec2-user@XXXX ~]$ whereis nodenode: /usr/local/bin/node /usr/local/lib/node
当前路径是
[ec2-user@XXXX ~]$ echo $PATH/usr/local/bin:/bin:/usr/bin:/opt/aws/bin:/home/ec2-user/bin
但是,sudo 路径是
[root@ip-10-112-222-32 ~]# echo $PATH/usr/local/sbin:/sbin:/bin:/usr/sbin:/usr/bin:/opt/aws/bin:/root/bin
然后我尝试编辑根路径以包含节点的路径,因此当我以 root 身份登录时“节点”运行 - 但当我以 ec2-user 身份登录并运行“sudo node”时它仍然无法工作.
我需要这个来正确安装 npm。关于在运行“sudo node”时如何包含节点路径的任何想法?
答案1
小编典典是的,这有点烦人,但您可以通过一些链接修复它:
sudo ln -s /usr/local/bin/node /usr/bin/nodesudo ln -s /usr/local/lib/node /usr/lib/nodesudo ln -s /usr/local/bin/npm /usr/bin/npmsudo ln -s /usr/local/bin/node-waf /usr/bin/node-waf
可能还有更多,但这就是我到目前为止所遇到的全部。缺少 node-waf 会导致某些npm
安装失败并显示相当神秘的错误消息。
bash – sudo cat << EOF>文件不起作用,sudo su
sudo cat << EOF > /etc/yum.repos.d/some-name.repo #Content #.... #... EOF
它抱怨:
-bash: /etc/yum.repos.d/some-name.repo: Permission denied
然后我做了sudo su,尝试了除猫之前的sudo完全相同的东西,它没有任何问题.在上面我缺少什么?
sudo bash -c 'cat << EOF > /etc/yum.repos.d/some-name.repo line1 line2 line3 EOF'
centos执行sudo命令提示找不到该命令怎么办
首先切换到root用户, 以root用户身份来编辑文件/etc/sudoers:
# vim /etc/sudoers
接着找到Defaults env_reset, 将其改为Defaults !env_reset,然后wq!强制保存退出。
然后, 切换回普通用户如用户名为xx, 编辑用户根目录下的配置文件~/.bashrc
# su xx $ vim .bashrc
在文件内最后追加
alias sudo='sudo env PATH=$PATH'
最后, 使配置文件生效
$ source ~/.bashrc
推荐教程:centos/" target="_blank">centos教程
以上就是
E09 - 关于 sudo sudo: effective uid is not 0, is sudo installed setuid root?
参考文档:https://www.cnblogs.com/ImJerryChan/p/6667819.html
解决办法 1
如果用普通用户切换 root 权限 :sudo: effective uid is not 0, is sudo installed setuid root?
用 ls -l /usr/bin/sudo, 会发现该文件会显示红色,并且所有者是 root,就是 uid 为 0 的用户。并且该所有的执行为设置为 s(SUID),意思是执行该程序的用户将暂时获得所有者即 root 账户的权限。
原理是:sudo 会检查 /etc/sudoers 里面是否定义了当前用户对某条命令的使用定义,例如如果你用了:sudo useradd user1, 那么 sudo 会检查 user1 是否有 useradd 的使用权限定义。如果有,就会暂时提升 user1 的权限为 root 权限来执行 useradd 操作。否则,就会拒绝执行。
解决办法:
chown root.root /usr/bin/sudo
chmod u+s /usr/bin/sudo 如果还报错则
chmod go-w /usr/libexec/sudoers.so
解决办法 2
主要是运用到一条命令 yum reinstall `rpm -qf /usr/bin/sudo`
Linux sudo 命令与其配置文件 /etc/sudoers
对 linux 有一定了解的人多少也会知道点关于 sudo 命令。sudo 命令核心思想是权限的赋予 ,即某个命令的所属用户不是你自己,而你却有权限执行它。但是我们需要注意的是,虽然你有权限执行这个命令,但是在执行的时候却仍是以这个命令本身所属用户来完成的 [注释 1]。(su 命令类似 sudo 命令,但是两者的差别在于前者 su 是一个粗粒度权限赋予,对 su 最好的理解我觉得是 change user running command permanent。即永久的切换到了 su 过去的用户,然后以这个 su 到的新用户干它能干的一切事情,而 sudo 则是指在执行某个命令的时候临时切换到这个命令的所属用户执行 [注释 1],而且 sudo 可以做到以单个命令为单位将权限赋予给其他用户,相比 su 显得更加灵活。)
大概了解了 sudo 的功能,那么你知道怎么配置 sudo 吗?下面来简要说明一下:
配置 sudo 的配置文件在 /etc/sudoers 里面,一般通过 visudo 命令来安全打开编辑。查看 /etc/sudoers 的用法可以使用命令: man 5 sudoers。在 /etc/sudoers 文件里面主要包括这两部分:
1. 别名设置
别名主要包括这几种:User_Alias,Host_Alias,Runas_Alias,Cmnd_Alias,分别是用户别名,主机别名,运行用户别名,命令别名。设置这几个别名的命令主要是为了配 置方便,这个很类似 linux 用户群组或是数据库中角色的作用,有了别名便可以批量的赋予权限。
设置方法 Alias_Type alias_name = name1, name2, name3, 例如 User_Alias User1 = user1, user2, user3。其他类型的 alias 设置方法类似。
2. 真正的 sudo entry
这个就是真正配置哪些用户可以使用哪些命令了(你甚至可以不使用别名设置那部分)。
格式为:用户名 (用户别名) 主机名 (主机别名)=[(运行用户或是 Runas_Alias) 可选] [tag 可选] 可以执行的命令 (或 Cmmd_Alias) 这样描述语法很生硬,不易理解,举例子
user1 host1 = /bin/kill # user1 可以在 host1 上使用命令 /bin/kill
user1 host1 = NOPASSWD: /bin/kill # user1 可以在 host1 上使用命令 /bin/kill 同时可以不必输入密码 (这里就是使用了 NOPASSWD
# 这个 tag,默认是 PASSWD)
user1 host1 = NOPASSWD: /bin/kill , PASSWORD: /bin/ls # user1 可以在 host1 上使用命令 /bin/kill 无需输入密码,但是使用 /bin/ls 则需要输入密码
user1 host1 = (opterator) /bin/kill # user1 可以在 host1 上使用命令 /bin/kill 但是必须是以 operator 用户运行这个命令,等价于
# su -u opertor /bin/kill
user1 host1 = (:group_name) /bin/kill # user1 可以在 host1 上使用命令 /bin/kill, 且必须以 group_name 这个用户群组里面的用户来运行。
% group_name host1 = /bin/kill # 所有 group_name 里面的用户都可以在 host1 上执行 /bin/kill (linux 中一般代表整个用户群组用
# %group_name)
xxx ALL=NOPASSWD: /bin/su
在 linux 中每个进程都是有与之相关的 UID,GID,分别为有效 UID, 真实 UID,有效 GID, 真实 GID。有效 UID,GID 是用来判断权限,而真实 UID,GID 是用来记账 (哪个进程属于哪个用户,或记录日志等等)。当配置了 sudo entry 后,有效 UID 里面就包含了这个被配置的用户 UID,因而权限验证的时候就可以通过。
参考文章:
1. Linux 技术管理手册
2. Unix 高级环境编程
今天关于在 EC2 上:找不到 sudo 节点命令,但没有 sudo 的节点可以和找不到ecpol.msc的分享就到这里,希望大家有所收获,若想了解更多关于bash – sudo cat << EOF>文件不起作用,sudo su、centos执行sudo命令提示找不到该命令怎么办、E09 - 关于 sudo sudo: effective uid is not 0, is sudo installed setuid root?、Linux sudo 命令与其配置文件 /etc/sudoers等相关知识,可以在本站进行查询。
本文标签: