我现在有一个我曾经见过的最糟糕的bug系统,它似乎只有两种可能的解释 -
好吧,让我给你一些背景知识.我正在为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) 当我输入我的密码以获得超级用户权限或登录我的Linux机箱时,如果我输入正确,它会立即返回,授予我访问权限.但是,如果我犯了一些拼写错误,那么在它告诉我密码错误之前需要等待很长时间.通常,我意识到在计算机出现之前很久就搞砸了.
为什么会这样?据我了解,用户密码是加密并存储的/etc/shadow,所以看起来我的输入应该加密,并与我的用户名的文件中的内容进行比较 - 无论我输入正确的密码大致相同或不.是否有一些算法原因,比如它必须检查一堆额外的地方才能确认它是不正确的?或者系统可能很快就知道密码不正确,但必须做很多工作才能跟踪错误的登录尝试.或许它只是试图惩罚我搞砸了.
我需要检查另一个用户的主目录中的目录.通常情况下,我会sudo,但这会产生另一个过程,我也会失去我的环境.
例如,我有:
if [[ -d "/home/otheruser/svn" ]];
then
echo "SVN exists"
else
echo "SVN does not exist"
fi
Run Code Online (Sandbox Code Playgroud)
我需要测试条件以root权限运行.
我正在尝试编辑远程 Amazon EC2 Linux 实例上的文件。我目前只是在使用 nano,但真的很喜欢图形文本编辑器。我有两个问题:
请帮忙!我不挑剔,只是任何图形文本编辑器,因为使用 nano 是一个巨大的痛苦。
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
我在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) 当我尝试在我的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) 我找到了另一个标题相同的问题,但是,我想我的情况有点不同.
在尝试设置新项目时,我需要安装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
我有一个bash正在运行的脚本sudo:sudo NewScript
在脚本中,我有一个git不想运行的命令sudo。目前,由于整个脚本是用sudo这个命令运行sudo的,所以我想抑制它。
这样的事情是可能的还是我需要在没有命令的情况下运行脚本sudo并sudo为除git命令之外的脚本中的每个命令添加?
我尝试使用sudo在 Heroku 上运行命令。然后我收到一条消息,说我无法在 Heroku 上使用 sudo 命令。我真正的问题是:如何在 Heroku 上运行具有 root 权限的命令,因为我尝试运行的某些命令需要它?