Linux学习笔记(12)用户和用户组管理
越是对服务器安全性要求高的服务器,越需要建立合理的用户权限等级制度和服务器操作规范。在Linux中主要是通过用户配置文件来查看和修改用户信息。
1 用户信息文件
(1)用户信息文件/etc/passwd
vim命令显示该文件的内容:
root:x:::root:/root:/bin/bash bin:x:::bin:/bin:/sbin/nologin daemon:x:::daemon:/sbin:/sbin/nologin
可以发现,该文件的每一行共有7个字段。其中:
第1个字段是用户名称;
第2个字段是密码标志;
第3个字段是UID(用户标志),其中0表示超级用户(当普通用户的UID改为0时,服务器将该用户视为超级用户)。1~499为系统用户(伪用户),不能登陆,也不能删除,500~65535为普通用户,因此,新建的第一个用户的UID即为500。
第4个字段为GID(用户初始组ID)。
初始组是指用户一登陆就立即拥有这个用户组的相关权限,每个用户的初始组只能有一个,一般就是和这个用户的用户名相同的组名作为这个用户的初始组。
附加组是指用户可以加入多个其他的用户组,并拥有这些组的权限,附加组可以有多个。
第5个字段为用户说明。可以添加,也可以不添加。
第6个字段为家目录。普通用户的家目录一般为/home/用户名/,超级用户的家目录为/root/。
第7个字段表示登陆之后的Shell。Shell是Linux的命令解释器,除了标准的Shell是/bin/bash之外,如果暂时禁用用户时,可将其写为/sbin/nologin。
(2)影子文件/etc/shadow
1)/etc/shadow的内容:
root:$$NvfaINezKBg3Cqn7$bB5im5NRggTOa45clyXAXjud4YDhyDlTUgBfqy51UieAx1aUOreJCyPkoaG4MRUkSJGp2Xd9lnqXPIHEfM.4A0::::::: bin:*::::::: daemon:*:::::::
可以发现,影子文件由9个字段组成。其中:
第1个字段表示用户名。
第2个字段表示加密密码。CentOS 6.5已经加密算法从MD5升级为SHA512散列加密方法。如果密码是"!!"或"*"代表没有密码,不能登陆,即为伪用户。
第3个字段为密码最后一次修改日期,使用1970年1月1号作为标准时间,每过一天时间戳加1。
第4个字段为两次密码修改设定的间隔时间(该时间基于与第3个字段)。
第5个字段表示密码有效期(和第2字段相比)。
第6个字段表示密码修改到期前的警告天数(和第5字段相比)。
第7个字段表示密码过期后的宽限天数(和第5字段相比)。
第8个字段表示账号失效时间(要用时间戳表示)。其中0表示密码过期后立即失效,-1表示密码永远不会失效。
第9个字段保留。
2)时间戳的换算
把时间戳换算为日期,其命令为:
[root@localhost ~]# date -d "1970-01-01 16461 days" Mon Jan :: CST
将日期换算为时间戳,其命令为:
[root@localhost ~]# echo $(($(date --date="2015/01/26" +%s)/86400+1)) 16461
(3)组信息文件和组密码文件
1)组信息文件/etc/group
[root@localhost ~]# vim /etc/group root:x:: bin:x::bin,daemon daemon:x::bin,daemon sys:x::bin,adm adm:x::adm,daemon
从组信息文件中可以看出,共有4个字段。
第1个字段为组名;
第2个字段为组密码标志(组密码不常用);
第3个字段为GID(组ID);
第4个字段为组中附加用户。
2)组密码文件/etc/gshadow
[root@localhost ~]# vim /etc/gshadow root::: bin:::bin,daemon daemon:::bin,daemon sys:::bin,adm adm:::adm,daemon
组密码文件也具有4个字段:
第1个字段为组名;
第2个字段为组密码;
第3个字段为组管理员用户名;
第4个字段为组中附加用户。
2 用户管理相关文件
1)用户的家目录
普通用户的家目录一般为/home/用户名/,所有者和所属组均为此用户,权限为700。
超级用户的家目录为/root/,所有者和所属组都是root用户。如果将普通用户修改为超级用户时,普通用户的家目录不会改变。
2)用户的邮箱
新建用户的邮箱的路径一般为/var/spool/mail/用户名。
3)用户模板目录
用户的模板目录为/etc/skel,每创建一个用户,用户的家目录都会从该目录下拷贝。
3 用户管理命令
(1)useradd
1)格式为:useradd [选项] 用户名
其中:-u(UID)表示手工指定用户的UID号,-d(家目录)表示手工指定用户的家目录,-c(用户说明)表示手工指定用户的说明,-g(组名)表示手工指定用户的初始组,-G(组名)表示指定用户的附加组,-s(Shell)表示手工指定用户登录的shell,默认为/bin/bash。
2)添加默认用户
例:添加默认用户ws:
[root@localhost ~]# useradd ws
该操作修改了用户的信息文件,可通过如下命令查看:
[root@localhost ~]# grep ws /etc/passwd ws:x::::/home/ws:/bin/bash [root@localhost ~]# grep ws /etc/shadow ws:!!::::::: [root@localhost ~]# grep ws /etc/group ws:x:: [root@localhost ~]# grep ws /etc/gshadow ws:!:: [root@localhost ~]# ll -d /home/ws/ drwx------. ws ws Jan : /home/ws/ [root@localhost ~]# ll /var/spool/mail/ws -rw-rw----. ws mail Jan : /var/spool/mail/ws
例:添加指定用户:
[root@localhost ~]# useradd -u -G root,bin -d /home/ws1 -c "test user" -s \ > /bin/bash ws1
其中"\"表示换行。
3)用户默认文件
① /etc/default/useradd
[root@localhost ~]# vim /etc/default/useradd # useradd defaults file GROUP= #用户默认组 HOME=/home #用户默认家目录 INACTIVE=- #密码过期宽限天数(shadow第7个字段) EXPIRE= #密码失效时间 SHELL=/bin/bash #默认shell SKEL=/etc/skel #模板目录 CREATE_MAIL_SPOOL=yes #是否建立邮箱
② /etc/login.defs
PASS_MAX_DAYS #密码有效期 PASS_MIN_DAYS #密码修改间隔 PASS_MIN_LEN #密码最小位数 PASS_WARN_AGE #密码到期警告 UID_MIN #最小和最大UID范围 UID_MAX ENCRYPT_METHOD SHA512 #加密模式
(2)修改用户密码
命令格式
passwd [选项] 用户名
用户修改自己的密码时只需输入passwd即可。其中-S表示查询用户密码状态(仅root可用),-l表示暂时锁定用户, 实际操作是在/etc/passwd文件的密码前加上了感叹号"!!",-u表示解锁用户,--stdin表示可通过管道输出的数据作为用户的密码(shell编程常用到:echo "123" | passwd --stdin ws)。
(3)修改用户信息usermod及修改用户密码状态chage
1)usermod命令格式
usermod [选项] 用户名
其中,-u表示修改用户UID,-G表示修改用户的附加组,-c表示修改用户说明,-L表示临时锁定用户,-U表示解锁用户锁定。
2)chage命令格式
chage [选项] 用户名
其中,-l选项表示列出用户的详细密码状态,-d(日期)表示修改密码最后一次更改日期(shadow第3字段),-m(天数)表示两次密码修改间隔(shadow第4字段),-M(天数)表示密码有效期(5字段),-W(天数)表示密码过期前的警告天数(6字段),-I(天数)表示密码过期后的宽限天数(7字段),-E(日期)表示账号失效时间(8字段)。
例:
chage -d 0 ws #该命令其实是将密码修改日期归0,这样用户一登陆就要修改密码
(4)删除用户userdel和用户切换命令
1)userdel命令格式
userdel [-r] 用户名
其中,-r选项表示删除用户的同时删除用户家目录,也可以手工修改文件删除用户名。
2)切换命令格式
su [选项] 用户名
只使用"-"选项代表连带用户的环境变量一起切换,-c表示仅执行一次命令,而不切换用户身份。
例:不切换root,但执行useradd命令添加user1用户:
su - root -c "useradd user1"
4 用户组管理
1)添加用户组:groupadd [选项] 组名
其中,-g表示指定GID。
2)修改用户组:groupmod [选项] 组名
其中,-g表示修改组ID,-n表示修改组名(一般不建议修改)。
例:将组名tg修改为wstest:
[root@localhost ~]# groupadd tg [root@localhost ~]# groupmod -n wstest tg
3)删除用户组:groupdel 组名
注意:如果组中有初始用户,不能删除该组,如果是附加用户,则不影响组的删除。
4)把用户添加入组或从组中删除
gpasswd [选项] 组名
其中,-a表示将用户加入组,-d表示将用户从组中删除。
例:新建一个用户ws1,将其加入wstest组中,然后删除:
[root@localhost ~]# useradd ws1 [root@localhost ~]# echo "ws1" | passwd --stdin ws1 Changing password for user ws1. passwd: all authentication tokens updated successfully. [root@localhost ~]# gpasswd -a ws1 wstest Adding user ws1 to group wstest [root@localhost ~]# gpasswd -d ws1 wstest Removing user ws1 from group wstest
Linux学习笔记(12)用户和用户组管理的更多相关文章
- Linux学习笔记:用户与用户组
基本概念 Linux系统是一个多用户多任务的分时操作系统,任何一个要使用系统资源的用户,都必须首先向系统管理员申请一个账号,然后以这个账号的身份进入系统. 用户 也就是说任何需要使用操作系统的用户,都 ...
- linux常用命令之--用户与用户组管理命令
linux的用户与用户组管理命令 1.用户和群组 groupadd:用于添加新的组群 其命令格式如下: groupadd [-option] 群组名 常用参数: -g GID:指定创建群组的GID(G ...
- linux —— 学习笔记(用户管理与权限控制)
目录:1.用户的创建和管理 2.组的创建和管理 3.文件执行权限的控制 4.不用密码执行sudo 1.用户的创建和管理 用户的创建和管理: useradd.usermod . userdel . ...
- Linux学习笔记1_用户和权限
自从我大微软终于放下身段,决定给开源社区一个迟来的拥抱,追随多年的拥趸们像是突然得到了女神的垂青,各种茫然失措.痛哭流涕.欢欣鼓舞,纷纷唱了起来:“等了好久终于等到今天,梦了好久终于把梦实现……”唱完 ...
- Liunx学习总结(三)--用户和用户组管理
用户和组的基本概念 用户和组是操作系统中一种身份认证资源. 每个用户都有用户名.用户的唯一编号 uid(user id).所属组及其默认的 shell,可能还有密码.家目录.附属组.注释信息等. 每个 ...
- Linux学习笔记12—磁盘管理
一.查看磁盘或目录的容量 1. df命令 作用:查看已挂载磁盘的总容量.使用容量.剩余容量等,可以不加任何参数,默认是按k为单位显示的 参数: -I : 查看inodes使用状况 -h: 使用合适的 ...
- linux笔记:用户和用户组管理-用户管理命令
useradd(添加用户.在使用useradd添加一个用户后,必须使用passwd给该用户设置密码,该用户才能登陆): passwd(设置或修改用户密码): usermod(修改用户信息): chag ...
- linux笔记:用户和用户组管理-用户配置文件
用户信息文件(/etc/passwd): 影子文件(/etc/shadow) 组信息文件(/etc/group)和组密码文件(/etc/gshadow):
- Linux学习笔记19-ssh远程管理
远程管理 服务器一般运行在IDC机房中,一般都是通过远程管理方式对服务器进程控制. 常见的远程管理工具: RDP(remote desktop protocol)协议,window远程桌面管理 Tel ...
- Linux学习笔记(6)-工作管理
什么是工作管理 工作来自job命令的翻译,job命令可以查看后台工作的进程.举例来说什么是工作管理,当你要打包一个比较大的目录时,很耗时间,但是你同时又需要使用别的命令.你会想我可以到开几个终端进行登 ...
随机推荐
- Java I/O模型的简单说明
1.同步和异步 同步:如果有多个任务或者事件要发生,这些任务或者事件必须逐个地进行,一个事件或者任务的执行会导致整个流程的暂时等待,这些事件没有办法并发地执行,最简单的例子就是顺序的执行两个方法,当第 ...
- MPlayer-2016-bin-noConsole
运行 Install-RMenu.cmd 添加右键播放功能 ; 往前0.05秒 大概10多个帧 ' 往后0.05秒 大概10多个帧 鼠标右键 快速定位 鼠标中键 退出 F1 缩小 F2 原始大小 F3 ...
- 内存管理_JAVA内存管理
Java虚拟机规范中试图定义一种Java内存模型(Java Memory Model,JMM)来屏蔽各个硬件平台和操作系统的内存访问差异,以实现让Java程序在各种平台下都能达到一致的内存访问效果.那 ...
- Divide and conquer:Showstopper(POJ 3484)
Showstopper 题目大意:数据挖掘是一项很困难的事情,现在要你在一大堆数据中找出某个数重复奇数次的数(有且仅有一个),而且要你找出重复的次数. 其实我一开始是没读懂题意的...主要是我理解错o ...
- assign() 方法
assign() 方法可加载一个新的文档. 语法 location.assign(URL) <html> <head> <script type="text/j ...
- [Android] 关于getinstalledpackages参数的分析
reference to : http://blog.csdn.net/luojiusan520/article/details/47696891 getinstalledpackages()的方法 ...
- September 28th 2016 Week 40th Wednesday
Love all, trust a few, do wrong to none. 爱所有人,信任一些人,不妨害任何人. Reading is a way for me to expand my min ...
- git安装--linux下的安装
一般linux自带git版本很旧,会有一定问题,可以先卸载系统自带git: yum remove git下载及安装git: wget https://github.com/git/git/archiv ...
- QRTZ_表注释
QRTZ_CALENDARS 存储Quartz的Calendar信息QRTZ_CRON_TRIGGERS 存储CronTrigger,包括Cron表达式和时区信息QRTZ_FIRED_TRIGGERS ...
- ASP.NET SignalR 与 LayIM2.0 配合轻松实现Web聊天室(三) 之 实现单聊,群聊,发送图片,文件。
上篇讲解了如何搭建聊天服务器,以及客户端js怎么和layui的语法配合.服务器已经连接上了,那么聊天还会远吗? 进入正题,正如上一篇提到的我们用 Client.Group(groupId)的方法向客户 ...