标签: sudo

在linux/sys/class/gpio中写入文件的错误

我现在有一个我曾经见过的最糟糕的bug系统,它似乎只有两种可能的解释 -

  • 附加sudo使文件写入即时
  • 或者追加sudo会在执行语句时产生短暂的延迟
  • 或者我不知道我的程序发生了什么

好吧,让我给你一些背景知识.我正在为raspberry pi gpio操作编写一个c ++程序.据我所知,程序中没有明显的错误,因为它成功地与sudo一起工作,并且也成功地延迟了.所以这里是rpi的gpio如何工作 -

  • 首先你要导出一个,保留它进行操作,它将创建一个新目录,gpio+number其中包含几个文件.

    echo 17 > /sys/class/gpio/export

  • 然后设置它的方向(在读取和退出意味着写入)

    echo "out" > /sys/class/gpio/gpio17/direction

  • 然后写入值(0或1表示关闭和打开)

    echo 1 > /sys/class/gpio/gpio17/value

  • 最后,将其取消导出,该目录将被删除.

    echo 17 > /sys/class/gpio/unexport

无论您是通过bash命令还是通过c/c ++或任何其他语言IO执行此操作都无关紧要,因为在unix中这些只是文件,您只需要读取/写入它们即可.到目前为止一切正常.我已经手动测试了它并且它可以工作,所以我的手动测试通过.


现在我为我的程序编写了一个简单的测试,看起来像这样 -

TEST(LEDWrites, LedDevice)
{
    Led led1(17, "MyLED");
    // auto b = sleep(1);
    EXPECT_EQ(true, led1.on());
}
Run Code Online (Sandbox Code Playgroud)

Led类constructor执行导出部分 - echo 17 > /sys/class/gpio/export.on()调用设置方向时 - echo "write" > /sys/class/gpio/gpio17/direction并输出值 - echo 1 > /sys/class/gpio/gpio17/value.忘掉这里的devport,因为它是由析构函数处理的,在这里不起作用.

如果你很好奇,这些函数会像这样处理I/O -

