首页 > 代码库 > linux系统用户以及用户组管理

linux系统用户以及用户组管理

用户组管理

1.   groupadd

功能说明:新建群组。
语 法:groupadd [-g gid [-o]] [-r] [-f] [群组名称]
补充说明:groupadd 可指定群组名称来建立新的群组帐号.需要时可从系统中取得新群 组值。

参 数:
-g <群组识别码>  设置欲使用的群组识别码,group’s id。

实例

[image]

不加-g 则按照系统默认的gid创建组,跟用户一样,gid也是从500开始的

[image]

-g选项可以自定义gid

 

2. groupdel

功能说明:删除群组。
语 法:groupdel [群组名称]
补充说明:需要从系统上删除群组时,可用groupdel指令来完成这项工作。倘若该群组中仍包括某些用户,则必须先删除这些用户后,方能删除群组。

实例:

[image]

没有特殊选项。


 

3. groupmod

功能说明:更改群组识别码或名称。
语 法:groupmod [-g <群组识别码> <-o>][-n <新群组名称>][群组名称]
补充说明:需要更改群组的识别码或名称时,可用groupmod指令来完成这项工作。
参 数:
-g <群组识别码>  设置欲使用的群组识别码。 
-o  重复使用群组识别码。 
-n <新群组名称>  设置欲使用的群组名称。


 

用户管理

1.  useradd

功能说明:建立用户帐号。
语 法:useradd [-mMnr][-c <备注>][-d <登入目录>][-e <有效期限>][-f <缓冲天数>][-g <群组>][-G <群组>][-s <shell>][-u <uid>][用户帐号] 或 useradd -D [-b][-e <有效期限>][-f <缓冲天数>][-g <群组>][-G <群组>][-s <shell>]
补充说明:useradd可用来建立用户帐号。帐号建好之后,再用passwd设定帐号的密码.而可用userdel删除帐号。使用useradd指令所建立的帐号,实际上是保存在/etc/passwd文本文件中。
参 数:
-c<备注>  加上备注文字。备注文字会保存在passwd的备注栏位中。  
-d<登入目录>  指定用户登入时的启始目录。 
-D  变更预设值. 
-e<有效期限>  指定帐号的有效期限。 
-f<缓冲天数>  指定在密码过期后多少天即关闭该帐号。 
-g<群组>  指定用户所属的群组。 
-G<群组>  指定用户所属的附加群组。 
-m  自动建立用户的登入目录。 
-M  不要自动建立用户的登入目录。 
-n  取消建立以用户名称为名的群组. 
-r  建立系统帐号。 
-s<shell>   指定用户登入后所使用的shell。 
-u<uid>  指定用户ID。

实    例:

[image]

你会发现,创建test11时,加上了-M选项后,在/etc/passwd文件中test11那行的第六字段依然有/home/test11,可是ls查看该目录时,会提示该目录不存在。

[image]

-M选项的作用就是不创建用户的家目录。


2.  userdel

功能说明:删除用户帐号。
语 法:userdel [-r][用户帐号]
补充说明:userdel可删除用户帐号与相关的文件。若不加参数,则仅删除用户帐号,而不删除相关文件。
参 数:
  -f  删除用户登入目录以及目录中所有文件。

实例:

[image]

-r 选项的作用是删除用户时,连同用户的家目录一起删除。


3.  usermod

功能说明:修改用户帐号。
语 法:usermod [-LU][-c <备注>][-d <登入目录>][-e <有效期限>][-f <缓冲天数>][-g <群组>][-G <群组>][-l <帐号名称>][-s <shell>][-u <uid>][用户帐号]
补充说明:usermod可用来修改用户帐号的各项设定。
参 数:
-c<备注>  修改用户帐号的备注文字。 
-d登入目录>  修改用户登入时的目录。 
-e<有效期限>  修改帐号的有效期限。 
-f<缓冲天数>  修改在密码过期后多少天即关闭该帐号。 
-g<群组>  修改用户所属的群组。 
-G<群组>  修改用户所属的附加群组。 
-l<帐号名称>  修改用户帐号名称。 
-L  锁定用户密码,使密码无效。 
-s<shell>  修改用户登入后所使用的shell。 
-u<uid>  修改用户ID。 
-U  解除密码锁定。


 

 

其它相关命令

1.  passwd(password)

功能说明:设置密码。
语 法:passwd [-dklS][-u <-f>][用户名称]
补充说明:passwd指令让用户可以更改自己的密码,而系统管理者则能用它管理系统用户的密码。只有管理者可以指定用户名称,一般用户只能变更自己的密码。
参 数:
  -d  删除密码。本参数仅有系统管理者才能使用。 
  -f  强制执行。 
  -k  设置只有在密码过期失效后,方能更新。 
  -l  锁住密码。 
  -s  列出密码的相关信息。本参数仅有系统管理者才能使用。 
  -u  解开已上锁的帐号。


 

2.  su(super user)

