您的位置:首页 > 运维架构 > Linux

Linux用户管理

2014-05-04 23:21 190 查看

Linux用户

1.用户

  Linux下的用户可以分为三类:超级用户、系统用户和普通用户

  超级用户的用户名为root,它具有一切权限,只有进行系统维护(例如建立用户等)或其他必要情形下才用超级用户登录,以避免系统出现安全问题。

  系统用户是Linux系统正常工作所必需的内建的用户,主要是为了满足相应的系统进程对文件属主的要求而建立的,系统用户不能用来登录,如bin、daemon、adm、lp等用户。

  而普通用户是为了让使用者能够使用Linux系统资源而建立的,我们的大多数用户属于此类。

  每个用户都有一个数值,称为UID。超级用户的UID为0,系统用户的UID一般为1~499,普通用户的UID为500~60000之间的值。

2.账号系统文件

Linux系统采用纯文本文件来保存账号的各种信息,其中最重要的文件有/etc/passwd、/etc/shadow、/etc/group这几个。我们可以使用vi或其他编辑器来更改它们,也可以使用专门的命令来更改它们。账号的管理实际上就是对这几个文件的内容进行添加、修改和删除记录行的操作,不管以哪种形式管理账号,了解这几个文件的内容十分必要。

(1) /etc/passwd文件:是账号管理中最重要的一个文件,它是一个纯文本文件。每一个注册用户在该文件都有一个对应的记录行,这一记录行记录了此用户的必要信息。

/etc/passwd







。。。。。。



从passwd文件中可以看到,第一行是root用户,紧接的是系统用户,普通用户通常在文件的尾部。passwd文件中的每一行由7个字段的数据组成,字段之间用“:”分隔,其格式如下:

账号名称:密码:UID:GID:个人资料:主目录:Shell

说明如下:

账号名称:用户登录Linux系统时使用的名称。

密码: 这里的密码是经过加密后的密码,而不是真正的密码,若为“x”,说明密码经过了shadow的保护。如果用户没有设置口令,则该 项为空。如果passwd字段中的第一个字符是“*”的话,那么,就表示该账号被查封了,系统不允许持有该账号的用户登录。

UID: 用户的标识,是一个数值,Linux系统内部使用它来区分不同的用户。
0代表系统管理员,如果你想建立一个系统管理员的话,可以建立一个普通帐户,然后将该账户的用户ID改为0即可。
1-500系统预留的ID,500以上是普通用户使用。

GID: 用户所在组的标识,是一个数值,Linux系统内部使用它来区分不同的组,相同的组具有相同的GID。

个人资料:可以记录用户的个人信息,如姓名、电话等信息(上例中test用户本项为空)。

主目录: 通常是/home/username,这里username是用户名,用户执行“cd~”命令时当前目录会切换到个人主目录。

Shell: 定义用户登录后使用的Shell,默认是bash。

(2)/etc/shadow文件任何用户对passwd文件都有读的权限,虽然密码已经经过加密,但还是不能避免有人会获取加密后的密码。为了安全,Linux系统对密码提供了更多一层的保护,即把加密后的密码重定向到另一个文件/etc/shadow。密码如果经过shadow保护,在/etc/passwd文件中,每一记录行的密码字段会变成“x”,并且在/etc目录下存在文件shadow。只有超级用户能够读取shadow的内容。

/etc/shadow







同样依次分析一下9个字段

帐户名称: 和passwd对应,和passwd的意思相同。
密码: 这才是真正的密码,并且已经加密过了,只能看到一些特殊符号。需要注意的是这些密码很难破解,但是不等于不能。还有密码栏的第一个字符为“*”表示这个用户不用来登录,如果那个用户不想让他登录了,可以在他前面加个星;第一个字符为“!”号表示该用户被禁用,一般新创建的账号后还未设置密码该账号就是禁用状态,使用“!!”表示;第一个字符为“空”的话,代表该用户没有口令,登录时不需要口令。
上次改动密码的日期: 这段记录了改动密码的最后日期,为什么是13798呢?这是因为linux计算日期的方法是以1970年1月1日作为1,1971年1月1日就是366,依次类推到我修改密码的日期表示为13798了。
密码不可被改动的天数:这个字段代表要经过多久才可以更改密码。如果是“0”代表密码可以随时更改。
密码需要重新更改天数:由于害怕密码被人盗取而危害到整个系统的安全,所以安排了这个字段,你必须在这个时间内重新修改密码,否则这个帐号将暂时失效。上面的99999,表示密码不需要重新输入,最好设定一段时间修改密码。确保系统安全。
密码变更期期限快到前的警告期:当帐号的密码失效期限快到时,系统依据这个字段的设定发出警告,提醒用户“再过n天您的密码将过期,请尽快重新设定密码。默认的是七天。
帐号失效期:如果用户过了警告期没有重新输入密码,使得密码失效,而该用户在这个字段限定的时间内又没有向管理员反映,让帐号重新启用,那么这个帐号将暂时失效。
帐号取消日期: 这个日期跟第三个字段一样,都是使用1970年以来的日期设定方法。这个字段表示:这个帐号在此字段规定的日期之后将无法再使用。这个字段通常用于收费服务系统中,可以规定一个日期让该帐号不能再使用。
保留: 最后一个字段是保留的,看以后有没有新功能加入。

