GVKun编程网logo

正在获取消息“ sudo:必须是setuid root”,但sudo已由root拥有(正在获取root权限)

10

在本文中,我们将为您详细介绍正在获取消息“sudo:必须是setuidroot”,但sudo已由root拥有的相关知识,并且为您解答关于正在获取root权限的疑问,此外,我们还会提供一些关于3.7su

在本文中,我们将为您详细介绍正在获取消息“ sudo:必须是setuid root”,但sudo已由root拥有的相关知识,并且为您解答关于正在获取root权限的疑问,此外,我们还会提供一些关于3.7 su命令 3.8 sudo命令 3.9 限制root远程登录、Android Studio是否应该在sudo上运行sudo、CentOS错误 – sudo:有效的uid不是0,是sudo安装的setuid root?、crontab不能执行sudo:抱歉,您必须拥有一个终端来执行 sudo的有用信息。

本文目录一览:

正在获取消息“ sudo:必须是setuid root”,但sudo已由root拥有(正在获取root权限)

正在获取消息“ sudo:必须是setuid root”,但sudo已由root拥有(正在获取root权限)

我正在尝试运行sudo,但失败了:

gregd@david $ sudo lssudo: must be setuid rootgregd@david $ which sudo/usr/bin/sudogregd@david $ ll /usr/bin/sudo-rwxr-xr-x 1 root root 165K 2012-05-16 00:25 /usr/bin/sudo*

对于如何解决这个问题,有任何的建议吗?

答案1

小编典典

您必须能够以root用户身份登录,但是如果可以的话,您可以运行此命令

chmod u+s /usr/bin/sudo

并解决问题

3.7 su命令 3.8 sudo命令 3.9 限制root远程登录

3.7 su命令 3.8 sudo命令 3.9 限制root远程登录

3.7 su命令

su - 切换会默认切换到最先登录用户,会完全的切换到用户下
su 用户名 会切换用户但不会切换环境变量
su 并不是为了切换用户使用,而是为了切换到某个用户下执行对应命令
使用方法 su - -c “命令” 在那个用户需执行的命令
例:

su - -c "touch /tmp/aming.111" aming 

/etc/skel 模板目录
切换到不存在家目录的用户下会显示成

-bash-4.2$

正常情况下:

[root@aminglinux-01 ~]#

普通用户的命令提示行以 $ 结尾
超级用户的命令提示行以 # 结尾

3.8 sudo命令

因为su切换用户的时候涉及到需要先知道root 的密码,有不安全的隐患,所有就有了在不知道或不使用root密码时候用的工具 sudo
为了是系统更加安全,sudo他可以让普通用户临时去执行一条命令,以指定用户的身份去执行;通常都是以普通用户授权root的身份\

可以使用 visudo (vi /etc/sudoers 也可以)进行编辑新增这个规则,,前提你得有root权限,新增规则,有对用户,对组,等 编辑配置文件:可以使用 / 快速搜索关键字
visudo如果有语法错误,他是可以检查到的

## Allow root to run any commands anywhere
root    ALL=(ALL)       ALL
aming   ALL=(ALL)       /usr/bin/ls, /usr/bin/mv, /usr/bin/cat
user5   ALL=(ALL)       NOPASSWD: /usr/bin/ls, /usr/bin/mv, /usr/bin/cat

解释:
让aming用户拥有root的权限,去执行/usr/bin/ls,/usr/bin/mv,/usr/bin/cat;
让user5用户拥有root的权限,去执行/usr/bin/ls,/usr/bin/mv,/usr/bin/cat;且不需要输入命令
修改完毕,现在可以用aming帐号登录,然后用命令sudo ,使用ls,mv,cat命令进行操作,第一次执行需要输入指定用户的密码\

例:

sudo /usr/bin/ls /root   
sudo ls /root

用户别名:

# User_Alias ADMINS = jsmith, mikem

ADMINS虚拟用户,

命令的别名:

# Cmnd_Alias

例:

Cmnd_Alias ADMING_CMD = /usr/bin/ls, /usr/bin/mv, /usr/bin/cat

启用别名以后,用户授权的地方就用使用ADMING_CMD这个代替运行命令的绝对路径 例:

## Allow root to run any commands anywhere
root    ALL=(ALL)       ALL
aming   ALL=(ALL)       ADMING_CMD
user5   ALL=(ALL)       NOPASSWD: ADMING_CMD

进行组的限制 例:

## Allows people in group wheel to run all commands
%wheel ALL=(ALL) ALL

然后修改用户,使其属于root组(wheel) 命令如下:

#usermod -g root aming

修改完毕,现在可以用tommy帐号登录,然后用命令su – ,即可获得root权限进行操作。
单独授权某条命令以后会相对的安全很多
==:set nu 可以查看文件的行数==

3.9 限制root远程登录

  • 逻辑概念:
  1. 首先 root不能登录
  2. 只允许登录普通用户
  3. 普通用户登录之后 su 登录 root
  4. root密码是保密的,是没办法知道的
  5. 这时候就需要用sudo 去执行 su
  • 修改访问规则:
# User_Alias ADMINS = jsmith, mikem
User_Alias AMINGS = aming, user5, user6

设置了用户的Alias

## Allow root to run any commands anywhere
root    ALL=(ALL)       ALL
AMINGS ALL=(ALL)   NOPASSWD: /usr/bin/su

让AMINGS 用户组群 拥有root权限 去执行 /usr/bin/su,且不需要输入密码

  • 限制root用户远程登录
vi /etc/ssh/sshd_config
PermitRootLogin no    不允许远程登录
保存退出
systemtl restart sshd.service       重启服务

