Linux的文件类型及用户管理
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Linux的文件类型及用户管理相关的知识,希望对你有一定的参考价值。
Linux的文件类型
-,f:普通文件
d:目录文件,路径映射
l:链接文件(符号链接)软连接
设备文件:
c:字符设备,一次存取一个字符
b:块设备
p:管道文件
fi,fo
s:套接字文件,socket
文件系统:
格式化:创建文件系统
Linux文件时间戳
访问时间:
修改时间:写数据
改变时间:元数据改变的时间
ls:使用默认选择当前目录
-a:显示所有文件,包含隐藏文件
-A:不现实.和..常见的通用路径
--color:显示颜色
-l:长格式显示
文件类型 权限 硬链接数 属主 属组 最近一次的修改时间 文件名->原始文件
-rw-r--r--. 1 root root 1612 May 16 04:30 /etc/passwd
-d:显示目录自身的属性,通常与-l同时使用
-r:实现逆序显示
-R:递归显示
-i:inode号,index node
-h:文件大小以人类易读格式显示
tree:以树状显示目录;需自行安装
名称解析:name resolving
bash shell的特性之四:命令别名
clear:清屏
alias:显示当前shell中定义的所有别名;
任何随进程而生的属性,会在进程结束,属性消失
~]# alias ALIAS=‘COMMAND [options] [arguments] ‘
unalias ALIAS --取消定义的别名
在命令前加\使用命令本身,而不是别名
只能查看纯文本文件的命令
file FILE..:查看文件内容的格式
cat:将文本连接起来显示在标准输出上
-E, --show-ends 显示行尾结束符$
-e:等于-vE
-v:显示非打印符
-n:显示每行按顺序编号
-s:将多个连续的空白行合并显示一个空白行
tac:逆序显示文件
分屏显示
more:只支持向后翻(到文件尾部后退出)
less:支持前后翻
head:
-n #:显示前#行
tail
-n # 显示后#行
-f:在文件数据增长时,实时显示追加数据 output appended data as the file grows;
echo命令的用法:
-e:启用转义符 enable interpretation of backslash escapes
? \b:删除前面的字符
? \t:制表符
? \v:垂直制表符
? \n:换行符
? \0NNN():八进制值 byte with octal value NNN
o 开始 \033[##;##;#mString
? 第一个#:3前景色
? 分号后第一个#:4背景色
? 第二个#:颜色(1-7)
? 分号隔开加第二组控制颜色
? PS1="\033[34;42m[\[email protected]\h \W]\033[0m\$ "
o 结束 \033[0m
-n:关闭自动换行功能
bash特性五:globbing,文件名通配
通配符:
*:匹配任意长度的任意字符
?:匹配任意单个字符
[ ]:匹配指定字符范围内的任意单个字符,不区分大小写
[[:upper:]]:大写字母
[[:lower:]]:小写字母
[[:alpha:]]:所有字母 [a-Z]
[[:digit:]]:所有数字
[[:alnum:]]:字母+数字
[[:blank:]]:水平制表符;
[[:space:]]:水平和垂直空白符;空格,tab,回车
[[:punct:]]:标点符号;特殊字符
[^STRING]:匹配指定字符范围外的任意单个字符
命令总结:cat, tac, ls, more,less, tail, head, echo, tree
文件操作:touch,cp,mv,rm
cp copy
cp SRC DEST
假如SRC是一个文件:
如果目标是一个文件且目标存在:覆盖
如果目标文件不存在:创建新文件
如果目标存在,且是个目录:复制源至目标目录中,并保持原名
cp SRC... DEST
假如SRC有多个文件:
如果目标存在,且是一个文件:复制无法进行
如果目标存在,且是一个目录:复制各文件至目标目录中,并保持原名
如果目标不存在:复制无法进行
如果SRC只有一个且是目录:使用 -r 递归复制源目录至目标目录中
如果目标是一个文件且目标存在:失败
如果目标文件不存在:创建新目录
如果目标存在,且是个目录:复制源目录到目标目录中,并保持原名
cp 命令的常用选项:
-r:递归
-i:提示,交互
-f:强制覆盖
-a: same as -dR --preserve=all 保留所有的文件信息
-d:当源为连接文件时,复制链接文件本身,而非指向的源文件
-p:保持原有属性
-u:只覆盖源比目标文件新的文件
--backup-numbered:覆盖前,先将旧文件改名为 文件名.~数字~
mv:移动,剪切,与cp相近
可以直接移动目录,不需要-r选项
rm:移除;删除非空目录 rm -rf
touch:用来修改时间戳,创建空文件
-c:不创建空文件,只修改时间戳
-t:指定时间戳
-a:仅修改访问时间
-m:仅修改修改时间
先加-m,在加-t 后跟时间
access time atime
modify time mtime
change time ctime
stat:显示文件源数据信息,详细信息
~]# stat FILE
Linux编辑器
行编辑器:sed
全屏编辑器:nano,vi,vim
用户和权限管理:
? 用户是什么?
? 没用用户,可否 yes
? 用户:资源获取标识符,资源分配,安全权限模型的核心要素之一
? 密码:来实现用户认证的
? Linux是多用户的操作系统
? 信息库:用户 密码
? 名称解析:User IDentifier UID
? 容器:能够容纳很多用户的容器,可以分配权限:组(group),角色(role)
? 组名:Group IDentifier GID
? 解析:在数据库中按搜索码查找到对应的条目,并找到与之对应额外其他数据的过程
数据库有以下内容
? 文本文件:
? SQL数据库
? ldap数据库
Linux用户类别
管理员:0
普通用户:1-65535
系统用户:1-499(centos6),1-999(centos7)
对守护进程获取资源进行权限分配;
登陆用户:500+(centos6),1000+(centos7)
交互式登录;
Linux用户组
管理员组:root,0
普通组:
系统组:1-499(centos6),1-999(centos7)
普通组:500+(centos6),1000+(centos7)
Linux安全上下文:
运行中的程序:进程(process)
以进程发起者的身份运行;
root:cat
tom:cat
进程所能够访问的所有资源的权限,取决于进程的发起者的身份
运行中的进程有其属主和属组,取决于进程的属组和属主
Linux组的类别;
- 基本组:显示在/etc/passwd中GID字段中,为用户的基本组,主组
组名同用户名,且仅包含一个用户:私有组 - 额外组:附加组;/etc/group
命令总结
useradd,usedel,groupadd,passwd,gpasswd,chsh,chfn,usermod,getent,groupmod,groupdel,chage,id,who,whoami,su
文件总结
/etc/passwd:用户信息
/etc/group:组名:密码占位符:GID:用户列表(附加组)
/etc/skel:默认复制文件地址
/etc/default/useradd:配置文件,按默认值创建用户
创建用户 useradd<-->adduser
useradd UserName
-u UID:指定UID
-g GID:指定GID,即用户的基本组,但GID要事先存在
-G GID:指定用户的额外组,但GID要事先存在
-d DIR: 指定家目录位置;若创建系统用户则与-m配合使用,要求系统用户在指定的目录下不存在以其同名的目录;若同名则不复制/etc/skel/中的内容至指定家目录;
-c NOTE:备注
-s /bin/SHELL:指定默认shell,应该指定使用/etc/shells文件中出现的shell
-m:创建用户时,强制给用户创建家目录
-M:创建用户时,但不创建家目录
-r:创建系统用户
Centos 6:ID<500
Centos 7:ID<1000
特点:id 1-499 不会为用户创建家目录,默认shell为/sbin/nologin(自行设置-s /sbin/nologin)
默认值设定:/etc/default/useradd文件中
-D -options arguments
[[email protected] ~]# useradd -D -e 999 修改默认过期时间
[[email protected] ~]# useradd -D 查看默认值
GROUP=100
HOME=/home
INACTIVE=-1
EXPIRE=999
SHELL=/bin/bash
SKEL=/etc/skel
CREATE_MAIL_SPOOL=yes
添加用户练习
userdel UserName --删除用户,默认会保留家目录
-r:同时删除家目录
groupadd GroupName
-g GID:创建组,并为其指定GID
-r:创建系统组
Centos 6:ID<500
Centos 7:ID<1000
Linux用户和组相关的配置文件
/etc/passwd:用户及其属性信息(名称、UID、基本组ID等)
name:password:UID:GID:GECOS:directory:shell
用户名:密码占位符:UID:GUID(基本组ID):用户备注信息(多个以,隔开):家目录:默认shell
/etc/group:组的属性信息
group_name:passwd:GID:user_list
组名:组密码占位符:GID:以当前组为附加组的用户列表(分隔符为逗号)
组密码在用户完成基本组切换时使用
/etc/shadow:
用户名:加密了的密码:最近一次更改密码的时间(距离1970-1-1的时间):密码的最小使用期限:最大密码使用期限:密码警告时间段:密码禁用期(登陆就要修改密码):账号的过期日期:保留字段
/etc/shells:当前系统的安全shell列表
加密机制:
加密:明文--> 密文
解密:密文--> 明文
对称加密:如果加密、解密使用相同的密码称之为对称加密 DES,3DES,AES
非对称加密:DSA,RSA
单向加密:提取数据指纹
MD5:message digest,128bits;信息摘要 128bit定长输出16个字符
SHA1:160bits;secure hash algorithm 安全的哈希算法
SHA224:224bits
SHA256:256bits
SHA384:384bits
SHA512:512bits
CRC32:循环冗余校验码
雪崩效应:初始的条件的微小改变,将会引起结果的巨大改变;
定长输出,不可逆
密码数据库:/etc/shadow
~]# useradd tom
~]# useradd jerry
~]# echo "redhat" | passwd --stdin tom --生产密码时加入杂质,防止密码一样
~]# echo "redhat" | passwd --stdin jerry
$6$E5f7SSVVLcp8oq.R$DD0oqUOWqRSlogbOd12VtHVlAgrS8EEx4UmoluV3OP5u4s3pT0xEKRgPIxNL9m8BPhzbQ6dPxAVqAo7YJ0txO
$加密算法$杂质$乱码 $:分隔符,6:sha512,1:MD5
密码的复杂性安全性策略
- 使用数字、大写字母、小写字母和特殊字符中的至少三种
- 足够复杂、够长、交叉
- 尽量避免使用易猜测的密码;使用随机密码;
-
定期更换;不要使用最近曾经使用过的密码;
组:用户容器,角色 /etc/group
密码:/etc/gshadow
groupname:encrypted password:administraters:menbers
设定用户密码
普通用户:passwd
管理员
? 改自己密码:passwd
? 改其他用户密码:passwd UserName
-l:锁用户 用户密码前加惊叹号!!
-u:解锁
-e:强制用户下次登录修改密码
? echo "hello" | passwd --stdin UserName 给UserName设定一个密码gpasswd GroupName --设定组密码
用户属性修改
chsh:修改默认的shell
chfn:修改用户注释
usermod:跟useradd命令使用方法类似
-u UID
-g GID
-G GID:默认会覆盖原有的附加组,如果要是添加,可以同时使用-a选项
-c COMMENT
-d new home 默认不会迁移用户的家目录,如果要迁移,同时使用-m选项
-m, --move-home
-s SHELL
-l New_Login_Name 修改用户登录名称
-e 过期期限
-f 非活动期限
-L 锁定用户账号
-U 解锁getent passwd UserName 查看passwd中指定用户的信息
groupmod:修改组属性定义
-g GID
-n New Group 修改用户的属组
groupdel
gpasswd root都能用;普通用户组管理员能用
-a, --add USER add USER to GROUP
-d, --delete USER remove USER from GROUP
-Q, --root CHROOT_DIR directory to chroot into
-r, --delete-password remove the GROUP‘s password
-R, --restrict restrict access to GROUP to its members
-M, --members USER,... set the list of members of GROUP
-A, --administrators ADMIN,... set the list of administrators for GROUPchage:修改用户的日期属性
-E:距离1970-1-1号的时间天数,过了这个时间,账号不可访问
-I:设置活动天数
-m:修改密码最小使用时间
-M:修改密码最长使用时间
-W:警告时间
查看用户的相关信息:
id
-n 显示名称
-u 显示UID
-g 显示基本组ID
-G 显示所有组ID
who 显示当前登录用户
whoami 显示当前终端登录的用户
su Swith User 切换用户或以其他用户身份执行命令
su [options...] [-] [user [args...]]
切换用户的方式:
su UserName:非登录式切换,即不会读取目标用户的配置文件;
su - UserName:登录式切换,会读取目标用户的配置文件;完全切换;
root su至其他用户无需密码,非root用户切换时需要密码;
换个身份执行命令:
-c 不切换用户,直接执行命令
su [-] UserName -c ‘COMMAD‘
-l 登录式切换
"su -l UserName"相当于"su - UserName"
以上是关于Linux的文件类型及用户管理的主要内容,如果未能解决你的问题,请参考以下文章
Android 逆向Linux 文件权限 ( Linux 权限简介 | 系统权限 | 用户权限 | 匿名用户权限 | 读 | 写 | 执行 | 更改组 | 更改用户 | 粘滞 )(代码片段