功能说明:变更用户身份。
语 法:su [-flmp][--help][--version][-][-c <指令>][-s <shell>][用户帐号]
补充说明:su可让用户暂时变更登入的身份。变更时须输入所要变更的用户帐号与密码。
参 数:
-c<指令>或--command=<指令>  执行完指定的指令后,即恢复原来的身份。 
-f或--fast  适用于csh与tsch,使shell不用去读取启动文件。 
-.-l或--login  改变身份时,也同时变更工作目录,以及HOME,SHELL,USER,LOGNAME。此外,也会变更PATH变量。  
-m,-p或--preserve-environment  变更身份时,不要变更环境变量。 
-s<shell>或--shell=<shell>  指定要执行的shell。 
--help  显示帮助。 
--version  显示版本信息。 
[用户帐号]  指定要变更的用户。若不指定此参数,则预设变更为root


 

 

 

3.  sudo

功能说明:以其他身份来执行指令。
语 法:sudo [-bhHpV][-s <shell>][-u <用户>][指令] 或 sudo [-klv]
补充说明:sudo可让用户以其他的身份来执行指定的指令,预设的身份为root。在/etc/sudoers中设置了可执行sudo指令的用户。若其未经授权的用户企图使用sudo,则会发出警告的邮件给管理员。用户使用sudo时,必须先输入密码,之后有5分钟的有效期限,超过期限则必须重新输入密码。  
参 数:
-b  在后台执行指令。 
-h  显示帮助。 
-H  将HOME环境变量设为新身份的HOME环境变量。 
-k  结束密码的有效期限,也就是下次再执行sudo时便需要输入密码。 
-l  列出目前用户可执行与无法执行的指令。 
-p  改变询问密码的提示符号。 
-s<shell>  执行指定的shell。 
-u<用户>  以指定的用户作为新的身份。若不加上此参数,则预设以root作为新的身份。 
-v  延长密码有效期限5分钟。 
-V  显示版本信息。


 

认识/etc/passwd/etc/shadow

这两个文件可以说是linux系统中最重要的文件之一。如果没有这两个文件或者这两个文件出问题,则你是无法正常登录linux系统的。

[image]

/etc/passwd由’:’分割成7个字段,每个字段的具体含义是:

1)用户名(如第一行中的root就是用户名),代表用户账号的字符串。用户名字符可以是大小写字母、数字、减号(不能出现在首位)、点以及下划线,其他字符不合法。虽然用户名中可以出现点,但不建议使用,尤其是首位为点时,另外减号也不建议使用,因为容易造成混淆。

2)存放的就是该账号的口令,为什么是’x’呢?早期的unix系统口令确实是存放在这里,但基于安全因素,后来就将其存放到/etc/shadow中了,在这里只用一个’x’代替。

3)这个数字代表用户标识号,也叫做uid。系统识别用户身份就是通过这个数字来的,0就是root,也就是说你可以修改test用户的uid为0,那么系统会认为root和test为同一个账户。通常uid的取值范围是0~65535,0是超级用户(root)的标识号,1~499由系统保留,作为管理账号,普通用户的标识号从500开始,如果我们自定义建立一个普通用户,你会看到该账户的标识号是大于或等于500的。

4)表示组标识号,也叫做gid。这个字段对应着/etc/group 中的一条记录,其实/etc/group和/etc/passwd基本上类似。

5)注释说明,该字段没有实际意义,通常记录该用户的一些属性,例如姓名、电话、地址等等。不过,当你使用finger的功能时就会显示这些信息的(稍后做介绍)。

6)用户的家目录,当用户登录时就处在这个目录下。root的家目录是/root,普通用户的家目录则为/home/username,这个字段是可以自定义的,比如你建立一个普通用户test1,要想让test1的家目录在/data目录下,只要修改/etc/passwd文件中test1那行中的该字段为/data即可。

7)shell,用户登录后要启动一个进程,用来将用户下达的指令传给内核,这就是shell。Linux的shell有很多种sh, csh, ksh, tcsh, bash等,而Redhat/CentOS的shell就是bash。查看/etc/passwd文件,该字段中除了/bin/bash外还有/sbin/nologin比较多,它表示不允许该账号登录。如果你想建立一个账号不让他登录,那么就可以把该字段改成/sbin/nologin,默认是/bin/bash。

[image]

再来看看/etc/shadow这个文件,和/etc/passwd类似,用”:”分割成9个字段。

1)用户名,跟/etc/passwd对应。

2)用户密码,这个才是该账号的真正的密码,不过这个密码已经加密过了,但是有些黑客还是能够解密的。所以为了安全,该文件属性设置为600,只允许root读写。

3)上次更改密码的日期,这个数字是这样计算得来的,距离1970年1月1日到上次更改密码的日期,例如上次更改密码的日期为2012年1月1日,则这个值就是365*(2012-1970)+1=15331。

4)要过多少天才可以更改密码,默认是0,即不限制。

5)密码多少天后到期。即在多少天内必须更改密码,例如这里设置成30,则30天内必须更改一次密码,否则将不能登录系统,默认是99999,可以理解为永远不需要改。

6)密码到期前的警告期限,若这个值设置成7,则表示当7天后密码过期时,系统就发出警告告诉用户,提醒用户他的密码将在7天后到期。

7)账号失效期限。你可以这样理解,如果设置这个值为3,则表示:密码已经到期,然而用户并没有在到期前修改密码,那么再过3天,则这个账号就失效了,即锁定了。

8)账号的生命周期,跟第三段一样,是按距离1970年1月1日多少天算的。它表示的含义是,账号在这个日期前可以使用,到期后账号作废。

9)作为保留用的,没有什么意义。