如何把Android当普通Linux用在需要时再去启动它的各项服务
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何把Android当普通Linux用在需要时再去启动它的各项服务相关的知识,希望对你有一定的参考价值。
android的启动过程可以分为两个阶段:第一阶段是Linux的启动。第二阶段是Android的启动。比如先启动servicemanager ,再启动zygote服务进程,最终启动整个Framework和其它应用程序。那么我们可不可以这样:1. 启动Linux将它作为普通的Linux使用。2. 在需要的时候(比如需要运行一个apk),才去启动android(包括servicemanager、zygote及之后的一切)换句话说:1. 当我运行普通的Linux程序时,由于资源限制,我不想同时启动整个庞大的Android后台(包括Service Manger, System Server, 以及Zygote等等)2. 当我需要运行一个Android应用程序的时候,我再去启动Android(它上层的东西)。请教高手这种思路是否行得通,如果可以大概的思路是什么?谢谢。
参考技术A 谢谢两位的回复。时间长一点没有太大关系,只是现在思考这种方法的可行性。比如一点,正常的Android启动都是Init进程来做,那么如果以普通的用户进程启用会不会有问题。 参考技术B linux只是底层的驱动而已 android调用底层 linux可以单独启动 好比刷机 参考技术C 让我联想到了windows的服务启动类型:自动-手动-已禁用 参考技术D 那运行第一个Android应用程序时等的时间会不会很长呢?Linux下如何配置普通用户的sudo命令权限?
背景
在Linux系统操作时,通常不会直接采用root用户。但当某些命令需要root权限执行时,往往会通过sudo
命令提升当前用户的执行权限来完成。
如果普通用户并未进行配置相应的配置,则在使用sudo
命令时会提示“xxx 不在 sudoers 文件中。此事将被报告。“
本篇文章就带大家实践一下如何对普通用户配置sudo
命令执行的权限。
sudo命令权限配置
sudo
的英文全称是 super user do
,即以超级用户(root 用户)的方式执行命令。用户是否拥有sudo
命令的执行权限,要看是否在于 /etc/sudoers
文件进行了设置。
/etc/sudoers
是一个文本文件,有其特定的语法,不要直接用 vim
或者 vi
来进行编辑,而是采用 visudo
命令。需要注意的是只有root用户有该命令的执行权限。
切换到root用户,命令行输入 visudo
,即可直接进入/etc/sudoers
的编辑页面。
[root@iZ2zedonrtl5m2zsh6tr1xZ ~]# visudo
忽略掉其他配置信息,直接查看底部如下信息:
# User privilege specification
root ALL=(ALL:ALL) ALL
# Members of the admin group may gain root privileges
%admin ALL=(ALL) ALL
# Allow members of group sudo to execute any command
%sudo ALL=(ALL:ALL) ALL
# See sudoers(5) for more information on "#include" directives:
#includedir /etc/sudoers.d
ubuntu ALL=(ALL:ALL) NOPASSWD: ALL
解释下每一列的含义:
- 第一列表示用户名,如
root
、ubuntu
等; - 第二列,等号左边的
ALL
表示允许从任何主机登录当前的用户账户; - 第二列,等号右边的
ALL
表示:第一列的用户可以切换到系统中任何一个其它用户; - 第三列,
ALL
表示:第一列的用户能以root用户的身份下达什么命令,ALL
表示可以下达任何命令。 - ubuntu用户第三列有一个
NOPASSWD
关键字,表明ubuntu用户在请求sudo
时不需要输入密码。
如果你的用户在切换时,如果出现”不在 sudoers 文件中“的警告信息,那么核查一下,对应的用户应该没有在该文件中进行配置,因此也无法使用 sudo
命令。
参考ubuntu用户的配置,将需要提升权限的用户(比如test_user)添加到 /etc/sudoers
文件中:
test_user ALL=(ALL:ALL) ALL # test_user 使用sudo需要提供test_user的密码
上面配置在执行sudo时需要提供密码,那么不需要提供密码配置方式如下:
test_user ALL=(ALL:ALL) NOPASSWD:ALL # test_user 使用sudo需要提供test_user的密码
添加完毕,esc退出编辑,执行:wq
,退出并保存。
此时切换到test_user用户,执行需要root权限的命令时,前面添加sudo即可。
[test_user@iZ2zedonrtl5m2zsh6tr1xZ ~]$ sudo docker ps -a
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
903734808a1e hello-world "/hello" About an hour ago Exited (0) About an hour ago happy_jennings
可以看到,现在 sudo
命令已经可以正常使用了。
小结
针对普通用户临时提升权限执行命令的场景,只需在 /etc/sudoers
文件中进行配置即可。网络上也有其他的配置方案,但未使用visudo
命令,而是先对 /etc/sudoers
文件进行全变更,然后再进行修改,最后再将权限变更回去。虽然也能实现同样的修改功能,但绕的太远了。读完这篇文章的朋友,现在你已经解锁了新的、更方便的命令。
博主简介:《SpringBoot技术内幕》技术图书作者,酷爱钻研技术,写技术干货文章。
公众号:「程序新视界」,博主的公众号,欢迎关注
技术交流:请联系博主微信号:zhuan2quan
以上是关于如何把Android当普通Linux用在需要时再去启动它的各项服务的主要内容,如果未能解决你的问题,请参考以下文章