6 Linux用户和组
6.1 Linux用户分类
在Linux系统中,由于角色不同,每个用户的权限和所能完成的任务各不相同。Linux用户分为如下的三类:
root用户在Linux系统中,root用户的权限是最高的。普通用户无法执行的操作,root用户都能完成,所以root用户也被称为超级管理用户。在Linux系统中,每一个文件、目录和进程都是归属于某一个用户的,如果没有获得用户的许可,其它普通用户是无法进行操作的。但root用户不受限制。root用户还可以超越任何用户和用户组群对文件或目录进行读取、修改和删除。可以控制程序的执行、中止;可以对硬件设备进行添加、创建和删除等操作。虚拟用户这类用户也被称为伪用户或假用户,这类用户不具备登录系统的能力,但却是系统运行不可缺少的用户。比如 bin、daemon、adm、ftp、mail等,这类用户都是系统自身拥有的。普通用户这类用户能够登录系统,只能擦欧总自己目录的内容,权限有限,这类用户都是系统管理员创建的。
6.2 用户文件
用户的配置文件主要包括:
Linux系统中对于用户的管理主要通过修改配置文件来实现的。
6.2.1 /etc/passwd文件
/etc/passwd文件是系统识别用户的一个文件,系统所有的用户都在这里有登录记载。在/etc/passwd文件中,每一行都表示一个用户信息,一行有7个段位,每个段位用 :分隔,如下所示,
<code>[root@localhost etc]# cat passwd
root:x:0:0:root:/root:/
bin/bashbin:x:1:1:bin:/bin:/sbin/nologin
daemon:x:2:2:daemon:/sbin:/sbin/nologin
adm:x:3:4:adm:/var/adm:/sbin/nologin
lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin
sync:x:5:0:sync:/sbin:/bin/sync
shutdown:x:6:0:shutdown:/sbin:/sbin/shutdown
halt:x:7:0:halt:/sbin:/sbin/haltmail:x:8:12:
mail:/var/spool/mail:/sbin/nologin
operator:x:11:0:operator:/root:/sbin/nologin
games:x:12:100:games:/usr/games:/sbin/nologin
ftp:x:14:50:FTPUser:/var/ftp:/sbin/nologin/<code>
在文件中,各字段的含义如下:
用户名:也称为登录名,在系统内用户名具有唯一性;密码:存放加密的密码,显示的是一个 x ,密码被映射到 /etc/shadow文件中;用户标识号:系统用一个整数标识用户ID,每个用户的UID都是唯一的,root用户的UID是0,普通用户的UID从500开始;组群标识号:系统内用一个整数标识用户所属的组群ID号,每个组群的GID是唯一的;用户名全称:用户名描述,可以不设置;用户宿主目录:用户登录系统后首先进入的目录;命令解释器:用户使用的shell类型。6.2.2 /etc/shadow文件
/etc/shadow文件是 /etc/passwd的影子文件,这个文件并不由/etc/passwd文件产生,两个文件是对应互补的。shadow文件涉及内容包括用户及被加密的密码以及其它/etc/passwd文件不能包括的信息,比如用户的有效期限等。/etc/shadow文件包括9个段位,每个段位之间用 :分隔,文件内容如下
<code>[root@localhost etc]# cat shadow
root:$6$hF5CilEiEl9bi7Nf$2zb9VcwN4m3fQL8oeRIyIAsIpJNEHx2Ktq4HuGZmH9mzIw8ZagH9DoUy345hF3SQeuNv9oJ9DMjC74ymL1Jts/::0:99999:7:::
bin:*:17834:0:99999:7:::daemon:*:17834:0:99999:7:::
adm:*:17834:0:99999:7:::
lp:*:17834:0:99999:7:::
sync:*:17834:0:99999:7:::
shutdown:*:17834:0:99999:7:::
halt:*:17834:0:99999:7:::
mail:*:17834:0:99999:7:::
operator:*:17834:0:99999:7:::
games:*:17834:0:99999:7:::
ftp:*:17834:0:99999:7:::/<code>
/etc/shadow各个字段的含义如下:
6.2.3 /etc/group文件
具有某种共同特征的用户集合就是用户组群,/etc/group 是用户组群的配置文件,内容包括用户和用户组群,并且能够显示用户属于哪个组群或哪几个组群。一个用户可以归属于一个或多个不同的用户组群,同一用户组群的用户具有相似的特征。比如把某一个用户加入到root用户组群,那么这个用户就可以浏览root用户宿主目录的文件,如果root把某个文件的读写执行权限开放,root用户组群所有用户都可以修改此文件;如果是可执行文件,root用户组群的用户也是可以执行的。/etc/group文件内容如下:
<code>[root@localhost etc]# cat /etc/group
root:x:0:bin:x:1:
daemon:x:2:sys:x:3:
adm:x:4:
tty:x:5:
disk:x:6:
lp:x:7:
mem:x:8:
kmem:x:9:
wheel:x:10:
cdrom:x:11:
mail:x:12:
postfix/<code>
每个用户组群以添记录,一行有4个段位,每个段位用 :分隔,各个段位的定义如下:
组群名:用户组群的名称;群群密码:存放的是组群密码,显示为x,密码映射到/etc/gshadow文件中;组群标识:系统内用一个整数ID号,每个组群的UDI都是唯一的,普通组群的GID从500开始。组群成员:属于这个组群的成员;6.2.4 /ect/gshadow文件
/etc/gshasdow文件是 /etc/group的加密文件,文件中每个用户群都有一条记录,一行有4个段位,每个段位用 :分隔,文件的内容如下,
<code>[root@localhost etc]# cat /etc/gshadow
root:::
bin:::
daemon:::
sys:::
adm:::
tty:::
disk:::
lp:::
mem:::
kmem:::
wheel:::
cdrom:::
mail:::
postfix/<code>
每个段位的定义如下:
组群名:组群的名称组群密码:组群加密后的密码组群的管理员:有权限对该组添加、删除用户组群成员:授予改组的成员列表,多个用户用 ,分隔。6.3 实际操作
在下面的示例中,我们建立一个fruit组,并在fruit组中添加了两个用户 apple和 banana,另外我们用建了一个tomato用户。建完这三个用户后,分别给他们修改密码。
<code>[root@localhost ~]# groupadd fruit
[root@localhost ~]# useradd -g fruit apple
[root@localhost ~]# useradd -g fruit banana
[root@localhost~]#useraddtomato
[root@localhost ~]# passwd tomato
...
[root@localhost ~]# cat /etc/passwd
root:x:0:0:root:/root:/bin/bash...apple:x:1008:1008::/home/
apple:/bin/bashbanana:x:1009:1008::/home/
banana:/bin/bashtomato:x:1010:1010::/home/
tomato:/bin/bash
/<code>
可以看到,apple 的UID=1008,banana 的UID=1009,两个用户的GID=1008。tomato的UID=1010,GID=1010。apple和banana是同一个组,而tomato和他们不是同一个组。下面对/home目录下的两个目录操作,使得banana目录和apple目录对所有用户都可执行。
<code>[root@localhost home]# ls -l
总用量 0
drwx------. 2 apple fruit 114 12月 9 02:54 apple
drwx------.2bananafruit8312月902:54banana
drwx------.2tomatotomato8312月902:54tomato
[root@localhost home]# chmod 777 banana
[root@localhosthome]#chmod777apple
[root@localhost home]# ls -l
总用量 0
drwxrwxrwx. 2 apple fruit 114 12月 9 04:39 apple
drwxrwxrwx.2bananafruit8312月902:54banana
drwx------.2tomatotomato8312月902:54tomato/<code>
使用apple用户登录服务,在/home/apple目录下创建可执行程序 test.sh,并赋值执行权限,test.sh的内容如下:
<code>[apple@localhost ~]$ cat -n test.sh 1 #!/bin/bash
2 echo "-------------------------------"
3 echo "Welecom $USER"
4 echo "This is a test program"
5 echo "Gooodbye"
6 echo "-------------------------------"
[apple@localhost ~]$ chmod 754 test.sh
[apple@localhost ~]$ ls -l
总用量 4
-rwxr-xr--. 1 apple fruit 157 12月 9 02:33 test.sh/<code>
语法:chmod abc filename
其中a,b,c各为一个数字,分别表示User、Group和Other的权限。r=4,w=2,x=1,分别表示读、写和执行权限。
若要rwx属性则赋值为4+2+1=7;若要rw-属性则赋值为4+2=6;若要r-x属性则赋值为4+1=5;...下面分别通过 root、apple、banana和tomato四个用户登录分别执行该程序,执行结果如下:
通过上述的输出结果可以看出,root、apple、banana和tomato四个用户前三个用户对于test.sh具有执行权限,而tomato只具有读的权限,这个和我们在上一节中讲的是一致的。