android用户用户组
Ⅰ Android的权限都有哪些
区分apk运行时的拥有的权限与在文件系统上被访问(读写执行)的权限两个概念。
apk程序是运行在虚拟机上的,对应的是Android独特的权限机制,只有体现到文件系统上时才使用linux的权限设置。
(一)linux文件系统上的权限
-rwxr-x--x system system 4156 2010-04-30 16:13 test.apk
代表的是相应的用户/用户组及其他人对此文件的访问权限,与此文件运行起来具有的权限完全不相关。
比如上面的例子只能说明system用户拥有对此文件的读写执行权限;system组的用户对此文件拥有读、执行权限;其他人对此文件只具有执行权限。
而test.apk运行起来后可以干哪些事情,跟这个就不相关了。
千万不要看apk文件系统上属于system/system用户及用户组,或者root/root用户及用户组,就认为apk具有system或root权限
(二)Android的权限规则
(1)Android中的apk必须签名
这种签名不是基于权威证书的,不会决定某个应用允不允许安装,而是一种自签名证书。
重要的是,android系统有的权限是基于签名的。比如:system等级的权限有专门对应的签名,签名不对,权限也就获取不到。
默认生成的APK文件是debug签名的。
获取system权限时用到的签名,见:如何使Android应用程序获取系统权限
(2)基于UserID的进程级别的安全机制
大家都知道,进程有独立的地址空间,进程与进程间默认是不能互相访问的,是一种很可靠的保护机制。
Android通过为每一个安装在设备上的包(apk)分配唯一的linux userID来实现,名称为"app_"加一个数字,比如app_43
不同的UserID,运行在不同的进程,所以apk之间默认便不能相互访问。
Android提供了如下的一种机制,可以使两个apk打破前面讲的这种壁垒。
在AndroidManifest.xml中利用sharedUserId属性给不同的package分配相同的userID,通过这样做,两个package可以被当做同一个程序,
系统会分配给两个程序相同的UserID。当然,基于安全考虑,两个package需要有相同的签名,否则没有验证也就没有意义了。
(这里补充一点:并不是说分配了同样的UserID,两程序就运行在同一进程, 下面为PS指令摘取的,
显然,system、app_2分别对应的两个进程的PID都不同,不知Android到底是怎样实现它的机制的)
User PID PPID
system 953 883 187340 55052 ffffffff afe0cbcc S system_server
app_2 1072 883 100264 19564 ffffffff afe0dcc4 S com.android.inputmethod.
system 1083 883 111808 23192 ffffffff afe0dcc4 S android.process.omsservi
app_2 1088 883 156464 45720 ffffffff afe0dcc4 S android.process.acore
(3)默认apk生成的数据对外是不可见的
实现方法是:Android会为程序存储的数据分配该程序的UserID。
借助于Linux严格的文件系统访问权限,便实现了apk之间不能相互访问似有数据的机制。
例:我的应用创建的一个文件,默认权限如下,可以看到只有UserID为app_21的程序才能读写该文件。
-rw------- app_21 app_21 87650 2000-01-01 09:48 test.txt
如何对外开放?
<1> 使用MODE_WORLD_READABLE and/or MODE_WORLD_WRITEABLE 标记。
When creating a new file with getSharedPreferences(String, int), openFileOutput(String, int), or openOrCreateDatabase(String, int, SQLiteDatabase.CursorFactory), you can use the MODE_WORLD_READABLE and/or MODE_WORLD_WRITEABLE flags to allow any other package to read/write the file. When setting these flags, the file is still owned by your application, but its global read and/or write permissions have been set appropriately so any other application can see it.
(4)AndroidManifest.xml中的显式权限声明
Android默认应用是没有任何权限去操作其他应用或系统相关特性的,应用在进行某些操作时都需要显式地去申请相应的权限。
一般以下动作时都需要申请相应的权限:
A particular permission may be enforced at a number of places ring your program's operation:
At the time of a call into the system, to prevent an application from executing certain functions.
When starting an activity, to prevent applications from launching activities of other applications.
Both sending and receiving broadcasts, to control who can receive your broadcast or who can send a broadcast to you.
When accessing and operating on a content provider.
Binding or starting a service.
在应用安装的时候,package installer会检测该应用请求的权限,根据该应用的签名或者提示用户来分配相应的权限。
在程序运行期间是不检测权限的。如果安装时权限获取失败,那执行就会出错,不会提示用户权限不够。
大多数情况下,权限不足导致的失败会引发一个 SecurityException, 会在系统log(system log)中有相关记录。
(5)权限继承/UserID继承
当我们遇到apk权限不足时,我们有时会考虑写一个linux程序,然后由apk调用它去完成某个它没有权限完成的事情,很遗憾,这种方法是行不通的。
前面讲过,android权限是经营在进程层面的,也就是说一个apk应用启动的子进程的权限不可能超越其父进程的权限(即apk的权限),
即使单独运行某个应用有权限做某事,但如果它是由一个apk调用的,那权限就会被限制。
实际上,android是通过给子进程分配父进程的UserID实现这一机制的。
(三)常见权限不足问题分析
首先要知道,普通apk程序是运行在非root、非system层级的,也就是说看要访问的文件的权限时,看的是最后三位。
另外,通过system/app安装的apk的权限一般比直接安装或adb install安装的apk的权限要高一些。
言归正传,运行一个android应用程序过程中遇到权限不足,一般分为两种情况:
(1)Log中可明显看到权限不足的提示。
此种情况一般是AndroidManifest.xml中缺少相应的权限设置,好好查找一番权限列表,应该就可解决,是最易处理的情况。
有时权限都加上了,但还是报权限不足,是什么情况呢?
Android系统有一些API及权限是需要apk具有一定的等级才能运行的。
比如 SystemClock.setCurrentTimeMillis()修改系统时间,WRITE_SECURE_SETTINGS权限好像都是需要有system级的权限才行。
也就是说UserID是system.
(2)Log里没有报权限不足,而是一些其他Exception的提示,这也有可能是权限不足造成的。
比如:我们常会想读/写一个配置文件或其他一些不是自己创建的文件,常会报java.io.FileNotFoundException错误。
系统认为比较重要的文件一般权限设置的也会比较严格,特别是一些很重要的(配置)文件或目录。
如
-r--r----- bluetooth bluetooth 935 2010-07-09 20:21 dbus.conf
drwxrwx--x system system 2010-07-07 02:05 data
dbus.conf好像是蓝牙的配置文件,从权限上来看,根本就不可能改动,非bluetooth用户连读的权利都没有。
/data目录下存的是所有程序的私有数据,默认情况下android是不允许普通apk访问/data目录下内容的,通过data目录的权限设置可知,其他用户没有读的权限。
所以adb普通权限下在data目录下敲ls命令,会得到opendir failed, Permission denied的错误,通过代码file.listfiles()也无法获得data目录下的内容。
上面两种情况,一般都需要提升apk的权限,目前我所知的apk能提升到的权限就是system(具体方法见:如何使Android应用程序获取系统权限),
Ⅱ 安卓开发 所有者 用户组问题
可以用SharedPreferences提供全局读。
Ⅲ 常用android图形用户界面组件有哪些怎样创建
常用的有
TextView EditText Button ImageView Dialog ListView GridView
以及用来包含这些的Layout
常用的Layout有LinearLayout RelativeLayout FrameLayout
单纯的创建一般都是采用new XXX(context);这样的方式,或是在xml里进行配置
<Button
android:width = "match_parent"
android:height="wrap_content"
/>
多看一些android的视频和sdk中自带的apiDemo会更容易理解
Ⅳ 怎样修改安卓手机文件权限,所有者和用户组
1.首先在内存卡中选中该文件,选择移动
2.进入到system文件夹内,在右上角选择“加载为读写”,粘贴该文件
3.选中该文件,在弹出的菜单中,选择属性,查看该文件当前的属性,如下图所示,很显然,和系统文件的权限、所有者和用户组不同,需要进行下面的修改。
4.长按该文件,在弹出的菜单中选中“权限”
5.在打开的权限页,即可看到该文件当前的权限
6.修改其中的读写框,修改为和系统文件的权限相同,确定
7.长安该文件,在弹出的菜单中选中“更改所有者”
8.在弹出的页面中,即可看到该文件所属的所有者和用户组
9.分别在所有者和用户组的下拉菜单中选择为0-root
10.长按该文件,查看该文件的属性,即可看到该文件修改后的权限、所有者和用户组,此时,已和系统文件的属性相同了。
Ⅳ 安卓 所有者 用户组 0 - root 1000 - system
所有者拥有最大的权限,但对于部分文件,所有者与用户组权限相同。大多数系统文件不允许用户组写入。
对于所有者 用户组 0 - root 1000 - system的文件来说,一般不取得root权限是不能进行更改所有者/用户组的。
二者关系不同,所有者用户组指的是拥有权力的单位/系统,rw-r--r指具体权限(用户组只可读取不可写入),对应于本用户-所在组-其他人的权限。对于0 - root 1000 - system不能进行修改。
Ⅵ 安卓手机设置里面的“用户和账户”是干啥的
用户与账号就是你的手机号和用户名现在手机都跟电脑一样可以设置一个用户名和密码登录账户改密码或者挂失可以防止手机丢失以后被坏人利用。
安卓(Android)是一种基于Linux内核(不包含GNU组件)的自由及开放源代码的操作系统。主要使用于移动设备,如智能手机和平板电脑,由美国Google公司和开放手机联盟领导及开发。
Android操作系统最初由Andy Rubin开发,主要支持手机。2005年8月由Google收购注资。2007年11月,Google与84家硬件制造商、软件开发商及电信营运商组建开放手机联盟共同研发改良Android系统。随后Google以Apache开源许可证的授权方式,发布了Android的源代码。
Android一词的本义指“机器人”,同时也是Google于2007年11月5日宣布的基于Linux平台的开源手机操作系统的名称,该平台由操作系统、中间件、用户界面和应用软件组成。
Android一词最早出现于法国作家利尔亚当(Auguste Villiers de l'IsleAdam)在1886年发表的科幻小说《未来夏娃》(L'èvefuture)中。他将外表像人的机器起名为Android。
Ⅶ Android 的权限管理是怎么实现的
根据用户的使用过程体验,可以将 Android 涉及的权限大致分为如下三类:
(1)Android 手机所有者权限:自用户购买 Android 手机后,用户不需要输入任何密码,就具有安装一般应用软件、使用应用程序等的权限;
(2)Android root 权限:该权限为 Android 系统的最高权限,可以对所有系统中文件、数据进行任意操作。出厂时默认没有该权限,需要使用 z4Root 等软件进行获取,然而,并不鼓励进行此操作,因为可能由此使用户失去手机原厂保修的权益。同样,如果将 Android 手机进行 root 权限提升,则此后用户不需要输入任何密码,都将能以 Android root 权限来使用手机。
(3)Android 应用程序权限:Android 提供了丰富的 SDK(Software development kit),开发人员可以根据其开发 Android 中的应用程序。而应用程序对 Android 系统资源的访问需要有相应的访问权限,这个权限就称为 Android 应用程序权限,它在应用程序设计时设定,在 Android 系统中初次安装时即生效。值得注意的是:如果应用程序设计的权限大于 Android 手机所有者权限,则该应用程序无法运行。如:没有获取 Android root 权限的手机无法运行 Root Explorer,因为运行该应用程序需要 Android root 权限。
Android 系统权限定义
Android 系统在 /system/core/private/android_filesystem_config.h 头文件中对 Android 用户 / 用户组作了如下定义,且权限均基于该用户 / 用户组设置。
在 Android 系统中,上述用户 / 用户组对文件的访问遵循 Linux 系统的访问控制原则,即根据长度为 10 个字符的权限控制符来决定用户 / 用户组对文件的访问权限。该控制符的格式遵循下列规则:
第 1 个字符:表示一种特殊的文件类型。其中字符可为 d( 表示该文件是一个目录 )、b( 表示该文件是一个系统设备,使用块输入 / 输出与外界交互,通常为一个磁盘 )、c( 表示该文件是一个系统设备,使用连续的字符输入 / 输出与外界交互,如串口和声音设备 ),“.”表示该文件是一个普通文件,没有特殊属性。
2 ~ 4 个字符:用来确定文件的用户 (user) 权限;
5 ~ 7 个字符:用来确定文件的组 (group) 权限;
8 ~ 10 个字符:用来确定文件的其它用户 (other user,既不是文件所有者,也不是组成员的用户 ) 的权限。
第 2、5、8 个字符是用来控制文件的读权限的,该位字符为 r 表示允许用户、组成员或其它人可从该文件中读取数据。短线“-”则表示不允许该成员读取数据。
第 3、6、9 位的字符控制文件的写权限,该位若为 w 表示允许写,若为“-”表示不允许写。
第 4、7、10 位的字符用来控制文件的制造权限,该位若为 x 表示允许执行,若为“-”表示不允许执行。
举个例子,“drwxrwxr--2 rootroot40962 月 11 10:36 lu”表示的访问控制权限(黑色字体标明)为:因为 lu 的第 1 个位置的字符是 d,所以由此知道 lu 是一个目录。第 2 至 4 位置上的属性是 rwx,表示用户 root 拥有权限列表显示 lu 中所有的文件、创建新文件或者删除 lu 中现有的文件,或者将 lu 作为当前工作目录。第 5 至 7 个位置上的权限是 rwx,表示 root 组的成员拥有和 root 一样的权限。第 8 至 10 位上的权限仅是 r--,表示不是 root 的用户及不属于 root 组的成员只有对 lu 目录列表的权限。这些用户不能创建或者删除 lu 中的文件、执行 junk 中的可执行文件,或者将 junk 作为他们的当前工作目录。
Android 应用程序权限申请
每个应用程序的 APK 包里面都包含有一个 AndroidMainifest.xml 文件,该文件除了罗列应用程序运行时库、运行依赖关系等之外,还会详细地罗列出该应用程序所需的系统访问。程序员在进行应用软件开发时,需要通过设置该文件的 uses-permission 字段来显式地向 Android 系统申请访问权限。
Ⅷ 安卓系统开发者权限不足
Android系统是运行在Linux内核上的,Android与Linux分别有自己的一套严格的安全及权限机制,很多像我这样的新手,尤其是习惯了windows低安全限制的用户,很容易在这方面弄混淆,下面是我总结的Android系统权限相关的内容,作为这段时间对and roid权限学习的总结,也希望能对大家有所帮助,不正确之处请指出。
首先分清两个概念:要区分apk运行时的拥有的权限与在文件系统上被访问(读写执行)的权限两个概念,apk程序是运行在虚拟机上的,对应的是Android独特的权限机制,只有体现到文件系统上时才使用linux的权限设置。
(一)linux文件系统上的权限-rwxr-x--x system system 4156 2010-04-30 16:13 test.apk代表的是相应的用户/用户组及其他人对此文件的访问权限,与此文件运行起来具有的权限完全不相关。比如上面的例子只能说明system用户拥有对此文件的读写执行权限;system组的用户对此文件拥有读、执行权限;其他人对此文件只具有执行权限。而test.apk运行起来后可以干哪些事情,跟这个就不相关了。
千万不要看apk文件系统上属于system/system用户及用户组,或者root/root用户及用户组,就认为apk具有system或root权限。
(二)Android的权限规则
(1)Android中的apk必须签名这种签名不是基于权威证书的,不会决定某个应用允不允许安装,而是一种自签名证书。重要的是,android系统有的权限是基于签名的。比如:system等级的权限有专门对应的签名,签名不对,权限也就获取不到。默认生成的APK文件是debug签名的。获取system权限时用到的签名,见:如何使Android应用程序获取系统权限
(2)基于UserID的进程级别的安全机制大家都知道,进程有独立的地址空间,进程与进程间默认是不能互相访问的,是一种很可靠的保护机制。Android通过为每一个安装在设备上的包(apk)分配唯一的linux userID来实现,名称为"app_"加一个数字,比如app_43不同的UserID,运行在不同的进程,所以apk之间默认便不能相互访问。Android提供了如下的一种机制,可以使两个apk打破前面讲的这种壁垒。在AndroidManifest.xml中利用sharedUserId属性给不同的package分配相同的userID,通过这样做,两个package可以被当做同一个程序。
系统会分配给两个程序相同的UserID。当然,基于安全考虑,两个package需要有相同的签名,否则没有验证也就没有意义了。(这里补充一点:并不是说分配了同样的UserID,两程序就运行在同一进程, 下面为PS指令摘取的,显然,system、app_2分别对应的两个进程的PID都不同,不知Android到底是怎样实现它的机制的)
(3)默认apk生成的数据对外是不可见的实现方法是:Android会为程序存储的数据分配该程序的UserID。借助于Linux严格的文件系统访问权限,便实现了apk之间不能相互访问似有数据的机制。例:我的应用创建的一个文件,默认权限如下,可以看到只有UserID为app_21的程序才能读写该文件
<1> 使用MODE_WORLD_READABLE and/or MODE_WORLD_WRITEABLE 标记。
(4)AndroidManifest.xml中的显式权限声明Android默认应用是没有任何权限去操作其他应用或系统相关特性的,应用在进行某些操作时都需要显式地去申请相应的权限。一般以下动作时都需要申请相应的权限:
在应用安装的时候,package installer会检测该应用请求的权限,根据该应用的签名或者提示用户来分配相应的权限。在程序运行期间是不检测权限的。如果安装时权限获取失败,那执行就会出错,不会提示用户权限不够。大多数情况下,权限不足导致的失败会引发一个 SecurityException, 会在系统log(system log)中有相关记录。
(5)权限继承/UserID继承当我们遇到apk权限不足时,我们有时会考虑写一个linux程序,然后由apk调用它去完成某个它没有权限完成的事情,很遗憾,这种方法是行不通的。前面讲过,android权限是经营在进程层面的,也就是说一个apk应用启动的子进程的权限不可能超越其父进程的权限(即apk的权限),即使单独运行某个应用有权限做某事,但如果它是由一个apk调用的,那权限就会被限制。实际上,android是通过给子进程分配父进程的UserID实现这一机制的。
(三)常见权限不足问题分析首先要知道,普通apk程序是运行在非root、非system层级的,也就是说看要访问的文件的权限时,看的是最后三位。另外,通过system/app安装的apk的权限一般比直接安装或adb install安装的apk的权限要高一些。言归正传,运行一个android应用程序过程中遇到权限不足,一般分为两种情况:
(1)Log中可明显看到权限不足的提示。此种情况一般是AndroidManifest.xml中缺少相应的权限设置,好好查找一番权限列表,应该就可解决,是最易处理的情况。有时权限都加上了,但还是报权限不足,是什么情况呢?Android系统有一些API及权限是需要apk具有一定的等级才能运行的。比如 SystemClock.setCurrentTimeMillis()修改系统时间,WRITE_SECURE_SETTINGS权限 好像都是需要有system级的权限才行。也就是说UserID是system.
(2)Log里没有报权限不足,而是一些其他Exception的提示,这也有可能是权限不足造成的。比如:我们常会想读/写一个配置文件或其他一些不是自己创建的文件,常会报java.io.FileNotFoundException错误。系统认为比较重要的文件一般权限设置的也会比较严格,特别是一些很重要的(配置)文件或目录
dbus.conf好像是蓝牙的配置文件,从权限上来看,根本就不可能改动,非bluetooth用户连读的权利都没有。/data目录下存的是所有程序的私有数据,默认情况下android是不允许普通apk访问/data目录下内容的,通过data目录的权限设置可知,其他用户没有读的权限。所以adb普通权限下在data目录下敲ls命令,会得到opendir failed, Permission denied的错误,通过代码file.listfiles()也无法获得data目录下的内容。
Ⅸ android开发,不同的权限登录显示不同的功能界面,怎么实现
写一个拦截器不就好了,主要还是数据库表的设计,用户有个用户组,用户组有什么权限,而这个权限就可以设置了,你根据用户找到用户组,用户组找到相应的权限
你的权限里可以设置成页面的url,这样转发就简单了
Ⅹ android怎么获取分区路径
我们可以在adb中使用df 来查看分区情况。
1、跨分区不能用 MV命令来拷贝。但是可以用CP命令。如PWD,当前目录为:/data/local/tmp 。
此目录下有个busybox和1.txt文件。则利用CP命令拷贝如下:./busybox cp1.txt /system.
2、Android的用户组有 System, root, shell
3、怎么样才能操作分区。
分区操作是需要权限的。一般来说System分区的权限限制得比较严,Data分区限制比较严,用户可以操作的目录有local,app目录。比如/data/local/tmp.
data分区常用目录:app , system , data ,local,misc 其中system,local可以进入并使用ls等命令。data,app可以进入,但不能用ls命令。
data/data目录:存放的是所有APK程序数据的目录,每个APK对就一个自己的Data目录,就是在data/data/目录下,会产生一个跟Package一样的目录。如有一个APK,它的包名叫com.test.hello则,在data/data/目录下会有一个com.test.hello的目录,这个APK只能操作此目录,不能操作其它APK的目录.这个在LINUX下叫做用户进程只能操作自己的进程目录.
data/app目录:用户安装的APK放在这里。我们如果把APK放入这个文件夹下面的话,就算安装好了。这就叫静默安装。不用管APK文件里面的lib目录下的库文件,系统会自动帮我们放入调用库的。
data/system目录下面有packages.xml ,packages.list,appwidgets.xml, 等等一些记录手机安装的软件,Widget等信息。
data/misc目录:保存WIFI帐号,VPN设置信息等。如保存了一个WIFI连接帐号,则此目录下的WIFI目录下面可以查看到。
system分区常用目录: app , lib, xbin, bin , media,framework.
system/app目录:存放系统自带的APK。没有测试过是否将APK放入到System/app目录下,也是静默安装APK。?
system/lib目录:存放APK程序用到的库文件。
system/bin目录和system/xbin目录:存放的是shell命令。
system/framework目录:启用Android系统所用到框架,如一些jar文件。
4 Android下面的目录都是有权限的,要操作目录都需要有此权限才能操作,如果没有,则使用chomd777来修改.如果是分区根目录,如/data分区, /system分区.都没有权限,则需要重新挂载. 使用 mount -oremount XX