(3)pwconv和pwunconv文件:安装Linux系统时,系统缺省采用shadow来保护密码。?如果安装Linux时未启用shadow,可以使用pwconv命令启用shadow。注意用root用户登录来执行该命令,执行的结果是/etc/passwd文件中的密码字段被改为“x”,同时产生/etc/shadow文件。相反,如果要取消shadow功能,可使用pwunconv命令。

Linux组

  Linux的组有私有组、系统组、标准组之分。

  建立账户时,若没有指定账户所属的组,系统会建立一个和用户名相同的组,这个组就是私有组,这个组只容纳了一个用户。

  而标准组可以容纳多个用户,组中的用户都具有组所拥有的权利。

  系统组是Linux系统自动建立的。

  一个Linux用户可以属于多个组,用户所属的组又有基本组和附加组之分。在用户所属组中的第一个组称为基本组,基本组在/etc/passwd文件中指定;其他组为附加组,附加组在/etc/group文件中指定。属于多个组的用户所拥有的权限是它所在的组的权限之和。

/etc/group文件 :Linux系统关于组的信息存放在文件/etc/group中。

/etc/group



group文件中的每一行记录了一个组的信息,每行包括4个字段,字段之间用“:”分隔。

格式为组名:组的密码:GID:组成员。

字段说明:

组名:组的名称,如root、bin等。

组的密码:设置加入组的密码,一般情况下不使用组密码,该字段通常没用。

GID:组的标识符,为数值,类似UID。
组成员:组所包含的用户,用户之间用“,”分隔。组成员包括显示的组用户以及GID为组GID的用户(这种用户不显示)





比如用户group1是有三个用户的,显示的test1,test3以及GID为601的test1

group2是由两个用户的,显示的test3和GID为602的test2

其中test2和test3都是同时属于group1和group2的。

Linux用户权限控制

useradd

添加用户

useradd usename

添加用户,并把它放在某一个组

useradd -g groupname username

Linux系统中规定了3种不同类型的用户:文件主(user)、同组用户(group)、可以访问系统的其他用户(others)。

访问权限规定3种访问文件或目录的方式:读(r)、写(w)、可执行或查找(x)

(1)文件访问权限

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

(2)目录访问权限

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

1.chmod命令

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

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

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

选项参数:

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

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

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

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

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

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

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

o(others)表示其他用户。

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

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

2.chown命令

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

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

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

参数选项:

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

3.chgrp命令

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

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

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

参数选项:

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

4.umask命令

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

格式:umask[模式]

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

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

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

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

注意:基于安全原因,Linux系统不允许文件的默认权限有执行权。不带任何参数的umask命令显示当前的默认权限掩码值。下面讲解Linux用户管理。

组的管理

(1)添加组

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

命令格式:groupadd组名

例:添加组group1。

#groupaddgroup1

(2)修改组属性

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

3.删除组

使用groupdel命令来删除组。

格式:groupdel组名

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

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

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

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

参数选项:

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

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

常用命令

用户管理命令:

useradd 注:添加用户
adduser 注:添加用户
passwd 注:为用户设置密码
usermod 注:修改用户命令,可以通过usermod 来修改登录名、用户的家目录等等;
pwcov 注:同步用户从/etc/passwd 到/etc/shadow
pwck 注:pwck是校验用户配置文件/etc/passwd 和/etc/shadow 文件内容是否合法或完整;
pwunconv 注:是pwcov 的立逆向操作,是从/etc/shadow和 /etc/passwd 创建/etc/passwd ,然后会删除 /etc/shadow 文件;
finger 注:查看用户信息工具
id 注:查看用户的UID、GID及所归属的用户组
chfn 注:更改用户信息工具
su 注:用户切换工具
sudo 注:sudo 是通过另一个用户来执行命令(execute a command as another user),su 是用来切换用户,然后通过切换到的用户来完成相应的任务,但sudo 能后面直接执行命令,比如sudo 不需要root 密码就可以执行root 赋与的执行只有root才能执行相应的命令;但得通过visudo 来编辑/etc/sudoers来实现;
visudo 注:visodo 是编辑 /etc/sudoers 的命令;也可以不用这个命令,直接用vi 来编辑 /etc/sudoers 的效果是一样的;
sudoedit 注:和sudo 功能差不多;

组管理命令:

groupadd 注:添加用户组;
groupdel 注:删除用户组;
groupmod 注:修改用户组信息
groups 注:显示用户所属的用户组
grpck注: 校验组配置文件是否合法和完整
grpconv 注:通过/etc/group和/etc/gshadow 的文件内容来同步或创建/etc/gshadow ,如果/etc/gshadow 不存在则创建;
grpunconv 注:通过/etc/group 和/etc/gshadow 文件内容来同步或创建/etc/group ,然后删除gshadow文件。

详解

adduser添加用户

adduser 的实现是通过两个文件/etc/login.defs/etc/default/useradd
通过这两个默认帐号设定文件来实现创建用户时用户的基本设置的


/etc/login.defs文件内容如下:



/etc/default/useradd文件内容如下:



这个文件中我们有必要了解一下,SKEL这个选项,用户的根目录内容是从/etc/skel这个目录下复制过去的。在手动添加用户的时候有用。查看一下这个目录下的内容:



这条命令还有好多的参数举例几个,供大家参考一下:
adduser [-u uid] [-g group] [-d home] [-s shell]

-u:直接给出userID
-g:直接给出GID
-d:直接将根目录建立在已存在目录
-s:定义shell

文章参考自Linux用户管理Linux管理详解
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: