Linux第四天 用户和组及文件和目录权限
Posted wx61aa2239b8c82
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Linux第四天 用户和组及文件和目录权限相关的知识,希望对你有一定的参考价值。
Linux简介
Linux 发展历史
Linux 系统诞生于 1991 年,由芬兰大学李纳斯(Linus Torvalds)和后来陆续
加入的众多爱好者共同开发完成,是 UNIX 的分支。
Linux 是开源软件,源代码开发的 UNIX
Linux 内核版本
Linux 内核官网:www.kernel.org
内核版本说明
2.6.8(2 主版本 6 次版本 8 末版本)
内核版和开发版区别
内核版(几十 M)是基础,开发版是在内核的基础上加入自己的桌面、应用程
序,也就是说开发版每个公司都能开发,但是他们用的内核都是一样的。
Linux 主要的发行版本
主要的区别 软件安装,其他的基本一致
开源软件
开源软件特点,绝大多数开源软件免费,可以获得软件源代码(安全),可以
自由传播、改良甚至销售
支撑互联网的开源技术
LAMP
Linux 操作系统
Apache Web 服务器
mysql 数据库
php 编程语言
用户和组
Linux 操作系统中的用户分类
普通用户:比管理员低,可登录系统
root 超级管理员
su – admin 切换回普通用户admin
几个重要的配置文件
1、/etc/passwd
保存操作系统中所有的用户信息
root : x : 0 : 0 : root : / root : /bin/bash 都是 7 个字段
字段 1:用户名
字段 2:密码占位符
字段 3:用户的UID
(0表示超级用户,1-499表示程序用户,500-60000表示普通用户)
(启动一个程序的时候需要依托一个用户的权限来启动,如果没有这些程序用户的话,比如说用root身份启动了一个apache服务,如果这个服务有漏洞,或者说被注入恶意代码,那么就会以 root身份运行,这样会导致无法挽回的损失,因此启动不同程序的时候使用的都是程序用户的身份,这种用户是不允许登陆系统的</sbin/nologin>,这是程序用户的特点,为了系统安全)
(在Liunx中,系统不认识用户名,只认UID,相当于身份证)
字段 4:基本组的 GID
概念:先有组才有用户(用户必须存在一个组中)
字段 5:用户信息记录字段
字段 6:用户的家目录
字段 7:用户登录系统后使用的命令解释器
2、/etc/shadow
保存了用户的密码信息
root:$6$ME9wjPHAid5ds$PO/GlBVEt1:18325:0:99999:7:::
字段 1:用户名
*字段 2:用户的密码加密后的字符串(sha)
(默认使用sha-512这种加密方法,同时过于简单的密码加密完了的信息完全相同,还混合了salt值,盐值不能被别人看到,若被看到可利用字典进行密码暴破)
字段 3:距离 1970/1/1 密码最近一次修改的时间
(从字段 3 后都显示的是数字,为什么是这个时间呢 ,因为这个是 unix 系统诞生的时间)
字段 4:密码的最短有效期 (是几,几天内就不能修改密码)
*字段 5:密码的最长有效期(建议时间 90)
字段 6:密码过期前 7 天警告
字段 7:密码的不活跃期
(如果密码过期了,这后面配置的天数内你仍然可以登录)
字段 8:用户的失效时间
(比如派来一个实习生 几个月后就不想让他登陆了)
3、/etc/group
记录了系统中所有组的信息
字段 1:用户组名
字段 2:密码占位符
字段 3:基本组的GID
字段 4:附加组的成员
4、/etc/gshadow
保存了用户组的密码信息
建立及调整用户属性
注:因为学习起来比较枯燥, 我们这里通过几个场景的配置,学习和了解用户属性的建立及调整
(之前我们讲过Linux中先有组再有用户的,如果先建立用户,也可以,但是也会建立和用户名同名的组)
示例:
1、建立一个名为 class1 的组 ID 为 2000,class2 的组 ID 为 3000
[root@bobi ~]# groupadd -g 2000 class1 新建组
[root@bobi ~]# groupadd -g 3000 class2
[root@bobi ~]#
[root@bobi ~]# tail -2 /etc/group
class1:x:2000:
class2:x:3000:
2、修改class2 的组 ID 为2001
[root@bobi ~]# groupmod -g 2001 class2 修改组
[root@bobi ~]# tail -2 /etc/group
class1:x:2000:
class2:x:2001:
3、建立 tom 用户要求其基本组是 class1,附加组为 class2,UID 为600
[root@bobi ~]# useradd -g class1 -G class2 tom 新建用户
[root@bobi ~]# id tom
uid=1001(tom) gid=2000(class1) groups=2000(class1),2001(class2)
[root@bobi ~]# usermod -u 600 tom
[root@bobi ~]# id tom
uid=600(tom) gid=2000(class1) groups=2000(class1),2001(class2)
4、建立一个程序用户 UID 为 250,用户名为 testuser,没有家目录(程序用户
没有登录系统的权限)
[root@bobi ~]# useradd -u 250 -M -s /sbin/nologin testuser
[root@bobi ~]# id testuser
uid=250(testuser) gid=2002(testuser) groups=2002(testuser)
[root@bobi ~]# tail -1 /etc/passwd
testuser:x:250:2002::/home/testuser:/sbin/nologin
[root@bobi ~]# cd /home/
[root@bobi home]# ls
bobi tom
[root@bobi home]# su - testuser 切换用户身份做登陆测试
su: warning: cannot change directory to /home/testuser: No such file or directory
This account is currently not available.
没有家目录,所以无法用 testuser 用户身份登陆到系统
5、为 tom 用户设定密码为 123,并设定密码最长有效期为 90 天,将用户密
码进行锁定使其无法登录
[root@bobi ~]# passwd tom 设定密码
Changing password for user tom.
New password:
BAD PASSWORD: The password is shorter than 8 characters
Retype new password:
passwd: all authentication tokens updated successfully.
[root@bobi ~]#
[root@bobi ~]# tail -2 /etc/shadow
tom:$6$DJCK6uYe$iuFcWLeTBot6GpgYJfES5Wyx.U1TA0c5OKQcxepSiriBVQ7r
222HHyhSn19EwCizE686aBA6H70XR5VtBiFrN1:19089:0:99999:7:::
testuser:!!:19089:0:99999:7:::
[root@bobi ~]#
[root@bobi ~]# su - bobi
Last login: Thu Apr 7 09:02:58 CST 2022 from 192.168.192.1 on pts/0
[bobi@bobi ~]$
[bobi@bobi ~]$ su - tom 切换到 tom 用户登陆系统
Password: (123)
[tom@bobi ~]$ 登陆成功
[root@bobi ~]# chage -M 90 tom 修改密码最长有效期
[root@bobi ~]# tail -2 /etc/shadow
tom:$6$DJCK6uYe$iuFcWLeTBot6GpgYJfES5Wyx.U1TA0c5OKQcxepSiriBVQ7r
222HHyhSn19EwCizE686aBA6H70XR5VtBiFrN1:19089:0:90:7:::
testuser:!!:19089:0:99999:7:::
[root@bobi ~]# passwd -l tom 锁定密码
Locking password for user tom.
passwd: Success
[root@bobi ~]# tail -2 /etc/shadow 密码前面多了两个!!
tom:!!$6$DJCK6uYe$iuFcWLeTBot6GpgYJfES5Wyx.U1TA0c5OKQcxepSiriBVQ7r
222HHyhSn19EwCizE686aBA6H70XR5VtBiFrN1:19089:0:90:7:::
testuser:!!:19089:0:99999:7:::
[root@bobi ~]# passwd -S tom 查看用户的密码信息
tom LK 2022-04-07 0 90 7 -1 (Password locked.)
[root@bobi ~]#
[root@bobi ~]# su - bobi
Last login: Thu Apr 7 12:32:20 CST 2022 on pts/1
[bobi@bobi ~]$
[bobi@bobi ~]$ su - tom
Password:
su: Authentication failure 无法登陆
[bobi@bobi ~]$ logout
[root@bobi ~]#
[root@bobi ~]# passwd -u tom 解锁密码
Unlocking password for user tom.
passwd: Success
[root@bobi ~]# tail -2 /etc/shadow 密码前面没有!!
tom:$6$DJCK6uYe$iuFcWLeTBot6GpgYJfES5Wyx.U1TA0c5OKQcxepSiriBVQ7r
222HHyhSn19EwCizE686aBA6H70XR5VtBiFrN1:19089:0:90:7:::
testuser:!!:19089:0:99999:7:::
[root@bobi ~]# passwd -S tom
tom PS 2022-04-07 0 90 7 -1 (Password set, SHA512 crypt.)
[root@bobi ~]#
[root@bobi ~]# su - bobi
Last login: Thu Apr 7 12:44:19 CST 2022 on pts/0
[bobi@bobi ~]$
[bobi@bobi ~]$ su - tom
Password:
Last login: Thu Apr 7 12:44:09 CST 2022 on pts/0
Last failed login: Thu Apr 7 12:44:40 CST 2022 on pts/0
There were 1 failed login attempts since the last successful login.
[tom@bobi ~]$ 登陆成功
6、删除 tom 用户和 testuser 用户,删除 class1 组和 class2 组
切记:删除用户的时候要加参数 -r ,连同用户的家目录一起删除
[root@bobi ~]# userdel -r tom
[root@bobi ~]# userdel -r testuser
userdel: testuser home directory (/home/testuser) not found
[root@bobi ~]# ls /home/
bobi
[root@bobi ~]# tail -2 /etc/passwd
tcpdump:x:72:72::/:/sbin/nologin
ntp:x:38:38::/etc/ntp:/sbin/nologin
[root@bobi ~]#
[root@bobi ~]# groupdel class1 删除用户组
[root@bobi ~]# groupdel class2
[root@bobi ~]# tail -2 /etc/group
tcpdump:x:72:
ntp:x:38:
权限
权限:文件或目录属于谁 , 属于哪个组 , 不同用户能对该文件进行何种操作(建立一个文件和一个目录)
注:
查看文件权限 ls -l 文件
-rw-r--r-- 1 root root test.txt
查看目录权限 ls -ld 目录
drwxr-xr-x 2 root root testdir
- rw- r-- r-- .
d rwx r-x r-x .
字段 1:文件类型
- 普通文件 d 目录文件 l 符号链接 b 块设备文件 (硬件存储设备)
字段 2:文件所属主对该文件的权限
r(read) | w(write) | x(execute) | |
文件 | cat | vim -i | /bin/sh XXX.sh |
目录 | ls | touch,rm | cd |
字段 3:文件所属组的权限
字段 4:其他用户的权限
字段 5:不重要,表示这个文件受 selinux(标签工具)的管理
调整文件及目录权限
chmod 调整文件所属的权限
用法一:
chmod 对象 算数运算符 权限 文件
对象:u(所属主) g(所属组) o(其他用户) a(all)
算数运算符:- + =(指定权限)
权限:r w x
(测试:通过 chmod 不让 bobi 读/tmp/test.txt 再看是否能读取)
[root@bobi tmp]# echo "I am bobi" > test.txt
[root@bobi tmp]# ls
ababa bigfile bigfile.tar.bz2 bigfile.tar.gz test.txt tmp
[root@bobi tmp]#
[root@bobi tmp]# ll test.txt
-rw-r--r-- 1 root root 10 Apr 7 13:38 test.txt
[root@bobi tmp]#
[root@bobi tmp]# chmod o-r test.txt
[root@bobi tmp]# ll test.txt
-rw-r----- 1 root root 10 Apr 7 13:38 test.txt
[root@bobi tmp]#
[root@bobi tmp]# su - bobi
Last login: Thu Apr 7 12:46:19 CST 2022 on pts/0
[bobi@bobi ~]$
[bobi@bobi ~]$ ll /tmp/test.txt
-rw-r----- 1 root root 10 Apr 7 13:38 /tmp/test.txt
[bobi@bobi ~]$ cat /tmp/test.txt
cat: /tmp/test.txt: Permission denied 其他人无法查看 test.txt文件
[bobi@bobi ~]$
用法二:
chmod 8进制 文件
chmod 764 test.txt (rwx rw- r--)
其中
r | 4 |
w | 2 |
x | 1 |
chown 更改文件所属用户
chown 用户 文件
[root@bobi ~]# su - bobi
Last login: Thu Apr 7 13:42:57 CST 2022 on pts/0
[bobi@bobi ~]$ cat /tmp/test.txt
cat: /tmp/test.txt: Permission denied
[bobi@bobi ~]$
[bobi@bobi ~]$ logout
[root@bobi ~]#
[root@bobi ~]# cd /tmp/
[root@bobi tmp]# ll test.txt
-rw-r----- 1 root root 10 Apr 7 13:38 test.txt
[root@bobi tmp]# chown bobi test.txt
[root@bobi tmp]# ll test.txt
-rw-r----- 1 bobi root 10 Apr 7 13:38 test.txt
[root@bobi tmp]#
[root@bobi tmp]# su - bobi
Last login: Thu Apr 7 13:47:35 CST 2022 on pts/0
[bobi@bobi ~]$ cat /tmp/test.txt
I am bobi
[bobi@bobi ~]$ echo "Hello World" > /tmp/test.txt
[bobi@bobi ~]$
[bobi@bobi ~]$ logout
[root@bobi tmp]#
[root@bobi tmp]# cat test.txt
Hello World
chgrp 更改文件所属组
chgrp 组 文件
[root@bobi tmp]# ll test.txt
-rw-r----- 1 root root 12 Apr 7 13:49 test.txt
[root@bobi tmp]#
[root@bobi tmp]# chgrp bobi test.txt
[root@bobi tmp]# ll test.txt
-rw-r----- 1 root bobi 12 Apr 7 13:49 test.txt
粘滞位 (t)
粘滞位针对目录进行赋权
用于共享目录,所有人都可以对目录进行操作,但是目录中的文件只有文件的
建立者才可以删除
chmod o+t 文件 增加粘滞位
chmod o-t 文件 删除粘滞位
/tmp 目录是粘滞目录,存放进程的临时文件
[root@bobi tmp]# ll -d /tmp/
drwxrwxrwt. 9 root root 193 Apr 7 14:08 /tmp/
在前面,root用户在 /tmp 目录下创建了一个 test.txt 文件
由于 /tmp 目录设有粘滞位,所以其他用户对 test.txt 没有删除的权限
验证:
[root@bobi tmp]# ls
ababa bigfile bigfile.tar.bz2 bigfile.tar.gz test.txt tmp
[root@bobi tmp]# su - bobi
Last login: Thu Apr 7 13:48:48 CST 2022 on pts/0
[bobi@bobi ~]$ cd /tmp/
[bobi@bobi tmp]$ LANG=en
[bobi@bobi tmp]$ rm -fr test.txt
rm: cannot remove test.txt: Operation not permitted 非文件创建者无法删除
sgid, suid 权限(s)
sgid 是针对目录建立的权限
在设置了sgid 权限的目录中建立的文件的所属组会继承父目录的所属组
chmod g+s 文件
chmod g-s 文件
测试:
/tmp 目录在没有设置 sgid 权限之前,使用 bobi 新建一个文件 1.txt
文件的所属组是用户bobi的属组 bobi
[root@bobi tmp]# ll -d /tmp/
drwxrwxrwt. 9 root root 193 Apr 7 14:28 /tmp/
[root@bobi tmp]#
[root@bobi tmp]# su - bobi
Last login: Thu Apr 7 14:10:07 CST 2022 on pts/0
[bobi@bobi ~]以上是关于Linux第四天 用户和组及文件和目录权限的主要内容,如果未能解决你的问题,请参考以下文章