资源分派:
Authentication:认证
Authorization:授权
Accouting|Audition:审计
用户user
令牌token,identity
Linux用户:Username/UID
管理员:root, 0
普通用户:1-60000 自动分配
系统用户:1-499, 1-999 (CentOS7),主要包括对一些服务获取资源进行权限分配
登陆用户:500+, 1000+(CentOS7),交互式登录
组group
Linux组:Groupname/GID
管理员组:root, 0
普通组:
系统组:1-499, 1-999(CENTOS7),对各种服务提供进程
普通组:500+, 1000+(CENTOS7),对普通用户提供
值得关注的是;
linux中区分用户还是组的概念,是通过ID来确认;
一个用户只能有一个主组,但是可以有多个附加组,就像人的角色一样
Linux安全上下文
运行中的程序:进程 (process)
以进程发起者的身份运行:
root: /bin/cat
mage: /bin/cat
进程所能够访问资源的权限取决于进程的运行者的身份,而并非资源本身
用户和组的配置文件
Linux用户和组的主要配置文件:
/etc/passwd:用户及其属性信息(名称、UID、主组ID等)
1.文件中一行代表一个用户
2.ttyang:x:1000:1000:ttyang:/home/ttyang:/bin/bash ;
其中x代表口令放在/etc/shadow中
1000 UID
1000 GID
GECOS:用户全名或注释
home directory:用户主目录 (/home/wang)
shell:用户默认使用shell (/bin/bash)
3.vipw == vim /etc/passwd,并且 vipw具有检查功能
区分普通用户和管理员(0)账号,通过UID
/etc/group:组及其属性信息
1.文件中一行代表一个用户
2.input:x:999:
组名称 密码 GID
3.
/etc/shadow:用户密码及其相关属性
1.文件中一行代表一个用户
2.ttyang:$6$Y9yDov3s$HCS5Mp22j7z810T5WPhNYtUnOVfISCOSSQJ0.P5Dx1HV9Y1tD81qZByu20O9BB7CEkdwPCC3BurU9.k/2eLdO/:18468:0:99999:7:::
其中ttyang 登录用名
用户密码:一般用sha512加密,$6表示的就是sha512加密算法
从1970年1月1日起到密码最近一次被更改的时间
密码再过几天可以被变更(0表示随时可被变更)
密码再过几天必须被变更(99999表示永不过期)
密码过期前几天系统提醒用户(默认为一周)
密码过期几天后帐号会被锁定
从1970年1月1日算起,多少天后帐号失效
/etc/gshadow:组密码及其相关属性
1.vigr == vim /etc/group
生成随机密码:openssl rand -base64 9
/etc/shadow 中,!表是禁止 x 表示密码在shadow文件中
修改某个用户的信息:chage ttyang
指定查看某个用户得密码信息 getent shadow/group/passwd/gshadow wang
检查文件是否正确
vipw/vigr
pwck/grpck/
当一个用户把一个组作为主组后,就无法删除组
groupadd -r -r 指的是指定系统组,并不会创建家目录
useradd -d /data/jerryhome jerry 创建用户,可以指定家目录为/data,而并非之前习惯性的创建
切换用户的方式:
su UserName: 不完全切换,即不会读取目标用户的配置文件,不改变当前工作目录, PATH 变量还是保持切换前的状态
su - UserName 完全切换,会读取目标用户的配置文件,切换至家目录,完全切换,PATH也切换 su -l UserName ,一般-l 省略
平时用到最多的是 passwd UserName ,却很少知道下面这些指令;
passwd [OPTIONS] UserName: 修改指定用户的密码
常用选项:
-d:删除指定用户密码
-l:锁定指定用户
-u:解锁指定用户
-e:强制用户下次登录修改密码
-f:强制操作
-n mindays:指定最短使用期限
-x maxdays:最大使用期限
-w warndays:提前多少天开始警告
-i inactivedays:非活动期限
--stdin:从标准输入接收用户密码
执行passwd UserName 需要输入两遍密码,可以采用下面方法执行
示例:echo "PASSWORD" | passwd --stdin USERNAME
修改用户密码策略
chage [OPTION]... LOGIN
-d LAST_DAY
-E --expiredate EXPIRE_DATE
-I --inactive INACTIVE
-m --mindays MIN_DAYS
-M --maxdays MAX_DAYS
-W --warndays WARN_DAYS
-l 显示密码策略
示例:
chage -d 0 tom 下一次登录强制重设密码
chage -m 0 –M 42 –W 14 –I 7 tom
chage -E 2016-09-10 tom
创建组
groupadd [OPTION]... group_name
-g GID 指明GID号;[GID_MIN, GID_MAX]
-r 创建系统组
修改、删除组:
groupmod
-n group_name: 新名字
-g GID: 新的GID
组删除:
groupdel
groupdel GROUP
更改组密码:
gpasswd
gpasswd [OPTION] GROUP
-a user 将user添加至指定组中
-d user 从指定组中移除用户user
-A user1,user2,... 设置有管理权限的用户列表
newgrp命令:临时切换主组
如果用户本不属于此组,则需要组密码
更改、查看组成员
groupmems
options:
-g, --group groupname 更改为指定组 (只有root)
actions:
-a, --add username 指定用户加入组
-d, --delete username 从组中删除用户
-p, --purge 从组中清除所有成员
-l, --list 显示组成员列表
groups [OPTION].[USERNAME]... 查看用户所属组列表
批量修改口令的另一种方式,chpasswd 本身是修改口令的一种交互式方式
echo rose:centos | chpasswd
修改多个账户密码,可以编辑一个a.txt
cat a.txt | chpasswd
有时候需要修改操作系统参数,切换到 root用户,再切换到普通用户,执行以下简单命令
su - root -c "cat /etc/shadow"
drwxr-xr-x 2 ttyang ttyang 6 Jul 13 22:46 Music
1、d 文件属性 rwx 所有者 r-x 所有组 r-x 除了所有者之外的others的权限
2、首先查看所有者权限,然后所属组,最后查看others,从左向右的优先级判断生效
3、通常情况下,权限设置 所有者>所属组>others;但是也可以反之,linux中依然支持
chmod a= FileName a 代表all
chmod u+wx,g-r,o=rx file 类似与这样的写法
chmod u-x /bin/cat
虽然修改了用户的执行权限,但是并不影响root的执行,有些超乎操作系统的设置
[root@centos7 ~]#ll /bin/cat
-rw-r-xr-x. 1 root root 54160 Oct 31 2018 /bin/cat
[root@centos7 ~]#cat /etc/issue
\S
Kernel \r on an \m
-x 指的是 a -x 的意思
[root@centos7 ~]#chmod -x /bin/cat
[root@centos7 ~]#
[root@centos7 ~]#
[root@centos7 ~]#
[root@centos7 ~]#ll /bin/cat
-rw-r--r--. 1 root root 54160 Oct 31 2018 /bin/cat
[root@centos7 ~]#/bin/cat /etc/etc/issue
-bash: /bin/cat: Permission denied
root的是权限过大,权限集中于一个人的手中,将权限分散,一般会使用三权分立
chown -R 代表递归
***********慎用,毁灭级的操作******
chown -R ttyang / data/
参考/etc/shadow 设置/data/f1文件的权限,此命令同样也适用于chown
chmod --refenrence /etc/shadow /data/f1
通常使用数字化来设置权限更方便
r 4
w 2
x 1
一般来说;
可执行文件 755
文件 640
文件夹 读:可以列出文件名 执行:可以进入目录,可以访问目录的文件内容 写:创建和删除文件
****************
文件的写权限是由文件决定,与目录无关
目录里面的文件能不能删除和创建,不是由文件决定,而是由目录来决定的
****************************************************************
chmod +x +X 的区别
chmod +X 只针对于目录,并修改文件;chmod +x /data/ 将文件夹和文件的执行权限都修改
如果不小心把用户ttyang里面的东西删除,而本身/home/ttyang/这个目录存在,那么可以通过此命令将用户的环境变量等复制过来
cp -r /etc/skel/. /home/ttyang
文件系统的特殊权限
suid 作用于可执行的二进制的程序,所有者加 s,具有suid的文件,普通用户可以临时继承此程序所有者的权限,但需慎用
sgid 所有组加 s,同样作用于二进制程序,用户执行此程序,将继承此程序所有组的权限;也可以作用于目录中,功能是后期新建的文件,自动继承此目录的所有组 chmod g+s directory
sticky 粘制位,针对文件夹而言 o+t,某个目录里面的文件,只有文件的所有者才有权限,但root不限制
*******面经********
cp /etc/fstab /data/dir/ 普通用户需要什么权限?
cp 执行权限
/etc/fstab /etc/执行权限,fstab需要有读权限,ll 并不能查看到里面的内容
/data/dir /data至少有执行权限,fstab至少需要有xw权限
上面所介绍的权限基本对于root而言不受控制,对于某些关键性文件而言,需要添加特殊权限,以防误操作
chattr +i 不能删除,改名,更改 ;恢复权限chattr -i
chattr +a 只能追加内容,,,如果使用vim的话,系统不能识别是追加还是改变,一般使用>>
lsattr 显示特定属性
为了解决后期新建目录、文件都显示的是默认权限
type umask 内部命令
这个公式只适用于部分场合;
文件夹 022+default=777 文件 022+default=666
umask本质含义:将777|666中对应的权限去掉,得出默认权限,退出登录就会失效,可以加入个人家目录的bashrc里面
umask 也具有所有者、所属组、others u g o
日常小用法:
#umask -S
u=rwx,g=rx,o=rx
#umask -p
umask 0022
#umask
0022
也可以这样写;umask -P >> ,bashrc
默认权限:
文件:666-umask,结果中如果有奇数+1,偶数不变
目录:777-umask
777 111 111 111
022 000 010 010
755 111 101 101
666 110 110 110
022 000 010 010
644 110 100 100
666 110 110 110
123 001 010 011
644 110 100 100
==============================================================
当用于多余3个人以上,上面所学的东西不能解决权限问题
访问控制列表
ACL:Access Control List,实现灵活的权限管理
1、除了文件的所有者,所属组和其它人,可以对更多的用户设置权限
2、CentOS7 默认创建的xfs和ext4文件系统具有ACL功能
针对于用户;
setfacl -m u:wang:0 f1 控制wang用户权限为0
setfacl -m u:wang:- f2
0 和- 等价
查看某个文件的所对应的访问列表 getfacl f1
针对于组;
setfacl -m g:g1:rw f1
设置ACL以后,权限判断次序,前面满足,后面不再看
1 看所有者
2 ACL权限
对用户
对组
3 other
删除ACL策略 ,-R 递归 -b 删除
setfacl -R -b dir
需要注意的是,ACL和组权限冲突,设置完ACL以后组权限变成mask的权限,另;此处需要注意这里的mask与umask没有关系
举个例子比较直观:
#setfacl -m ttyang:rw f1 不加u的话,它并不针对于某个特定用户
#getfacl f1
# file: f1
# owner: root
# group: root
user::rw-
user:ttyang:rw-
group::r--
mask::rw-
other::r--
#ll f1
-rw-rw-r--+ 1 root root 0 Aug 6 22:00 f1 可以看到这里组权限变成 6
而我们创建普通文件的权限是这样的,touch f2 644
ll f2
-rw-r--r-- 1 root root 0 Aug 6 22:06 f2