{
    const std::string direction = …
Run Code Online (Sandbox Code Playgroud)

c++ linux sudo file c++11

10
推荐指数
1
解决办法
1596
查看次数

密码错误时为什么`sudo`慢?

当我输入我的密码以获得超级用户权限或登录我的Linux机箱时,如果我输入正确,它会立即返回,授予我访问权限.但是,如果我犯了一些拼写错误,那么在它告诉我密码错误之前需要等待很长时间.通常,我意识到在计算机出现之前很久就搞砸了.

为什么会这样?据我了解,用户密码是加密并存储的/etc/shadow,所以看起来我的输入应该加密,并与我的用户名的文件中的内容进行比较 - 无论我输入正确的密码大致相同或不.是否有一些算法原因,比如它必须检查一堆额外的地方才能确认它是不正确的?或者系统可能很快就知道密码不正确,但必须做很多工作才能跟踪错误的登录尝试.或许它只是试图惩罚我搞砸了.

security encryption passwords sudo

9
推荐指数
1
解决办法
776
查看次数

如果在Bash,我该怎么做?

我需要检查另一个用户的主目录中的目录.通常情况下,我会sudo,但这会产生另一个过程,我也会失去我的环境.

例如,我有:

if [[ -d "/home/otheruser/svn" ]];
then
   echo "SVN exists"
else
   echo "SVN does not exist"
fi
Run Code Online (Sandbox Code Playgroud)

我需要测试条件以root权限运行.

bash shell sudo

9
推荐指数
2
解决办法
7245
查看次数

可以通过 ssh 使用 sudo 进行编辑的文本编辑器?

我正在尝试编辑远程 Amazon EC2 Linux 实例上的文件。我目前只是在使用 nano,但真的很喜欢图形文本编辑器。我有两个问题:

  1. 当我 ssh 进入时,我必须使用 sudo 来编辑这些服务器文件。
  2. 我只能使用亚马逊给我的密钥登录。例如:ssh -i Andrew.pem ec2-user@55.55.44.33

请帮忙!我不挑剔,只是任何图形文本编辑器,因为使用 nano 是一个巨大的痛苦。

ssh sudo remote-access amazon-ec2 remote-server

9
推荐指数
1
解决办法
3万
查看次数

即使使用 sudo,netstat 的 PID/程序名称也是破折号

developer@LinuxKernel:~> sudo netstat -elnopt
developer's password:
Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address           Foreign Address         State       User       Inode       PID/Program name    Timer
tcp        0      0 0.0.0.0:10080           0.0.0.0:*               LISTEN      1003       3061421021 -                   off (0.00/0/0)
Run Code Online (Sandbox Code Playgroud)

根据我的经验,我有权限用sudo检查netstat的PID/程序名称,这个怎么解释,内核是2.6.16.60,net-tools 1.6,netstat 1.42

linux sudo netstat

9
推荐指数
1
解决办法
4554
查看次数

不能从sudo获得Anaconda python

我在Google Cloud Compute环境中安装了Anaconda,可以作为普通用户在shell中成功使用它:

curt@lamp-v5mi:~$ python
Python 2.7.9 |Anaconda 2.2.0 (64-bit)| (default, Mar  9 2015, 16:20:48) 
[GCC 4.4.7 20120313 (Red Hat 4.4.7-1)] on linux2
Type "help", "copyright", "credits" or "license" for more information.
Anaconda is brought to you by Continuum Analytics.
Please check out: http://continuum.io/thanks and https://binstar.org
Run Code Online (Sandbox Code Playgroud)

然而,当我开始翻译时sudo python,anaconda不是使用的翻译,我希望它是.

curt@lamp-v5mi:~$ sudo python
Python 2.7.3 (default, Mar 13 2014, 11:03:55) 
[GCC 4.7.2] on linux2
Type "help", "copyright", "credits" or "license" for more information.
Run Code Online (Sandbox Code Playgroud)

令人困惑的是,当我以root身份启动shell 然后启动解释器时,anaconda 就是使用的解释器.

curt@lamp-v5mi:~$ sudo …
Run Code Online (Sandbox Code Playgroud)

python linux sudo anaconda

9
推荐指数
1
解决办法
8436
查看次数

在sudoing时失踪成为密码

当我尝试在我的Ansible playbook中使用sudo运行任务时,我看到一条错误消息.

这是我的剧本:

---
- hosts: production
  gather_facts: no
  remote_user: deployer
  become: yes
  become_method: sudo
  become_user: root

  tasks:
    - name: Whoami
      command: /usr/bin/whoami
Run Code Online (Sandbox Code Playgroud)

我希望whoami成为root但任务失败并显示错误消息:

» ansible-playbook -i ansible_hosts sudo.yml --ask-sudo-pass
SUDO password: [I paste my sudo password here]

PLAY [production] *************************************************************

GATHERING FACTS ***************************************************************
fatal: [MY.IP] => Missing become password

TASK: [Whoami] ****************************************************************
FATAL: no hosts matched or all hosts have already failed -- aborting
Run Code Online (Sandbox Code Playgroud)

当我手动ssh到框中并尝试sudo它按预期工作:

» ssh deployer@production
» sudo whoami
[I paste the same sudo password] …
Run Code Online (Sandbox Code Playgroud)

sudo ansible

9
推荐指数
1
解决办法
3087
查看次数

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}

更改默认目录权限.现在因为我不得不在这里sudo npm,我跑了

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

发布这个,每当我尝试使用sudo时,我都会收到此错误 -

sudo: effective uid is not 0, is sudo installed setuid root?
Run Code Online (Sandbox Code Playgroud)

据我所知,我对npm的设置本来应该更好,而且是root用户,但我是Linux新手.

任何帮助,将不胜感激.:)

更多信息 -

ls -l $(which sudo) 给=> ---s--x--x. 1 dev root 123832 Aug 13 2015 /usr/bin/sudo

linux sudo centos node.js npm

9
推荐指数
2
解决办法
3万
查看次数

在使用 sudo bash 运行的脚本中运行没有 sudo 的特定命令

我有一个bash正在运行的脚本sudosudo NewScript

在脚本中,我有一个git不想运行的命令sudo。目前,由于整个脚本是用sudo这个命令运行sudo的,所以我想抑制它。

这样的事情是可能的还是我需要在没有命令的情况下运行脚本sudosudo为除git命令之外的脚本中的每个命令添加?

git bash shell ubuntu sudo

9
推荐指数
2
解决办法
6881
查看次数

如何在 Heroku 上以 root 身份运行?

我尝试使用sudo在 Heroku 上运行命令。然后我收到一条消息,说我无法在 Heroku 上使用 sudo 命令。我真正的问题是:如何在 Heroku 上运行具有 root 权限的命令,因为我尝试运行的某些命令需要它?

sudo heroku root heroku-toolbelt heroku-cli

9
推荐指数
1
解决办法
6284
查看次数