最终结果:不能登录root,但可以使用 sudo su - root 登录root

Android Studio是否应该在sudo上运行sudo

Android Studio是否应该在sudo上运行sudo

当我需要使用Standalone SDK Manager下载新的Build-tools时,我遇到了问题.它说它没有权限等 – 所以我用sudo运行./studio.sh,这解决了问题.

我还没有遇到更多问题,但是在Linux上运行Android Studio的正确方法是什么 – 有没有sudo权限?如果没有它,我不希望授予它权利.

简而言之,Android Studio位于/ opt / android-studio / …
和〜/ Android / Sdk / …的SDK(根据我的理解,这不应该需要root权限?)

UPDATE
如果在没有sudo的情况下运行并且只是尝试构建项目,我会一直遇到访问错误.

Could not read path
‘/home/fakepath/app/build/intermediates/exploded-aar/com.google.maps.android/android-maps-utils/0.4.4/jni’

解决方法:

到目前为止,我找到了最好的解决方案,对我来说,这是一个建设性的答案:

> sudo for Android Studio?

It’s usually good to minimize the programs you need to run as root. – @Kyle

在没有sudo的情况下运行Android Studio
>仅适用于SDK Manager的sudo

You can run just the SDK manager by running the shell script “android” in the android-sdk/tools folder
sudo sh /opt/android-sdk/tools/android – @Kyle

需要更新时,单独启动SDK Manager
>授予文件访问权限

if you wanted to run it as your own user, you Could do that by changing ownership of the entire /opt/android-studio directory (recursively) – @matias elgart

sudo chown -R youruser:youruser /home/fakepath/app – @num8er

所以在我的情况下,我已经更改了Android Studio的Android SDK文件夹的所有权,以便毫无问题地获取文件.这解决了我的问题:

sudo chown -R myusername:myusername ~/fakepath/Android/Sdk/

CentOS错误 – sudo:有效的uid不是0,是sudo安装的setuid root?

CentOS错误 – sudo:有效的uid不是0,是sudo安装的setuid root?

我用同样的标题发现了另一个问题,但是,我想我的情况有点不同。

为了设置新项目,我需要安装nodejs。 我意识到它只在与sudo一起使用时才起作用。 例如。 sudo npm

此外,我访问了链接https://docs.npmjs.com/getting-started/fixing-npm-permissions并执行

sudo chown -R $(whoami) $(npm config get prefix)/{lib/node_modules,bin,share}

Rsync:删除,但不要删除.svn子目录

使用gdb 7支持debuggingPython程序需要什么?

相同的xpath在Centos,Ubuntu上返回不同的值

如何在centOS中打开端口

xz压缩安装在centos上

更改默认的目录权限。 现在因为我也必须在这里申请npm,所以我跑了

sudo chown -R $(whoami) $(sudo npm config get prefix)/{lib/node_modules,share}

发布这个,每当我尝试使用sudo,我得到这个错误 –

sudo: effective uid is not 0,is sudo installed setuid root?

我知道我的npm设置本应该更好,但是我是Linux新手。

任何帮助,将不胜感激。

crontab不能执行sudo:抱歉,您必须拥有一个终端来执行 sudo

crontab不能执行sudo:抱歉,您必须拥有一个终端来执行 sudo

最近做一个可执行shell调度的需求,要求用户输入shell,然后后台定时调度运行。实现大致为:保存用户的输入,设定时间,crontab定时执行用户的输入。但这里涉及到一个安全问题,如何确定用户的输入是安全的?

最初的想法是过滤危险命令,比如rm -rf /之类的。后来,索性把用户的命令丢到一个特殊文件内,以一个权限很小的用户去执行用户命令就好了。

于是写好的脚本大致如下

sudo runuser -l etl_shell -m -c "
    function make_dir(){
        local dir_name=\$1
        if [ ! -d \$dir_name  ];then
          mkdir -p \$dir_name
        else
            echo dir \${dir_name} exist
        fi
    }
    function touch_file(){
        local file_name=\$1
        if [ ! -f \$file_name  ];then
          touch \$file_name
        else
            echo file \${file_name} exist
        fi
    }
    make_dir $script_temp;
    touch_file ${script_file}
    echo \"$tar_command\" > ${script_file};
    chmod 700 ${script_file};
    sh ${script_file};
    "

手动执行没有问题,命令确实以另一个用户执行了。添加到定时任务crontab。结果发现运行失败,错误是:

udo:抱歉,您必须拥有一个终端来执行 sudo

不允许非终端执行sudo,那只能以root用户来做这件事。而我又没有root用户,只好修改这个规则,允许crontab 执行sudo

找到/etc/sudoers

#
# Disable "ssh hostname sudo <cmd>", because it will show the password in clear. 
#         You have to run "ssh -t hostname sudo <cmd>".
#
#Defaults    requiretty

#
# Refuse to run if unable to disable echo on the tty. This setting should also be
# changed in order to be able to use sudo without a tty. See requiretty above.
#
#Defaults   !visiblepw

注释掉这两个就好了。

关于正在获取消息“ sudo:必须是setuid root”,但sudo已由root拥有正在获取root权限的问题就给大家分享到这里,感谢你花时间阅读本站内容,更多关于3.7 su命令 3.8 sudo命令 3.9 限制root远程登录、Android Studio是否应该在sudo上运行sudo、CentOS错误 – sudo:有效的uid不是0,是sudo安装的setuid root?、crontab不能执行sudo:抱歉,您必须拥有一个终端来执行 sudo等相关知识的信息别忘了在本站进行查找喔。

本文标签: