​​​​用户- 任何用户被分配一个独特的用户id号(UID)
- UID 0 标识root用户
- 用户账号通常从UID 1000 开始
- 用户名和UID信息通常存储在/etc/passwd文件中
- 当用户登陆时它被分配一个主目录并且运行一个程序(通常是一个shell程序)
- 没有权限许可用户不能读取,写或者执行其他用户的文件
用户账号文件 /etc/passwd①user01:②x:③1000:④1000:⑤User One:⑥/home/user01:⑦/bin/bash
- 字段1:用户名称
- 字段2:密码占位符"x"
- 字段3:用户账号的UID号
- 字段4:用户的私有组
- 字段5:用户描述信息
- 字段6:用户的主目录
- 字段7:登录Shell信息
组- 用户必须属于一个组
- 每一个组被分配一个独特的组 ID(gid)
- gid信息保存在/etc/group中
- 每一个用户都有自己的私有组
- 可以将用户添加到别的组,该组称为用户的附加组
- 同一个组中的所有用户能共享属于这个组的文件
组信息文件 /etc/group用于保存组的基本信息
①group01:②x:③10000:④user01,user02,user03
- 字段1:组的名称
- 字段2:密码占位符"x"
- 字段3:组的ID号
- 字段4:该组是user1,user2,user3的附加组
useradd创建新用户其语法如下:
useradd [选项] 用户名
选项说明:
-u 用户号 指定用户的用户号,如果同时有-o选项,则可以重复使用其他用户的标识号
-g 用户组 指定用户所属的用户组
-c comment 指定一段注释性描述
-d 目录 指定用户主目录,如果此目录不存在,则同时使用-m选项,可以创建主目录
-G 用户组 用户组指定用户所属的附加组
-s Shell文件 指定用户的登录Shell
举例:
#useradd -u 2000 -g it user1
#useradd -s /sbin/nologin -G root Mary
groupadd创建新的组其语法如下:
useradd [选项] 用户名
选项说明:
-u 用户号 指定用户的用户号,如果同时有-o选项则可以重复使用其他用户的标识号。
-g 用户组 指定用户所属的用户组
-c comment 指定一段注释性描述
-d 目录 指定用户主目录,如果此目录不存在,则同时使用-m选项,可以创建主目录。
-G 用户组 指定用户所属的附加组
-s Shell文件 指定用户的登录Shell
举例:
# useradd -u 2000 -g it user1
# useradd -s /sbin/nologin -G root Mary
其他相关命令usermod 修改用户信息,用法与useradd类似
-aG:追加一个附加组; -L:锁定用户; -U解锁用户; -m:移动家目录,与-d一起使用
userdel删除用户
-r :删除家目录和邮箱
groupadd 添加新的用户
-g :指定gid
groupmod 修改组的信息
-n :指定新的组名
groupdel 删除组
groupmems 管理组内成员
-g :指定组 ; -a :添加用户 ; -d : 删除用户; -l:列出组内的用户 ; -p :清空用户
密码文件 /etc/shadow用于保存用户的密码信息
①user03:②$6$CSsX...output omitted...:③17933:④0:⑤99999:⑥7:⑦2:⑧18113:⑨
字段1:用户账号的名称
字段2:加密的密码字串信息
字段3:最近一次修改密码的时间,表示从1970.01.01至今的天数
字段4:密码的最短使用天数,默认值为0,没有要求
字段5:密码的最长有效天数,默认值为99999
字段6:密码即将到期警告天数,默认值为7
字段7:在密码过期之后账号保持活动的天数,指定天数后账号被锁定,成为无效
字段8:账号失效时间,默认值为空,以1970.01.01的天数表示
字段9:保留字段(未使用)
1.该列留空,即“::",表示该用户没有密码。
2.该列为"!",即"!",表示该用户被锁,被锁将无法登录,但是可能其他的登录方式是不受限制的,如ssh公钥认
3.该列为" * ",即":*:*",也表示该用户被锁,和“!”效果是一样的。
4.该列以"!"或"!!"开头,则也表示该用户被锁。
5.该列为"!!",即“:!!:",表示该用户从来没有设置过密码。
6.如果格式为"$id$salt$hashed",则表示该用户密码正常,其中$id$的id表示密码的加密算法,$1$表示使用MD5算法,$2a$表示使用Blowfish算法,"$2y$"是另一算法长度的Blowfish,""$5$"表示SHA-256算法,而”$6$"表示SHA-512算法。
配置密码的期限语法:chage [选项] 用户
# chage -m 0 -M 90 -W7 -I 14 user3 分别修改用户密码的最短期限,最长期限,警告周期和失效期限
# chage -d 0 user3 强制要求用户在下一次登录时更新密码
# chage -l user3 显示用户密码的信息
# chage -E 2020-10-10 user3 用户将于2020-10-10到期(YYYY-MM-DD格式)
Linux文件安全- 每一个文件都有一个uid和gid
- 任何进程运行时都带一个uid和一个或多个gid标识符
- 通常决定于哪个用户执行这个进程
- 三种访问类型:
运行的进程跟文件有着同样的uid(user)
运行的进程跟文件有着同样的gid(group)
其他进程(other)
权限优先级- 如果UID匹配,用户权限适用
- 否则,如果GID匹配,组权限适用
- 如果都不匹配,其他权限适用
​
Linux文件系统权限# ls -l 文件名
# ls -ld 目录名 (只看文件本身的详细信息)
- rw-r--r--. 1 root root 2484 Mar 18 00:04 /etc/passwd
文件类型 访问权限 连接数 所属人 所属组 大小 修改时间 文件名
文件类型: -:代表普通文件 d: 目录 l:链接文件 b:块设备 c:字符设备 p和s:特殊的文件
权限 对文件的影响 对目录的影响
r(读) 可以读取文件的内容 可以列出目录的内容(文件名)
w(写) 可以更改文件的内容 可以创建或删除目录中的任一文件
x(执行) 可以作为命令执行文件 可以进入目录(还需要r权限才能读目录内容)
更改文件和目录的权限符号方式修改文件权限
chmod 用于更改文件对于某类用户的操作权限
chmod [-R] ① who ②what ③which ④ FILE...
①设置权限的对象 可以是:u(用户) g(组) o(其他人) a(所有人)
②属性操作符 +增加权限 -减少权限 =精确设置
③权限内容,可以是:r(读) w(写) x(执行),以及这些权限的组合
touch 更新时间戳 创建文件
a.time 磁盘
m.time 文件内容最后一次修改的时间 增量备份
c.tine 文件状态最后一次修改的时间 属性(大小,权限,拥有人。。。。。)
stat file 查看文件的时间戳
更改文件和目录的权限 chmod nnn FILE...
第一个数字代表所属主(u)的权限
第二个数字代表所属组(g)的权限
第三个数字代表其他人(o)的权限
举例如下:
增加文件属主的执行权限(x) # chmod u+x test
去除文件属主与属组的写权限(w) # chmod u-w,g-w test
设置其他用户的文件权限为可执行 # chmod o=x test
设置属主完全控制,属组和其他人读权限 # chmod 744 test
a=u+g+o
u=user 用户人
g=group 用户组
o=other 其他
​
r=读权限
w=写权限
x=执行
​
字符的方式
chmod ugo=rwx
a=rwx 表示所有栏位
u=rwx,g=rwx,o=rwx
+rwx 表示所有的栏位
ugo-rwx
u+/-,g+/-,o+/-
​
数字的方式
chmod 000
r=4
w=2
x=1
​
目录 x 表示可以进入到该目录
r 表示可以读取目录内文件
w 表示可以在目录内创建文件
​
目录最少会有两个栏位 rx
只有x没有意义,看不到目录的内容
只有r没有意义,无法进入到目录
​
chmod 修改文件的权限
chown 修改文件的拥有人
​
chown user1:user1 文件
-R 递归设置
设置文件属主和属组chown 用于设置文件的属主和属组
命令格式: chown [-R] OWNER[:GROUP] FILE...
chgrp 用于设置文件属组
命令格式: chgrp [-R] GROUP FILR...
只有root可以修改文件的拥有人,root和文件的拥有人可以修改文件的拥有组,前提是用户需要在组里面
例子:
# chown user1 test 设置文件test的属主为用户user1
# chown :it2 test 设置文件test的属组为用户组it2
# chgrp it2 test 效果同上
# chown user3:it3 test 设置文件test的属主为user3,并设置文件的属组为it3​​​​​​​​