一.命令权限控制机制

Linux系统是个多用户系统,能做到不同的用户能同时访问不同的文件,因此一定要有文件权限控制机制。Linux系统的权限控制机制和Windows的权限控制机制有着很大的差别。Linux的文件或目录被一个用户拥有时,这个用户称为文件的拥有者(或文件主),同时文件还被指定的用户组所拥有,这个用户组称为文件所属组。一个用户可以是不同组的成员,这可以由管理员控制。文件的权限由权限标志来决定,权限标志决定了文件的拥有者、文件的所属组、其他用户对文件访问的权限。

基本概念【文件主】

Linux为每个文件都分配了一个所有者,称为文件主,并赋予文件主唯一的注册名。对文件的控制取决于文件主或超级用户(root)。

文件的所属关系是可以改变的,你可以将文件或目录的所有权转让给其他用户,但只有文件主或root才有权改变文件的所属关系。可以用chown命令更改某个文件或目录的所有权。例如,超级用户把自己的一个文件复制给用户user1,为了让用户user1能够访问这个文件,超级用户(root)应该把这个文件的属主设为user1,否则,用户user1无法访问这个文件。如果改变了文件或目录的所有权,原文件主将不再拥有该文件或目录的控制权。

基本概念【用户组】

Linux下,每个文件又属于一个用户组。当创建一个文件或目录时,系统会赋予它一个用户组关系,chgrp命令可以改变文件的组关系。

基本概念【访问权限】

Linux系统中的每个文件和目录都有访问权限,用它来确定谁可以通过何种方式对文件和目录进行访问和操作。

Linux系统中规定了3种不同类型的用户:

文件主(user)、同组用户(group)、可以访问系统的其他用户(others)。访问权限规定3种访问文件或目录的方式:读(r)、写(w)、可执行或查找(x)。

(1)文件访问权限

读权限(r)表示只允许指定用户读取相应文件的内容,禁止对它做任何的更改操作。写权限(w)表示允许指定用户打开并修改文件。执行权限(x)表示允许指定用户将该文件作为一个程序执行。

(2)目录访问权限

在ls命令后加上-d选项,可以了解目录文件的使用权限。读权限(r)表示可以列出存储在该目录下的文件,即读目录内容。写权限(w)表示允许你从目录中删除或创建新的文件或目录。执行权限(x)表示允许你在目录中查找,并能用cd命令将工作目录切换到该目录。用chmod 命令可改变文件或目录的访问权限。

权限控制命令简介

29.chmod命令

功能:chmod命令用于改变或设置文件或目录的访问权限。

格式:chmod[选项]模式文件或目录名

说明:只有文件主或超级用户root才有权用chmod改变文件或目录的访问权限。

选项参数:

-c:若文件或目录权限确实已经更改,才显示其更改动作。

-f:若文件或目录权限无法被更改也不要显示错误信息。

-v:显示权限变更的详细资料。

-R:对目前目录下的所有档案与子目录进行相同的权限变更(即以递归式的方式逐个变更)。

设定文件权限时,在模式中常用以下的字母代表用户或用户组:

u(user)表示文件的所有者。

g(group)表示文件的所属组。

o(others)表示其他用户。

a(all)代表所有用户(即u+g+o)。

权限用以下字符表示:r表示读权限;w表示写权限;x表示执行权限。最后要指明是增加(+)还是取消(-)权限,或是只赋予权限(=)。

例1:将文件ex1的权限改为所有用户对其都有执行权限。

$chmod  a+x  ex1

例2:将文件ex1的权限重新设置为文件主可以读和执行,组用户可以执行,其他用户无权访问。

$chmod  u=r,ug=x  ex1


在以上设置权限时,可以使用数值来绝对赋予权限。用三位二进制数表示其rwx权限,000~111对应设置位,r为100、w为010、x为001,转换为十进制,读、写、执行权限依次对应4、2、1。权限的组合等于相应数字相加的和。例如:所有者的文件权限为rwx时,二进制数表示为111,用十进制数7表示;组用户的文件权限为rw-时,二进制数表示为110,用十进制数6表示;其他用户的文件权限为r-x时,二进制数表示为101,用十进制数5表示。假设要求上述用户对文件“file1”具有上述权限,使用的命令是$ chmod 765 file1。

