教程

用户管理(用户类型,添加,修改,删除用户)- 系统管理 -Deepin深度系统用户手册

方砖大叔
08月21日 08:52
此文约为5389字,阅读需要12分钟
目录:

1 前言

2 用户的类型

3 /etc/passwd

4 /etc/shadow

5 添加用户

6 修改用户

7 删除用户

用户管理(用户类型,添加,修改,删除用户)- 系统管理 -Deepin深度系统用户手册

前言

每个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

用户信息保存在/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

用户管理(用户类型,添加,修改,删除用户)- 系统管理 -Deepin深度系统用户手册:第2个字段用户加密后的密码在现代linux中不显示的,显示为"x"或"*"号,如需了解passwd详细信息,可终端执行: man 5 passwd

命令来查看.

/etc/shadow

以前用户的加密都是被保存在/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

用户管理(用户类型,添加,修改,删除用户)- 系统管理 -Deepin深度系统用户手册: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的锁定

用户管理(用户类型,添加,修改,删除用户)- 系统管理 -Deepin深度系统用户手册: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的家目录
Deepin深度系统用户手册
安装&卸载
如何在桌面新建文件夹/文档
原生安装教程
Deepin深度系统体验安装教程 - 安装&卸载 
Deepin深度系统系统卸载教程
Deepin深度系统安装器
基本操作 新建文件夹/文档、排列方式、设置显示器、热区、壁纸
任务栏图标、切换显示模式、设置任务栏位置、大小、显示隐藏、回收站 
账户管理(创建,更改账户头像,密码,删除账户)
显示设置(单屏设置,多屏设置,自定义设置)
默认程序设置(选中、添加、删除默认程序设置) 
个性化设置(主题、字体设置)
硬件资源设备管理 蓝牙设置(蓝牙开关、蓝牙名称、蓝牙设备)
网络设置(有线,无限,移动,宽带,vpn,代理网络设置)
声音设置(设置扬声器、耳机、音效、高级设置)
日期和时间(设置日期时间、时区、自动同步) 
电源管理(设置显示器休眠、设置锁屏时间)
设备管理(鼠标、键盘、触控板、语言)
系统管理(系统信息、协议、系统更新)
窗口管理器(打开,添加,切换,命名,桌面窗口等)
桌面操作 新手入门(概述、打开,关闭)文件
文件(夹)功能(新建,重命名,复制,压缩,删除等)
磁盘以及选项管理(显示、卸载、弹出磁盘)
常用操作(搜索文件、管理标签、书签、共享、网上邻居、创建链接等)
应用商店(运行,关闭,以及主界面)
应用管理(搜索,下载,安装,更新,升级,卸载)
看图管理(介绍,运行,关闭)
图片操作(复制,打印,删除,旋转,设置为壁纸)
图片管理(时间线、相册管理)
系统管理 启动管理(系统启动流程)
引导系统(系统引导器)
Linux内核(引导系统)
Linux内核错误(引导系统)
Linux初始化(初始化)
开机动画 (初始化)
电源管理(待机,休眠,关机,重启)
电源管理(能耗、节能、亮度,CPU频率,内核等)
用户管理 用户管理(用户类型,添加,修改,删除用户)
群组管理(分组,群组密码,身份切换,常见问题)
文件管理 文件与目录(命名,路径,目录,图形管理,命令管理)
文件与目录权限(文件、目录权限)
管理文件权限(图形、命令、改变文件权限、umask介绍等)
文件系统(本地,网络文件系统)
磁盘管理 挂载(挂载点,FHS,挂载文件系统(图形管理,命令管理))
挂载点管理 - 文件管理
磁盘管理(分区,格式化,维护,写入,配额)
软件管理 源代码与程序 、进程分类、属性、父进程和子进程
配置文件目录,备份、删除、清理残余等
开机启动配置文件管理
快捷方式原理 - Desktop Entry 文件
软件源(文件,修改,同步软件源)
源代码包(修改,获取,编译安装,删除)
包管理命令(dpkg,apt,apt-cache,apt-file,aptitude,dselcet)
系统服务
deepin深度系统常见服务
服务(分类,窗口类型,工作形态的类型,命名,启动方式)
服务管理(chkconfig,service) 
登录管理器(类型,设置,切换登录管理器,登录出错)桌面组件
Shell(命令Shell,图形Shell)桌面组件
常见问题
为什么要自定义多个分区?
为什么不默认开机挂载Win分区
不能挂载特定的win分区?
Linux系统盘分区太小,不够用,问是不是要重装系统?
为什么不把软件全部转换成deb包?
如何删除APT缓存?
如何删除软件配置?
添加PPA?
无法解析或打开软件包的列表或是状态文件
出现Unable to correct problems, you have held broken packages的解决办法
dpkg 被中断,您必须手工运行 sudo dpkg --configure -a解决此问题
下列签名无法进行验证: NO_PUBKEY 06EA41DE4F6C1E86
出现They have been ignored, or old ones used instead的解决办法
E: 无法锁定管理目录(/var/lib/dpkg/),是否有其他进程正占用它?
无法获得锁 /var/lib/dpkg/lock - open (11: 资源暂时不可用) 
如何删除卸载软件包?
为什么不能同时安装一个以上的软件
无法下载bzip2, Hash 校验和不符
在deepin系统中如何设置GTK主题和窗口主题?
在deepin系统中如何安装与设置图标主题? 
在deepin系统中如何安装与设置光标(鼠标)主题?
在deepin系统中如何设置开机音乐? 
在deepin系统中如何安装系统字体?
在deepin系统中如何设置系统语言? 
发表评论
评论列表
共0条
点击加载更多