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 主要的发行版本

主要的区别 软件安装,其他的基本一致

开源软件

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.txtLinux第四天

查看目录权限 ls -ld 目录

drwxr-xr-x  2  root  root  testdir

Linux第四天

- 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第四天 用户和组及文件和目录权限的主要内容,如果未能解决你的问题,请参考以下文章

用户和组权限管理笔记

Linux用户权限管理和组管理相关命令

Linux课堂随笔---第四天

Linux用户群组及权限

Linux 第11天文件和用户管理

Linux中的账号和权限管理(理论讲解部分)