linux用户及相关知识
一、相关名词解释
每一个用户名都对应一个用户ID即UID,主机通过用户名解析成UID进行用户识别。
每一个用户组名都对应一个组ID即GID,主机通过用户组名解析成GID进行用户识别。
1、名称解析:将用户名和UID进行转换。
2、用户认证:验证该用户是否具有该权限登陆该主机。
3、用户授权:该用户是否有权限访问该文件。
4、审计:记录该用户在当前系统的行为。
5、认证机制 :linux默认的认证机制 shadow 影子口令
[[email protected]/]# cat /etc/passwd
root:x:0:0:root:/root:/bin/bash
[[email protected]/]# cat /etc/shadow
root:$6$U5wkKZWVF5xnX6Vz$U9Jb6/x.q25O0iJdWUwPJlR6Gu5g.m8iS3v.LpPRKEbBZvTYMga7Jb/J6jom32mTSRFyvSHm961pdFZf3ZePy0:16526:0:99999:7:::
在/etc/passwd下查看root用户的登陆密码,显示为x,通过查看/etc/shadow,显示root的加密密码。
6、安全上下文 :进程是继承了,发起该进程的用户的权限。
7、组 group :存放用户及权限的容器。
二、用户类别
1、 管理员: root UID为0
2、普通用户:
系统用户 :它们是为了在后台运行某个服务进程而特别建立 ,这些用户都不能登录系统 UID为1-499
可交互式登录的用户:UID为 500-65535
三、组的类别
第一种分类方法:
1、管理员组 root GID为0
2、普通组:
系统组 :GID为1-499
用户组:GID为500-65535
第二种分类方法:
1、用户的私有组:组名和用户名一致,且通常只包含一个用户
2、非私有组:
用户的基本组 :用户执行操作时所属的组。
用户的附加组 :除基本组之外的组。
[[email protected]/]# cat /etc/passwd
root:x:0:0:root:/root:/bin/bash
jiuren:x:500:500::/home/jiuren:/bin/bash
用户名:密码占位符:UID:GID:用户的注释:用户的家目录 :用户所使用的默认shell类型
[[email protected]/]# cat etc/group
root:x:0:
sys:x:3:bin,adm
组名:密码占位符:GID:用户名....
四、用户和组管理相关的命令
1、useradd添加用户(只有管理员有权限使用)
使用格式:useradd [选项] 用户名
-u UID
-c ‘描述信息’
-d 创建用户家目录,此目录先不应该存在,如果存在创建用户时会报警
-s “默认shell类型” /etc/shells
-g 组名或GID 指定用户的基本组
-G 组名或GIU 指定用户的附加组
-r 指定创建的用户为系统用户
注:useradd后不跟选项时,系统默认的存放路径是/etc/default/useradd
[[email protected] /]# useradd -u 502 centos添加UID为502的centos用户
[[email protected]/]# tail -1 /etc/passwd
centos:x:502:502::/home/centos:/bin/bash
[[email protected] home]# useradd -c ‘user is openstack‘ user1添加描述信息为user is openstack的user1用户
[[email protected]/]# tail -1 /etc/passwd
user1:x:503:503:useris openstack:/home/user1:/bin/bash
[[email protected]]# ls /home由此可见系统在添加用户是useradd后不加-d也会默认创建其家目录。
centos lost+found user1
[[email protected] home]# cat /etc/shells查看系统的shell类型
/bin/sh
/bin/bash
/sbin/nologin
/bin/dash
/bin/tcsh
/bin/csh
[[email protected] home]# useradd -s /bin/csh user2指定user2的shell类型为/bin/csh
[[email protected]]# tail -1 /etc/passwd
user2:x:504:504::/home/user2:/bin/csh
2、groupadd [选项] 组名
-g GID 指定当前创建的组的ID号
-r 创建系统组
3、id [选项] 用户名
-u 仅显示UID
-g 仅显示GID
-n 显示用户名,需要和其他选项结合使用
4、userdel [选项] 用户名
-r 删除用户时同时删除用户家目录
[[email protected]]# groupadd -g 600 g1创建GID为600的g1组
[[email protected]]# useradd -g 600 y1创建GID为600的y1用户
[[email protected]]# id -g y1显示用户y1的GID
600
[[email protected]/]# userdel user2不加选项删除user2后未能删除其家目录
[[email protected]/]# ls home
centos lost+found user1 user2 y1 yh
[[email protected]/]# userdel -r centos加-r选项删除centos能删除其家目录
[[email protected]/]# ls home
lost+found user1 user2 y1 yh
练习1、创建用户gentoo UID为4001 基本组为 gentoo 附加组为distro(GID为5000)和peguin(gid 为5001)
groupadd -g 5000 distro
groupadd -g5001 peguin
useradd -u4001 -g gentoo -G distro,peguin gentoo
练习2 创建用户fedora 其描述为“Fedora Core” 默认shell为 /bin/tcsh
useradd –c “FedoraCore” –s /bin/tcsh fedora
5、usermod [选项] 用户名
-u UID 修改用户的UID
-c "描述信息" 修改用户的描述信息
-d 家目录 通常用于-m选项一起使用,以实现移动用户的家目录 (目标家目录一般不存在)
-s shell 修改用户的shell类型
-g 组名或GID 修改基本用户的组名或GID
-G 组名或GID -a追加的形式 修改用户的附加组名或GID
-l 新的用户名 修改用户名
-L 用户名 锁定
-U 用户名 解锁
[[email protected]/]# tail -2 /etc/passwd显示文件的最后两行
yh:x:505:503::/home/yh:/bin/bash
y1:x:506:600::/home/y1:/bin/bash
[[email protected]/]# usermod -u 504 yh修改yh的UID为504
[[email protected]/]# tail -2 /etc/passwd
yh:x:504:503::/home/yh:/bin/bash
y1:x:506:600::/home/y1:/bin/bash
[[email protected]/]# usermod -c ‘aa‘ yh修改yh的描述信息为aa
[[email protected]/]# tail -2 /etc/passwd
yh:x:504:503:aa:/home/yh:/bin/bash
y1:x:506:600::/home/y1:/bin/bash
[[email protected]/]# usermod -s /bin/csh yh修改yh的shell类型为bin/csh
[[email protected]/]# tail -2 /etc/passwd
yh:x:504:503:aa:/home/yh:/bin/csh
y1:x:506:600::/home/y1:/bin/bash
[[email protected]/]# usermod -g 600 yh修改yh的GID为600
[[email protected]/]# tail -2 /etc/passwd
yh:x:504:600:aa:/home/yh:/bin/csh
y1:x:506:600::/home/y1:/bin/bash
[[email protected]/]# usermod -l yy yh将yh修改为yy
[[email protected]/]# tail -2 /etc/passwd
y1:x:506:600::/home/y1:/bin/bash
yy:x:504:600:aa:/home/yh:/bin/cs
[[email protected]~]# usermod -L jiuren
[[email protected]~]# cat /etc/shadow查看jiuren用户密码的相关信息
jiuren:!$6$FgPpG.K6$2zQFKoGNlAs9V4vwHqBJvk5uuilxTFueQUELE8D/TL95EaOEkznqkUJU889MNyWsqt5chcd19ZXmqWW3261sX1:16537:0:99999:7:::放一个感叹号在jiuren的加密密码前,禁用密码.
[[email protected]~]# usermod -U jiuren
[[email protected]~]# cat /etc/shadow
jiuren:$6$FgPpG.K6$2zQFKoGNlAs9V4vwHqBJvk5uuilxTFueQUELE8D/TL95EaOEkznqkUJU889MNyWsqt5chcd19ZXmqWW3261sX1:16537:0:99999:7:::将加密密码前的叹号取消,恢复帐号登录
6、groupmod [选项] 组名
-g GIU 修改的是组的ID号
-n 新的组名 修改组名
[[email protected]/]# tail -2 /etc/group
user1:x:503:
g1:x:600:
[[email protected]/]# groupmod -g 504 user1修改user1组的GID为504
[[email protected]/]# tail -2 /etc/group
user1:x:504:
g1:x:600:
[[email protected]/]# groupmod -n us user1 将user1组名修改为us
[[email protected]/]# tail -2 /etc/group
g1:x:600:
us:x:504:
7、chsh -l 列出用户可以使用的安全shell
[[email protected]/]# chsh -l
/bin/sh
/bin/bash
/sbin/nologin
/bin/dash
/bin/tcsh
/bin/csh
chsh -s shell类型 用户名 修改用户的默认shell
[email protected] /]# chsh -s /bin/sh yy
Changing shell for yy.
Shell changed.
[[email protected] /]# tail -2 /etc/passwd
y1:x:506:600::/home/y1:/bin/bash
yy:x:504:600:aa:/home/yh:/bin/sh
练习1、修改gentoo 用户的家目录为/tmp/gentoo
usermod -d /tmp/gentoo -m gentoo
练习2、为gentoo新增附加组为netadmin
groupadd netadmin
usermod -G netadmin -a gentoo
五、用户密码相关知识
1、/etc/shadow 存储用户认证密码
/etc/shadow 文件格式
jiuren:$6$wB12Guwr$guUBe4vOAUtFvL0B0DXipHixzPAszykTvT9RlAY4hSlUMwzvGSLgfYycQgJ0tBpMRFFM2nwHx617SjnGqLkl4/:16526:0:99999:7:::
用户名:加密后的密码:上次修改密码的时间:密码最短使用期限:密码最长使用期限:密码警告区间:密码非活区间:账号过期:预留
上次修改密码的时间:是指上次修改密码时到现在经历的天数。
密码最短使用期限:指的是两次修改口令之间所需的最小天数。
密码最长使用期限 :指的是口令保持有效的最大天数。
密码警告区间:指的是从系统开始警告用户到用户密码正式失效之间的天数。
密码非活区间:指的是用户没有登录活动但账号仍能保持有效的最大天数。
$6$wB12Guwr$guUBe4vOAUtFvL0B0DXipHixzPAszykTvT9RlAY4hSlUMwzvGSLgfYycQgJ0tBpMRFFM2nwHx617SjnGqLkl4/
$:表示间隔
6:指定密码加密方式 sha512
wB12Guwr :加密杂质
guUBe4vOAUtFvL0B0DXipHixzPAszykTvT9RlAY4hSlUMwzvGSLgfYycQgJ0tBpMRFFM2nwHx617SjnGqLkl4/:加密生成的密码
2、修改用户密码 passwd
管理员:
passwd 修改管理员root用户自身密码
passwd 用户名 修改其他普通用户的密码
普通用户:
passwd 只能修改普通用户自身密码
3、切换用户 su (switch user)
登录式切换 : su - 用户名 (会读取用户的所有配置)
非登录切换 : su 用户名 (不会读取目标用户环境配置文件 )
以上用户命令总结: useradd usermod userdel id groupadd groupmod groupdel passwd su
六:权限管理
文件权限:针对三类对象(属主、属组、其他组)进行定义的
文件的详细信息:
-rw-r--r--. 1 root root 27632 Apr 7 03:51install.log
其中-rw-r--r-- 第一个“-”指的是文件类型为普通文件。其后的rw-r--r—即定义了文件的权限,分别是属主、属组、其他组的权限。
rw- r-- r--
属主 属组 其他组(其他用户)
权限类型:r(读) w(写) x (eXcutable 执行)
文件:
r:可以查看文件的内容
w:可以修改文件内容
x:可以吧文件向内核提起申请运行为一个进程
目录
r:是否可以使用ls命令 除了-l 选项之外
w:是否可以在目录中进行添加、删除操作
x:可使用cd命令进入目录,ls的-l选项
系统通过将其转换成二进制来识别,所以可理解为
r-->4
w-->2
x-->1
“-”0
rw-rw-r-- 为664
rwx------ 为600
1、 修改文件的权限:
chmod [选项] 权限模式 文件名
-R 递归修改文件(包含文件内的所有文件)的权限
操作对像:
u 文件属主权限
g 同组用户权限
o 其它用户权限
a 所有用户(包括以上三种)
权限设定:
+ 增加权限
- 取消权限
= 唯一设定权限
只修改指定对象的权限
chmod 权限模型 文件名
u=-x, -r, -w
g…
o=+x,+r,+w
a…
注:以上修改文件的权限都是以覆盖的形式。
[[email protected]]# ll aa(aa文件当前权限)
-rw-r--r-- 1root root 0 Apr 12 12:22 aa
[[email protected]]# chmod u=+x aa(修改aa的属主具有执行权限)
[[email protected]]# ll aa
---xr--r-- 1root root 0 Apr 12 12:22 aa(属主原具有读写权限,执行上条命令后aa只具有执行权限)
[[email protected]]# chmod u=+rwx aa
[[email protected]]# ll aa
-rwxr--r-- 1root root 0 Apr 12 12:22 aa
o,g,a与其用法相同故不多做例举。
或用二进制表示文件权限
[[email protected] home]# chmod 777 aa (aa文件属主属组其他用户具有所有权限)
[[email protected]]# ll aa
-rwxrwxrwx 1root root 0 Apr 12 12:22 aa
2、修改属主 属组
chown [选项] 属主:属组 文件名
-R递归修改文件(包含文件内的所有文件)的属主属组
chown 属主:属组 文件名
chown :属组 文件名
[[email protected]]# chown jiuren:jiuren aa(将aa的属主属组修改为jiuren)
[[email protected]]# ll aa
-rwxrwxrwx 1jiuren jiuren 0 Apr 12 12:22 aa
[[email protected]]# chown root:jiuren aa(将aa的属主改为root)
[[email protected]]# ll aa
-rwxrwxrwx 1root jiuren 0 Apr 12 12:22 aa
[[email protected]]# chown :root aa(将aa的属组改为root)
[[email protected]]# ll aa
-rwxrwxrwx 1root root 0 Apr 12 12:22 aa
注:chown 属主: 文件名(该命令不成立,输入属主后属组会默认与属主一致)
[[email protected] home]# ll aa
-rwxrwxrwx 1 root root 0 Apr 12 12:22 aa
[[email protected] home]# chown jiuren: aa
[[email protected] home]# ll aa
-rwxrwxrwx 1 jiuren jiuren 0 Apr 12 12:22 aa