每个LINUX登陆的使用者至少都会取得两个 ID :
使用者 ID (User ID ,简称 UID)
群组 ID (Group ID ,简称 GID)
这个是LINUX下用户与群组最基础的知识。本条目简单介绍LINUX下的用户与群组。
用户是能够获取系统资源的权限的集合,账号包括用户名和密码,用户通过账号登陆系统.但是LINUX系统并不是通过用户名称来识别用户,而是通过UID(User IdentificATIon),即用户标识符. 并且LINUX的用户分为三类:
用户类型 UID范围 简介 超级管理员 0 ##root用户,具有操作整个系统的所用权限,默认禁止该账户直接登录 系统用户 1~499 ##能够登录系统获得有限权限的用户,并且可以使用sudo获取root权限 默认系统用户为普通用户 普通用户 500~65535(但目前支持到4294967295) ##前两类用户建立的用户,只能执行普通操作用户信息保存在/etc/passwd中,passwd文件是以行为单位的配置文件,每行定义系统上的一个用户,行内分为字段,字段之间由一个冒号隔开。这些字段依次为:
用户名:密码:用户ID:主要组ID:GECOS:主目录:登录shell字段解释:
用户名:就是一个用户名,登录时候用的 密码:在旧的UNIX系统上,这个字段含有用户的加密密码,为了安全性,现在的linux均显示为x或*号(password并非密码,为密码占位符,实际密码存放在/etc/shadow下) 用户ID:linux内核用于识别用户的一个整数ID 主要组ID:linux内核用于识别用户主要组的一个整数ID GECOS:用户全名,安装linux时如果不输入全名,则显示为跟用户名一样,如果输入,则显示为全名(不可用于登录) 主目录:用户登录时,他的登录Shell将使用这个目录作为当前工作目录 登录Shell:用户登录时的默认Shell,在redhat 企业版中,登录shell通常是/bin/bash一个/etc/passwd文件中的典型几行数据
root:x:0:0:root:/root:/bin/bash apache:x:48:48:Apache:/var/www:/sbin/nologin tomcat:x:91:91:Apache Tomcat:/usr/share/tomcat6:/bin/sh:第2个字段用户加密后的密码在现代linux中不显示的,显示为"x"或"*"号,如需了解passwd详细信息,可终端执行: man 5 passwd
命令来查看.
以前用户的加密都是被保存在/etc/passwd文件中的第2个字段中,并且每个用户都可以读取,随着计算机性能的发展,暴力破解变得相对比较容易,因此,现在linux采用一种“影子密码”,用户的密码被保存在专门的/etc/shadow文件中,其权限不允许普通用户查看,仅root用户可以查看。了解详细信息可终端执行:
man 5 shadow/etc/shadow文件信息存储结构,包括九个字段用:隔开依次为:
用户名:加密密码:上次更改密码的时间:最小更改密码间隔:密码有效期限:密码过期提示时间:密码锁定期:账户有效期:保留字段
第一字段:用户名(也被称为登录名),在/etc/shadow中,用户名和/etc/passwd 是相同的,这样就把passwd 和shadow中用的用户记录联系在一起;这个字段是非空的;
第二字段:密码(已被加密),如果是有些用户在这段是x,表示这个用户不能登录到系统;这个字段是非空的;
第三字段:上次修改口令的时间;这个时间是从1970年01月01日算起到最近一次修改口令的时间间隔(天数),您可以通过passwd 来修改用户的密码,然后查看/etc/shadow中此字段的变化;
第四字段:两次修改口令间隔最少的天数;如果设置为0,则禁用此功能;也就是说用户必须经过多少天才能修改其口令;此项功能用处不是太大;默认值是通过/etc/login.defs文件定义中获取,PASS_MIN_DAYS 中有定义;
第五字段:两次修改口令间隔最多的天数;这个能增强管理员管理用户口令的时效性,应该说在增强了系统的安全性;如果是系统默认值,是在添加用户时由/etc/login.defs文件定义中获取,在PASS_MAX_DAYS 中定义;
第六字段:提前多少天警告用户口令将过期;当用户登录系统后,系统登录程序提醒用户口令将要作废;如果是系统默认值,是在添加用户时由/etc/login.defs文件定义中获取,在PASS_WARN_AGE 中定义;
第七字段:在口令过期之后多少天禁用此用户;此字段表示用户口令作废多少天后,系统会禁用此用户,也就是说系统会不能再让此用户登录,也不会提示用户过期,是完全禁用;
第八字段:用户过期日期;此字段指定了用户作废的天数(从1970年的1月1日开始的天数),如果这个字段的值为空,帐号永久可用; 第九字段:保留字段,目前为空,以备将来Linux发展之用
举例例子说明:
beinan:$1$VE.Mq2Xf$2c9Qi7EQ9JP8GKF8gH7PB1:13072:0:99999:7::: linuxsir:$1$IPDvUhXP$8R6J/VtPXvLyXxhLWPrnt/:13072:0:99999:7::13108:
第一字段:用户名(也被称之为登录名),在例子中有两条记录,也表示有两个用户beinan和linuxsir
第二字段:被加密的密码,如果有的用户在此字段中是x,表示这个用户不能登录系统,也可以看作是虚拟用户,不过虚拟用户和真实用户都是相对的,系统管理员随时可以对任何用户操作;
第三字段:表示上次更改口令的天数(距1970年01月01日),上面的例子能说明beinan和linuxsir这两个用户,是在同一天更改了用户密码,当然是通过passwd 命令来更改的,更改密码的时间距1970年01月01日的天数为13072;
第四字段:禁用两次口令修改之间最小天数的功能,设置为0
第五字段:两次修改口令间隔最多的天数,在例子中都是99999天;这个值如果在添加用户时没有指定的话,是通过/etc/login.defs来获取默认值,PASS_MAX_DAYS 99999;您可以查看/etc/login.defs来查看,具体的值;
第六字段:提前多少天警告用户口令将过期;当用户登录系统后,系统登录程序提醒用户口令将要作废;如果是系统默认值,是在添加用户时由/etc/login.defs文件定义中获取,在PASS_WARN_AGE 中定义;在例子中的值是7 ,表示在用户口令将过期的前7天警告用户更改期口令;
第七字段:在口令过期之后多少天禁用此用户;此字段表示用户口令作废多少天后,系统会禁用此用户,也就是说系统会不能再让此用户登录,也不会提示用户过期,是完全禁用;在例子中,此字段两个用户的都是空的,表示禁用这个功能;
第八字段:用户过期日期;此字段指定了用户作废的天数(从1970年的1月1日开始的天数),如果这个字段的值为空,帐号永久可用;在例子中,我们看到beinan这个用户在此字段是空的,表示此用户永久可用;而linuxsir这个用户表示在距1970年01月01日后13108天后过期,算起来也就是2005年11月21号过期;
第九字段:保留字段,目前为空,以备将来Linux发展之用
useradd命令可以建新用户hilbert,终端执行:
sudo useradd hilbert该命令会在 /etc/passwd中创建如下条目。hilbert:*:1001:1001::/home/hilbert:/bin/sh
:useradd在密码区域放了一个星号,在指定一个真正的密码前禁用该账号。
useradd在被赋予一些参数后就会更加有用。
举例说明,我们指定 hilbert 的首要组为“faculty”,还需要把他添加进“famous”组。我们自行设置了家目录并让 useradd命令在这个家目录不存在时创建它.终端执行:
sudo useradd -c "David Hilbert" -d /home/math/hilbert -g faculty -G famous -m -s /bin/sh hilbert该命令创建了下面的passwd条目:
sudo hilbert:x:1001:1001:David Hilbert:/home/math/hilbert:/bin/sh分配到的UID比系统中最高的UID要高,与之相关的shadow条目为:
sudo hilbert:!:15597:0:99999:7:::useradd也将 "hilbert"添加到/etc/group中的 “faculty”及“famous”组。创建目录/home/math/hilbert,并根据/etc/skel目录的内容创建相关文件。
可以通过运行useradd -D来确定useradd的默认设置。 你也可以将-D标记(flag)与其他参数联用来设置这些默认值。
adduser命令也可以建新用户hilbert,终端执行:
sudo adduser hilbert并且自动向导设置hilbert用户的家目录,而无密码和系统Shell。
useradd是一个ELF可执行程序,它会添加用户名,并创建和用户名相同的组名,但它并不在/home目录下创建基于用户名的目录,也不提示创建新的密码。
-b, –base-dir BASE_DIR 指定home目录的base目录 -d, –home-dir HOME_DIR 指定home目录 -g, –gid GROUP 指定gid -l, –no-log-init do not add the user to the lastlog and faillog databases不要把用户添加到lastlog和failog中, 这个用户的登录记录不需要记载
-M, –no-create-home 不要建立home目录 -p, –password PASSWORD 指定新用户的密码 -r, –system 建立一个系统帐号 -s, –shell SHELL 指定shell adduser -m -d /usr/system -s /bin/bash -p passwd system 而adduser是一个perl脚本, 可以交互式地设定一些用户参数问题
adduser的-p 参数 并不能加密密码 /usr/sbin/usermod 与 useradd的参数很类似 usermod –password PASSWORD username总结
总的来讲,在Linux中,adduser更适合初级使用者,因为不用去记那些繁琐的参数选项,只要跟着系统的提示一步一步进行下去就行,缺点就是整个创建过程比较复杂而漫长;
而useradd比较适合有些高阶经验的使用者,往往一行命令加参数就能解决很多问题,所以创建起来十分方便。
usermod命令可以用来修改用户账户的各项设置和相关信息
语法:usermod [-LU][-c <备注>][-d <登入目录>][-e <有效期限>][-f <缓冲天数>][-g <群组>][-G <群组>][-l <帐号名称>][-s][-u][用户帐号]
参数:
-c<备注> 修改用户帐号的备注文字。
-d登入目录> 修改用户登入时的目录。
-e<有效期限> 修改帐号的有效期限。
-f<缓冲天数> 修改在密码过期后多少天即关闭该帐号。
-g<群组> 修改用户所属的群组。
-G<群组> 修改用户所属的附加群组。
-l<帐号名称> 修改用户帐号名称。
-L 锁定用户密码,使密码无效。
-s 修改用户登入后所使用的shell。
-u 修改用户ID。
-U 解除密码锁定。
例子:
sudo usermod -e 2015-07-04##hilbert 设置hilbert的账号于2015年07月04日到期
sudo usermod -G staff##newuser2将newuser2添加到组staff中
sudo usermod -l newuser1##newuser修改newuser的用户名为newuser1
sudo usermod -L newuser1##锁定账号newuser1
sudo usermod -U newuser1
##解除对newuser1的锁定
:usermod不允许你改变正在线上的使用者帐号名称 。 当usermod用来改变user ID,必须确认这名user没在电脑上执行任何程序。 你需手动更改使用者的crontab档。也需手动更改使用者的at工作档。 采用NIS server须在server上更动相关的NIS设定 。
userdel命令用来删除用户账户,要移除hilbert用户,我们可以使用下面的命令:
sudo userdel hilbert##删除hilbert用户在passwd、shadow、group文件中的相关条目,不删除hilbert的家目录
sudo userdel -r hilbert##删除hilbert用户在passwd、shadow、group文件中的相关条目并且删除hilbert的家目录
uc电脑园提供的技术方案或与您产品的实际情况有所差异,您需在完整阅读方案并知晓其提示风险的情况下谨慎操作,避免造成任何损失。
未知的网友