1.4 管理用户和组账户

用户

每一个用户都有一个UID,这个UID是唯一的,可以理解为身份证号码
每个用户都至少在一个用户组中,若果没有指定,则默认存在于同名组中
多个用户可以属于同一个组,一个用户也可以属于多个组,但是这种情况下要有一个主要组

用户的分类

超级用户(管理员):root用户,UID=0
程序用户:不能登录,用来执行某些程序特有的用户
普通用户:可以简单理解为个人用的登录账号

和用户有关的文件

/etc/passwd文件

该文件用于保存用户的基本信息,每一行对应一个用户的账号记录

'我们来看一下这个文件,每一行都被:分隔为7个字段'
[root@redhat-1-6 tmp]# tail -5 /etc/passwd
postfix:x:89:89::/var/spool/postfix:/sbin/nologin
sshd:x:74:74:Privilege-separated SSH:/var/empty/sshd:/sbin/nologin
tcpdump:x:72:72::/:/sbin/nologin
oprofile:x:16:16:Special user account to be used by OProfile:/home/oprofile:/sbin/nologin
mysql:x:27:27:MySQL Server:/var/lib/mysql:/bin/false
'字段1	用户名'
'字段2	密码占位符x'
'字段3	用户账号的UID'
'字段4	基本组的GID'
'字段5	用户的全名'
'字段6	用户家目录'
'字段7	登录shell,如果需要某个用户不能登录,可以设置它的登陆shell为/sbin/nologin或者/bin/false'
'这里的mysql用户,UID=27,GID=27,全名:MySQL Server,家目录:/var/lib/mysql,登录shell:/bin/false 是用来运行MySQL数据库的用户,不需要登录,这就是程序用户'
/etc/shadow文件

用来保存用户密码的各种信息
每一行对应一个用户的密码记录

'我们来看一下这个文件,每一行都被:分隔为9个字段'
[root@redhat-1-6 tmp]# head -5 /etc/shadow
root:$6$wmA5eoMLiRgss.kP$ZFKk9iD1YvjJ0GMdQUPwE9obj0ST5TnW8gItVt77jem858FBdB1UjO5Olk.NId9JCM5nll6UyeedzrY0Efk3./:17949:0:99999:7:::
bin:*:15937:0:99999:7:::
daemon:*:15937:0:99999:7:::
adm:*:15937:0:99999:7:::
lp:*:15937:0:99999:7:::
'字段1表示用户账号的名称'
'字段2表示加密的密码字串信息			!表示锁定了,不能登录'
'字段3表示上次修改密码的时间(从1970年到改密码时间相隔的天数)'
'字段4表示密码的最短有效天数,默认值是0(至少要用多少天才能改密码)'
'字段5表示密码的最长有效天数,默认值是99999'
'字段6表示提前多少天警告用户口令将过期,默认值7'
'字段7表示在密码过期多少天之后禁用此用户(宽松多少天)'
'字段8表示账号失效时间,默认值为空'
'字段9表示保留字段(未使用)'
  • 字段2详解
