我正在bash中为Linux上的应用程序编写安装脚本.
此脚本将一些文件复制到/ usr/bin和/ usr/share中,因此需要由root用户执行,此外它还会在$ HOME目录中为配置文件创建一个隐藏目录.
问题是:如果普通用户想要安装程序,他需要是root用户.但如果他是root用户,$ HOME目录将是/ root /而不是/ home/username.
编辑:当我尝试实施建议的解决方案时发生错误.请查看以下附加信息.如果可以,请帮助我,提前谢谢!
好的,所以我最终得到了我的应用程序来创建和写入最近的文件.
在模拟器上,这非常有效.但是,当我将应用程序上传到手机并尝试adb shell进入手机时.我无法访问手机中包含该文件的目录.
目录是/data/data/cpe495.smartapp/files/.当我尝试更改目录时,它告诉我我没有权限.
我假设这是因为我的手机没有根,而且我不在root帐户中.根植我的手机不是我要做的事情.
有没有办法,我可以创建这个文件并写入它,并能够adb pull从我的手机?这是我创建文件的当前方式:
fOut = tThis.openFileOutput("test.csv", tThis.MODE_APPEND);
Run Code Online (Sandbox Code Playgroud)
提前致谢!!
还是行不通
我已将以下代码添加到我的应用程序中,当我运行它时,当它尝试将文件写入SD卡时,它失败并出现以下错误,请帮助我!
String inFileName = "/data/data/cpe495.smartapp/files/test.csv"; //TODO Use folder/filename
File inFile = new File(inFileName);
try{
FileInputStream fis = new FileInputStream(inFile);
String outFileName = Environment.getExternalStorageDirectory()+"/test.csv"; //TODO Use output filename
OutputStream output = new FileOutputStream(outFileName);
byte[] buffer = new byte[1024];
int length;
while ((length = fis.read(buffer))>0)
output.write(buffer, 0, length);
output.flush();
output.close();
fis.close();
} catch (Exception e) {
e.printStackTrace();
}
Run Code Online (Sandbox Code Playgroud)
04-05 23:20:11.551: WARN/System.err(285): …Run Code Online (Sandbox Code Playgroud) 检查这个简单的样本:
public class Someone{ // [the:A]
}
public class Another{
public class Someone{ // [the:B]
}
public class DoSomething{
**how can I access Someone in root, which is [the:A]**?
}
}
Run Code Online (Sandbox Code Playgroud) 我们如何编写一个shell脚本来成为root?那就是我不想在提示时输入密码,它应该在脚本本身内.我试图制作但未能这样做.如果是的话请尽可能解释.
我在RHEL上有MySQL,还有phpMyAdmin接口.我有正常的MySQL用户访问,我记得但我忘了root密码.
root密码?(我root在O/S上有账号)我写了一个简单的程序
当您运行此程序时,如果您不是root用户,请输入root密码,然后将uid更改为root
if (getuid())
{
char *pass = getpass("");
//how to change uid to root ?
}
Run Code Online (Sandbox Code Playgroud)
root密码时如何将uid更改为root ?
如何检查脚本是否以root权限运行?
我使用以下代码,但它使用linux命令来获取用户ID,因此它不适用于m $ win.是否有独立于平台的方法来处理这个问题?
if { [exec id -u] eq 0 } {
//nice, let us destroy something!
} else {
//sorry. you are not root
}
Run Code Online (Sandbox Code Playgroud) 这是一个linux问题,一直困扰着我.在我的工作linux框(运行RedHat)我试图安装一些Python包.然而,正在发生一些有趣的业务,见下文:
这是我的目标和第一个命令
pip install scrapylib
Run Code Online (Sandbox Code Playgroud)这会创建"权限被拒绝"错误
OSError: [Errno 13] Permission denied: '/usr/local/lib/python2.7/site-packages/scrapylib'
Run Code Online (Sandbox Code Playgroud)我的下意识反应是将"sudo"放在完全相同的命令面前......
sudo pip install scrapylib
Run Code Online (Sandbox Code Playgroud)这会产生这个异常,
sudo: pip: command not found
Run Code Online (Sandbox Code Playgroud)为了解决这个问题,我打字
sudo su - root
Run Code Online (Sandbox Code Playgroud)现在,此命令成功运行100%
pip2.7 install scrapylib
Run Code Online (Sandbox Code Playgroud)最后,我回到了我身边
sudo su - uspowpow
Run Code Online (Sandbox Code Playgroud)谁能向我解释这个现象?我是最近的大学毕业生,只有基本的Linux知识,如果有人能解释为什么在有效命令前面放置"sudo"使其无效,我将非常感激(无论是修复还是知识).
所以我有一个本地Sqlite文件,我试图推送到我的Rooted Android(Nexus 7 2013)设备.我已经证实是植根通过捆绑adb shell,su并看到了#显示,而不是$
我试图运行以下命令:
adb push D:\tfs\MyApp\MyDatabase.db3 /data/data/MyApp/files/MyDatabase.db3
Run Code Online (Sandbox Code Playgroud)
但我一直在努力
无法复制... MyApp .. to ... MyApp ...:权限被拒绝
我已经搜索了互联网,在这里和这里找到了答案,并提出了以下建议:
adb shell su -c "mount -o rw,remount /data"
adb shell su -c "chmod 777 /data"
Run Code Online (Sandbox Code Playgroud)
但即使在运行上述两个命令并运行我的Push命令之后,我仍然会被拒绝权限.
我究竟做错了什么?
尽管很多人都想关闭此职位,但我还是应该问我在做什么错,因为我发疯了,无法找到解决方案。
我已经在Fedora 24中安装了Docker,一切似乎都很好,但是没有它我就无法运行docker命令sudo,这很烦人(至少对我而言)。
我以普通用户(非root用户)身份登录,并且只要运行命令,我就会看到以下消息:
$ docker ps
Cannot connect to the Docker daemon. Is the docker daemon running on this host?
Run Code Online (Sandbox Code Playgroud)
但是,如果只运行,docker我会看到可能的命令列表:-\
我遵循了本指南,并且阅读了很多(这里是一小列):
但是肯定我缺少了什么,有什么可以照亮我的吗?我在这里想念的是什么?我知道问题会变成用户没有权限,/var/run/docker.sock但是解决方法是什么?