例3:$ chmod 664 chap1.txt  等同于$ chmod u=rw,g=rw,o=r chap1.txt。

例4:将目录wn1及其下面的所有子目录和文件的权限改为所有用户对其都有读、写权限。

$ chmod –Ra+rw- wn1


30.chown命令

功能:改变某个文件或目录的拥有者和所属的组。

格式:chown[选项]用户或组 文件名 

说明:只有文件主和超级用户才可以使用该命令。同时改变文件主和文件所属的组时,用户名和用户组名由冒号分开。在文件名中可以包含通配符。

参数选项:

   -R 递归式地改变指定目录及其所有子目录、文件的文件主。

例1:将目录/usr/mengqc及其下面的所有文件、子目录的文件主改变成liu。

$chown  -R liu  /usr/mengqc

例2:把文件的拥有者改为longkey用户,同时文件的所属组改为root组。

#chown  longkey:root  chap1.txt


31.chgrp命令

功能:改变文件或目录的所属组。

格式:chgrp[选项] 组名 文件名

说明:如果用户不是该文件的文件主或超级用户,则不能改变该文件或目录的所属组。chown可以同时改变文件拥有者和所属组,chgrp只具有改变所属组的功能。

参数选项:

  -R 递归式地改变指定目录及其下面的所有子目录和文件的用户组。

例1:将文件“chap1.txt”的所属组设为root组。

$ chgrproot chap1.txt  

例2:将/usr/mengqc及其子目录下的所有文件的用户组改为mengxin。

$chgrp  -R mengxin  /usr/mengqc


32.umask命令

功能:用来设置新建文件权限的掩码。

格式:umask[模式]

说明:模式为新建文件权限的掩码值。

文件访问权限可以通过chmod命令来修改。当用户创建一个新文件后,如果不使用chmod修改权限,则这个文件的权限是什么呢?这个文件的权限由系统默认权限和默认权限掩码共同确定,它等于系统默认权限减去默认权限掩码。Linux系统中目录的默认权限是777,文件的默认权限是666。因此,有以下公式:

新目录的权限=777-默认权限掩码

新文件的权限=666-默认权限掩码

注意:基于安全原因,Linux系统不允许文件的默认权限有执行权。

不带任何参数的umask命令显示当前的默认权限掩码值。

例1:显示当前的默认权限掩码值。

$ umask

022

例2:显示新创建文件的权限。

$ cat  > test

$ ls  –l test

-rw-r--r--    1 root    root            7  3 月  8 12:57 test

以上说明如果用户创建新的文件,文件的权限应为666-022=644(即rw-r--r--)。

二.用户的管理

Linux是一个多任务、多用户的操作系统,要能做到不同的用户能同时访问不同的文件,允许不同的用户从本地登录或远程登录,这时用户必须拥有一个合法的账号,Linux系统正是通过账号来实现对用户的访问进行控制的,因此,需要对用户与组进行有效的管理。

在对用户与组进行管理时,可以采用两种方式,即命令行(Shell)方式和图形界面(GUI)方式,下面介绍命令行方式下的用户与组的管理,包括用户的添加、删除及修改等。

超级用户root可以通过在系统提示符下运行useradd或adduser命令来创建用户账号。

33.useradd命令

命令格式:useradd[选项]用户名

说明:只有超级用户root才有权使用此命令,使用useradd命令创建新的用户账号后,应利用passwd命令为新用户设置口令。

useradd命令有很多的可选参数,具体说明如下:

-u:设置用户ID(UID),用户ID和账号一样必须是唯一的。

-g:指定用户所属的用户组(组必须存在),参数可以是组名称或组ID(GID)。

-d:建立用户目录,参数即所建的用户目录(通常与用户账号相同)。

-s:设置用户环境,即设置用户的Shell环境。

-e:设置用户账号的使用期限。

例:分析useradd命令中选项的意义。

# useradd–u 550 –g 100 –d /home/user1 –s /bin/bash –e 08/02/06user1

其参数的意义如下:

-u参数:设置用户的UID为550。