:$6$j1qF5W7eZICdrB.D$vr3HTF0oHTuJ/g4BXgYii6WmnNpKoRt2seljJMxELBMcjH3ijfCvM8Zv5Qz2JN3TtrcUiGOK9C1hyM1wcMs5Q/:
'字段2用$符号分为了3部分'
第一部分的数字$6$表示是使用了什么加密算法
1	MD5	
2a	Blowfish
5	SHA-256
6	SHA-512
通过openssl可以生成密文密码		openssl passwd -1 密码
第二部分表示盐值(salt),提高密码安全性的,是随机生成的
第三部分是算法按照密码生成的,同一算法相同的密码是一样的
/etc/skel/*文件

新建用户账号时,/etc/skel/ 里的文件(包括隐藏文件)会自动复制到用户的家目录

[root@redhat-1-6 tmp]# ll -a /etc/skel/
total 28
drwxr-xr-x.   2 root root  4096 Feb 22 22:52 .
drwxr-xr-x. 101 root root 12288 Mar 31 01:20 ..
-rw-r--r--.   1 root root    18 Jul  9  2013 .bash_logout      #用户每次退出登录时执行
-rw-r--r--.   1 root root   176 Jul  9  2013 .bash_profile     #用户每次登录时执行
-rw-r--r--.   1 root root   124 Jul  9  2013 .bashrc           #每次进入新的bash环境时执行
[root@redhat-1-6 tmp]# ll -a /etc/profile
-rw-r--r--. 1 root root 1796 Aug 20  2013 /etc/profile         #真正要执行的脚本文件
/etc/login.defs文件

保存了用户初始化属性的设置,比如设置普通用户的UID和GID范围等

每个组也有一个唯一的GID

和组有关的文件

/etc/group文件

保存组的账号的文件,一行对应一个组

'我们来看一下这个文件'
[root@redhat-1-6 tmp]# tail -5 /etc/group
sshd:x:74:
tcpdump:x:72:
oprofile:x:16:
slocate:x:21:
mysql:x:27:
'第一部分表示组账号名'
'第二部分表示密码(不用设置)'
'第三部分表示GID'
'第四部分表示组中的用户(不一定完全显示)'
'主要组    用户至少属于一个组(主要组)默认情况下创建用户会自动创建一个同名的组,是其主要组
 与用户相关的默认组,在/etc/passwd中的第四部分表示
 次要组用户可以同时属于其他的组,在/etc/group文件的第四个字段定义'

添加和删除用户

添加用户

  • useradd命令创建用户
  • 语法: useradd [选项] … user_name
  • 常用命令选项
-u		指定UID
-d		指定宿主目录,默认为/home/用户名
-e		指定账号失效时间
-g		指定用户的基本组名(GID号)
-G		指定用户的附加组名(GID号)
-M 		不为用户创建家目录
-s		指定用户的登录shell
-c		指定字段五的详细信息

在这里插入图片描述
useradd命令执行后,修改了/etc/passwd、/etc/shadow、/etc/group文件,在/home下创建了新用户的家目录,并将/etc/skel/下的所有文件复制了进去,还会在/var/spool/mail 创建一个与用户名同名的用户邮箱

删除用户

  • userdel命令删除用户
  • 语法: userdel [r] … user_name
  • -r 连用户的家目录一并删除

修改用户参数

usermod 修改用户参数

  • 语法:usermod [选项] … user_name
  • 常用命令选项
-l	更改用户账号的登录名称200
例如:usermod -l user1 u1	将u1的登录名改为user1
-L	锁定用户账户,锁定后密文密码之前会有!表示锁定
-U	解锁用户账户			只能解锁!锁定
-u	修改UID
-d	修改宿主目录,默认为/home/用户名
-e	指定账号失效时间
-g	指定用户的基本组名(GID号)  GID必须存在
-G	指定用户的附加组名(GID号)
-s	指定用户的登录shell
-c	指定用户说明

passwd 修改密码

  • 语法: passwd [选项] … user_name
  • 常用命令选项
-d	清空用户密码,使之无需密码就可登录,只能本地登录
	例如: u1::17859:0:99999:7:::		第二部分为空表示密码为空只能本地登录
	u2:!!:17859:0:99999:7:::		 第二部分!!表示没有设置密码无法登陆
-l		锁定用户账号,锁定后密文密码之前会有!!表示锁定
-S		查看用户账号状态是否被锁定
-u		解锁用户账号		只能解锁!!锁定
--stdin		接受标准输入作为密码
  • 例如:echo “123” | passwd --stdin uu 把123通过管道传送给uu作为密码,没有交互
    root用户可以更改所有用户的密码,不要求复杂性,管理员修改密码时不需要输入当前密码
    普通用户只能更改自己的密码,要求复杂性,修改密码时要先输入当前密码
chage 修改用户密码的相关参数
  • 语法: chage [选项] … user_name
-m		密码最短有效期
-M		密码最长有效期
-l		列出密码时效的具体信息      
-d		chage -d 0 用户名 	使其密码失效,下次登录需修改密码
  		可以用来设置密码最后有效期限  

组的修改

groupadd新建组

  • groupadd 【-g GID】 组账号名

groupdel删除组

  • 只能删除空组

groupmod修改组名和组id

  • groupmod 【选项】… 组账号名
  • 常用命令选项
    -n 修改组名
    -g 修改组id

gpasswd添加、删除组成员,设置组账号密码

  • gpasswd 【选项】… 组账号名
  • 常用命令选项
    -a 向组内添加一个用户 gpasswd -a user1 g1 将user1加入g1组
    -d 从组内删除一个用户 gpasswd -d user1 g1 将user1踢出g1组
    -M 重置组内成员列表,以逗号分隔 会踢出原来所有成员,只保留新添加的

用户和组的查询

  • id查询用户身份标识
    id 用户名 uid=5001(uu) gid=5001(uu) groups=5001(uu),504(g1)
    UID 主要组 属于的组
  • figer查询用户账号详细信息(字段五)
    figer 【用户名】
  • chfn修改用户备注信息(字段五),/etc/passwd第五个字段
  • who、w、users查询已登录主机的用户信息
    who,查看时有id的是远程登录,没有id的是本地登录
    w,还显示开机时间
    users,只显示登录的用户名
  • groups查询用户所属的组
    groups 【用户名】
  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值