说到linux中的用户权限得先聊一聊操作系统的组成,一般操作系统是由硬件、内核、库、shell(中包括GUI(图形用户界面)和CLI(命令行界面)两种,还有就是完成不同工作的应用程序了。一个应用程序想要运行起来,必须要把其所依赖的库文件调用到内核当中。如果不同应用程序所依赖的库文件相同且它们同时在系统中运行,这时就会调用同一个库文件的副本。应用程序也是一样,同一个应用程序可能被打开运行多次,虽然运行的是同一个程序,但是后台运行的该程序的进程是不同的。Linux中不同用户所调用的是同一个应用程序不同进程。在Linux中权限最高的是管理员权限也就是root,其它用户的权限是由root进行设置的。这里的用户权限相对进程和文件来说就是进程和文件的属主。
例如[root@localhost tmp]# ls -l test.cut ,单单就这条命令来说ls和test.cut都是有属主的。
下面来说说ls -l长显示,的文件一些属性。
[root@localhost Desktop]# ls -l
total 2220
-rw-r--r--. 1 root root 2272130 Aug 6 2013 cacti-0.8.8b.tar.gz
-rw-rw-r--. 1 123 123 0 Nov 1 03:38 new file
红色字体的第1位表示的是用户文件的类型,文件类型在之前的Linux常见命令(ls)介绍了,之后的后9位3位是一组,第1组代表属主的权限,第2组代表的是属组的权限、第3组代表的是其它用户的权限。
3位字母的格式是r(可读)w(可写)x(可执行),可读就是可以通过像cat、more这样的文本查看命令查看的文件,可写就是可以通过vi和nano这样的命令修改的文件,可执行就是可以在命令提示符下输入并且可以提交给内核运行的文件。这里所说的文件的可读、可写、可运行属性同样适用于文件夹系统,文件夹中的r(可读)表示可以对此文件夹执行ls以列出此文件夹中的内容,w(可写)表示可以在文件夹中创建文件,x(可执行)表示可以对此文件执行cd等操作(此处有出入,哪位高手看到了给我讲讲怎么回事,在系统中通过install命令新建了一个文件夹并且没有赋予其任何权限合适可以通过cd进行入的)。
例如r_ _:只读,r_x:可执行,_ _ _ :无任何权限。每一位如果有的话就用1来表示,没有就代表0,所以3位的读、写、执行权限都有的话就会
_ _ _ :0
_ _ x:1
_ w _:2
_ w x:3
r _ _:4
r _ x:5
r w _:6
r w x:7
以上权限数字在chmod、install命令中会用到
[root@localhost test]# install -d -m 000 /tmp/test ceshi.1
[root@localhost test]# ls
1 2 ceshi.1 sort-u sort2 sort3 sort4
[root@localhost test]# ls -l
total 28
drw-rw-rw- 2 root root 4096 Nov 19 18:34 1
drw-rw-rw- 2 root root 4096 Nov 19 21:17 2
d--------- 2 root root 4096 Nov 21 01:32 ceshi.1
[root@localhost test]# cd ceshi.1/
[root@localhost ceshi.1]#
[root@localhost ceshi.1]# ls -ld /tmp/test/ceshi.1/
d--------- 2 root root 4096 Nov 21 01:32 /tmp/test/ceshi.1/
通过上面可以看出来岁软文件夹没有任何权限还是可以操作的。
通过touch新建一个文件后通过chmod改变文件的权限后还是有效的
[root@localhost ceshi.1]# ls -l
total 0
-rw-r--r-- 1 root root 0 Nov 21 01:45 123
[root@localhost ceshi.1]# chmod 333 123
[root@localhost ceshi.1]# ls -l
total 0
--wx-wx-wx 1 root root 0 Nov 21 01:45 123
[root@localhost ceshi.1]# vi 123
[root@localhost ceshi.1]# cat 123
the file is only write
下面介绍一下关于用户权限的一些相关的命令及文件:
1、/etc/passwd
该文件中存放的是用户的账号信息。
[root@localhost ceshi.1]# cat /etc/passwd
root:x:0:0:root:/root:/bin/bash
123:x:500:500:centos 6.5:/home/123:/bin/bash
mysql:x:27:27:MySQL Server:/var/lib/mysql:/bin/bash
cacti:x:501:501::/home/cacti:/bin/bash
dhcpd:x:177:177:DHCP server:/:/sbin/nologin
以root为例该文件显示的内容还含义是
root:用户名。
x:密码占位符。
0:用户ID。
0:基本组ID。
root:用户名称注释信息。
/root:用户的家目录。
/bIn/bash:用户默认Shell。
这里的x是密码占位符,其实系统中有个专门存放密码的文件是/etc/shadow,通过vi或者nano可以修改该文件中的内容以增加用户信息。
2、/etc/shadow
[root@localhost ceshi.1]# cat /etc/shadow
root:$1$PXLwFZXG$3qMzsG0fc1KGGBSwxbXtu1:17126:0:99999:7:::
bin:*:15980:0:99999:7:::
daemon:*:15980:0:99999:7:::
adm:*:15980:0:99999:7:::
lp:*:15980:0:99999:7:::
还是以第一个root为例
root:代表用户名。
$1$:代表的是MD5加密。
$PXLwFZXG$:是加密的密码的杂项,是为了防止用户密码相同时候,系统为该用户密码添加的杂项信息
$3qMzsG0fc1KGGBSwxbXtu1:用户加密的密码
17126:从1970到到上次密码修改的天数。
0:密码的最短使用时间。
99999:密码的最长使用时间。
3、/etc/group
/etc/group中存放的是用户的组信息。
[root@localhost ceshi.1]# cat /etc/group
root:x:0:
bin:x:1:bin,daemon
daemon:x:2:bin,daemon
还是以root为例,解释一下该文件的结构。
root:组名。
x:密码占位符。
0:组ID
0:后面的代表加入改组的用户列表。
关于用户的相关操作大多数都是在以上三个文件中进行操作