用户ID(User ID,通常缩写为UID)。
root用户账户是Linux系统的管理员,固定分配给它的UID是0。Linux系统会为各种各样的功能创建不同的用户账户,这些账户叫做系统账户,是系统上运行的各种服务进程访问资源用的特殊账户。所有运行在后台的服务都需要用一个系统用户账户登录到Linux系统上。现在运行在Linux服务器后台的几乎所有的服务都是用自己的账户登录。Linux为系统账户预留了500以下的UID值。
/etc/passwd文件的字段包含了如下信息:
用户登录名:用户密码(被设置成了x):用户账户的UID(数字形式):用户账户的组ID(数字形式):用户账户的文本描述(成为备注字段):用户HOME目录的位置:用户默认的shell。
现在,绝大多数Linux系统豆浆用户密码保存在另一个单独的文件中(叫做shadow文件,位置在/etc/shadow),只有特定的程序才能访问这个文件。
添加新用户
用来向Linux系统添加新用户的主要工具是useradd,这个命令可以一次性创建新用户及设置用户HOME目录结构。系统默认值被设置在/etc/default/useradd文件中,可以用一下命令查看: /usr/sbin/useradd -D
删除用户 userdel命令
默认情况下,userdel命令只会删除/etc/passwd文件中的用户信息,而不会删除系统中属于该账户的任何文件。如果加上-r参数,则会删除用户的HOME目录以及邮件目录,然而系统上仍可能存有已删除用户的其他文件。
修改用户
Linux 提供了一些不同的工具来修改已有用户账户的信息。
Linux组
组权限允许多个用户对系统中的对象(比如文件,目录或设备等)共享一组共用的权限。每个组都有唯一的GID,还有唯一的组名。/etc/group文件包含系统上用到的每个组的信息。GID在分配时也采用了特定的格式。系统账户用的组通常会分配低于500的GID值,而用户组的GID则会从500开始分配。
/etc/group文件有4个字段:
组名;
组密码;
GID;
属于该组的用户列表,如下所示:
在上述列表中,有些组并没有列出用户,这并不是说这些组没有成员,当一个用户在/etc/passwd文件中指定某个组作为默认组时,用户账户不会作为该组成员再出现在/etc/group文件中。
不能通过直接修改/etc/group文件来添加用户到一个组,要用usermod命令。在添加用户到不同的组之前,首先得创建组。
创建新组
groupadd命令可在系统上创建新组
/usr/sbin/groupadd shared
创建新组时,默认没有用户被分配到该组。groupadd命令没有提供将用户添加到组中的选项,可以用usermod命令来弥补。
修改组
在/etc/group文件中可以看到,需要修改的组的信息并不多。groupmod命令可以修改已有组的GID(加-g选项)或组名(加-n选项)。修改组名时,GID和组成员不会变,只有组名改变。由于所有的安全权限都是基于GID的,可以随便改变组名而不会影响文件的安全性。
理解文件权限
默认文件权限:umask命令
umask命令用来设置所创建文件和目录的默认权限。
第一位是粘着位,代表一项特别的安全性。后面三维表示文件或目录对应的umask八进制值。
umask值只是个掩码,它会屏蔽掉不想授予该安全级别的权限,要把umask值从对象的全权限值中减掉。对文件来说,全权限值是666(所有用户都有读写权限),而对目录来说,则是777(所有用户都有读,写,执行权限)。
大多数Linux发行版umask通常会设置在/etc/profile启动文件中,有一些是设置在/etc/login.defs文件中。可以用umask命令为默认umask设置指定一个新值。
改变安全性设置
1 改变权限
chmod命令用来改变文件和目录的安全性设置,命令格式: chmod options mode file
mod参数可使用八进制模式或符号模式进行安全性设置,直接用期望赋予文件的标准3位八进制权限码即可。
符号模式的权限,格式:[ugoa...][[+-=][rwxXstugo...]
第一组字符[ugoa...]定义了权限作用的对象,[+-=]表示你是想在现有权限基础上增加权限,还是移除权限或是设置成后面的值。[rwxXstugo...]代表作用到设置上的权限。如 chmod u-x newfile
改变所属关系
chown命令:改变文件的属主 chown options owner[.grop] file 如:
chown dan newfile 改变属主
chown dan.shared newfile 同时改变属主和属组
chown .shared newfile 改变属组
只有root用户能够改变文件的属主,任何属主都可以改变文件的属组,但前提是属主必须是原属组和目标属组的成员。
chgrp命令:改变文件的默认属组
chgrp shared newfile 用户账户必须是这个文件的属主,除了能够更换属组之外,还得是新组的成员。
共享文件
Linux系统上共享文件的方法是创建组。要想让其他人也能访问文件,要么改变其他用户所在安全组的访问权限,要么就给文件分配一个包含其他用户的新默认属组。
Linux为每个文件和目录存储了3个额外的信息位:
设置用户ID(SUID):当文件被用户使用时。程序会以文件属主的权限运行。
设置组ID(SGID):对文件来说,程序会以文件属组的权限运行,对目录来说,目录总创建的新文件会以目录的默认属组作为默认属组。
粘着位:进程结束后文件还驻留在内存中。
SGID可通过chmod命令设置,它会加到标准3位八进制之前,或者在符号模式下用符号s。
要创建一个共享目录,使目录里的新文件都能沿用目录的属组,只需将该目录的SGID位置位。所有组成员需要把他们的umask值设置成文件对属组成员可写。组成员就能到共享目录下创建新文件了,新文件会沿用目录的属组,而不是用户的默认属组。