昨天晚上装了一台Oracle Liunx Server,捣鼓了一天,把以前不甚理解的权限分配稍微梳理了下,及时记下来,防止以后不用又忘记了。
使用root权限,查看了下当前工作目录,如下:
root是超级管理员,它的家目录在/root下。查看下当前工作目录下,各文档及文件的详细信息:
ls -al | more 命令非常好用,“|” 用来通过关键字'more’控制输出,只要输出满整个屏幕就会暂停,直到你重新按下enter或者space建再显示下面的内容。详细的英文解释如下:
如上面的命令输出,我们看下输出的content中到底是什么意思。用惯了图形化界面系统,看看这些纯命令行操作多少有些难受。难受的是不直观!其实不然,不直观是因为不明白这是什么意思。我们来看上面输出截图中的内容。
第一列 "dr-xr-x---" 是表明当前文件的类型和具体的操作权限;如d表示的directory文档,可以理解为文件夹;- 表示的是普通的文件;l则是link链接文件,直白的讲可以理解为Windows系统中的快捷方式;而"r-xr-x---" 则是具体的操作权限,r-read,w-write,x-execute,代表读写可执行。"r-xr-x---"长度为9占位符,每3个一组,分别代表了文件或文档的拥有者Owner、所属组group及其他用户otheruser的操作权限;
第二列 数字表示文件的链接数,普通文件至少是1,而文档最少是2,见上图;
第三列 代表的是文件或文档的Owner,如上图中owner都是root;
第四列 表示用户组;
第五列 文件大小,单位为Kbyte;
第六列 文件or文档的最近修改时间;
第七列 文件或文档名,文件名前面带.的表示是隐藏文件。
因root是超级管理员,如果使用root不小心误操作了,可能连后悔的机会读没有了。而且Linux是多用户多任务的操作系统,所以我们可以创建新的用户,并为他们分配一些适当的权限。
【就像好多Android手机一样。这些Android系统,基于Linux内核开发的。买来的手机中预装了许多软件,乱七八糟的而且还是自启动的,一开机就自动运行。如果你不想要这些软件怎么办?删了!但是你删不掉!因为你们不是root权限。必须把root权限找回来,那就是刷机,刷root!】
扯远了,回来!因为用户不能是孤立的,会有对应的用户组group,我们就先来创建一个用户组 DBA-oper。接着新增两个用户,并把他们分配到DBA-oper组内。
解释下:useradd -d /usr/lim -m lim -g DBA-oper ,-d 表示给新建用户创建一个用户目录文档, 路径就是/usr/lim , 如果不存在lim文件夹,-m 就创建一个lim文件夹;-g 将lim用户分配到DBA-oper组内。查看下,如下图红色方框标出所示:
我们创建了两个用户wangl和lim,并新建了用户目录文档,两个用户都属于DBA组。现在我们来看下这两目录的权限:rwx------。
这表示目前两个目录的所有者分别对他们有read、write、execute的权限,而对应的组和其他用户没有任何权限。我们给新建的两个用户分别配置密码,同时切换用户从root切换到wangl,通过wangl这个用户来访问lim这个文件来看看具体的权限,如下图所示:
用户wangl访问lim文件夹时(cd /usr/lim),提示:Permission denied,拒绝了!
下面来修改下组的权限再来看看:
切到root账户下,改变DBA-oper组对lim文档的权限为可读,chmod 754 lim(r-4,w-2,x-1,rwx为7)。
再次切到用户wangl,看看能否访问lim文件夹,见下图:
用户wangl已经能进入/usr/lim 这个lim用户的根目录了!why?因为我们将DBA组对于文档lim的操作权限分配为可读可执行,而wangl用户就是属于DBA组的,所以wangl也就有了相应的权限。接着我们用wangl用户在lim文档中创建一个文档test1,见下图:
被拒绝了!因为我们的权限是754,用户组没有对应的写权限,如果改成774,就可以了。
反过来,如果我们用lim用户来访问wangl这个文档呢?请见下图:
同样是拒绝!因为wangl这个文档对于DBA-oper这个组来说没有任何的权限,所以拒绝。
以上只是关于权限控制的很小的一个例子,但是可以很好地帮助你理解Linux/Unix的权限控制。