-g参数:指定用户所属的用户组,但该用户组必须已经存在。参数采用组名或GID皆可,如-g 100与-g users的意思相同,都是把用户加入到users用户组中,其中users用户组的GID为100。

-d参数:建立用户目录,如–d /home/user1就是替用户建立位于/home目录下的用户目录,目录名称为user1。

-s参数:指定用户环境,如–s /bin/bash指定bash为该用户的Shell。当然也可指定其他Shell供用户使用。

   -e 参数:设置账号的期限,格式为“月/日/年”如–e 08/02/06为2006年8月2日。

修改用户属性


34.passwd 命令

功能:设置修改用户的密码属性。

格式:passwd用户名

说明:修改用户的密码需要两次输入密码确认。密码是保证系统安全的一个重要措施,在设置密码时,不要使用过于简单的密码。密码的长度应在8位或8位以上,由数字和英文组合而成。用户的密码也可以自己更改,这时使用不带用户名的passwd命令。

# passwd


35.chsh 命令

功能:修改用户的Shell设置。

格式:chsh用户名

说明:如果用户的默认Shell不合适,可以把它改成任何已经加入到/etc/Shells文件中的Shell。使用chsh命令改变用户的Shell,指定的Shell一定要在/etc/Shells中存在,否则会导致用户无法登录。也可以使用下面要介绍的命令usermod来改变用户的Shell设置。

  36.usermod 命令

功能:改变用户的属性。

格式:usermod[选项]用户名

参数选项:

-d dir:改变用户的主目录,如果同时使用“-m”选项,原来主目录的内容会移动到新的主目录。

-g GID或组名:修改用户的所属基本组。

-l name:更改账户的名称,必须在该用户未登录的情况下才能使用。

-m:把主目录的所有内容移动到新的目录。

-p 密码:修改用户的密码。

-s Shell:修改用户的登录Shell。

-u UID:改变用户的UID为新的值,改变用户的UID时主目录下所有该用户所拥有的文件或子目录将自动更改UID,但对于主目录之外的文件和目录只能用chown命令手工进行设置。

例:修改user2的UID为新的值600、所属组为wyq。

# usermod–u 600 –g wyq user2


37.userdel命令

命令格式为:userdel[选项]用户名

参数选项:

-r表示在删除账号的同时,将用户主目录及其内部文件同时删除。若不加选项-r,则表示只删除登录账号而保留相关目录。


三.组的管理

1. Linux的组

Linux的组有私有组、系统组、标准组之分。建立账户时,若没有指定账户所属的组,系统会建立一个和用户名相同的组,这个组就是私有组,这个组只容纳了一个用户。而标准组可以容纳多个用户,组中的用户都具有组所拥有的权利。系统组是Linux系统自动建立的。一个用户可以属于多个组,用户所属的组又有基本组和附加组之分。在用户所属组中的第一个组称为基本组,基本组在/etc/passwd文件中指定;其他组为附加组,附加组在/etc/group文件中指定。属于多个组的用户所拥有的权限是它所在的组的权限之和。

2. 用户组的添加、修改、删除

  38.groupadd命令

功能:添加组

可以手工编辑/etc/group文件来完成组的添加,也可以用命令groupadd来添加组,

命令格式:groupadd组名

例:添加组group1。

# groupaddgroup1


39.groupmod命令

功能:修改组属性

使用groupmod命令来修改组名或GID。

在groupmod -g命令后加上组的新ID号和组名来修改GID。

在groupmod -n命令后加上新组名和原组名来修改组名。


40.groupdel命令

功能:删除组

使用groupdel命令来删除组。

格式:groupdel组名

说明:组被删除后,应使用chown命令将被删除用户组的目录与文件变为它隶属的用户组。

41.groupwd命令

功能:要改变组中的成员用户或改变组的密码使用gpasswd命令。

格式:gpasswd[参数][用户名]组名

不带参数时,即修改组密码。

参数选项:

-a:将用户加入到组中。

-d:将用户从组中删除。


例:将用户user1加入到组group1中。

# gpasswd-a user1 group1  

例:将用户user1从组group1中删除。

# gpasswd-d user1 group1