文章目录
Linux目录结构图
一切从“/”开始(倒状树结构)在Linux系统中,目录,字符设备,块设备,套接字,打印机都被抽象成了文件,Linux一切皆文件
常用目录详解
/boot | 存放开机所需文件-内核,开机菜单所需的配置文件,vmlinuz-内核文件,initrd.msg,初始化文件,等于windows,PXE |
---|---|
/dev | 以文件形式放任何设备与接口例如:Device设备,光盘cdrom ,别称-软连接-符 号链接 |
/etc | 存放系统管理和配置文件 |
/home | 普通用户的家目录,普通用户必须是root创建 |
/bin | 存放二进制可执行文件(ls,cat,mkdir等),常用命令一般都在这里 |
/lib | 开机时用到函数库,以及/bin与/sbin命令调用的函数,library-库-开发- 提供功能 |
/sbin | 开机过程中需要的命令只有root才能执行(原目录usr/sbin) |
/media | 用于挂载设备文件的目录 /mnt 用于挂载U盘 光盘 |
/opt | 放置第三方的软件,统一管理下载的所有源码包,三方包都放在哪里option |
/root | 超级用户的家目录 |
/srv | 一些网络服务的数据文件目录 |
/tmp | 任何人均可使用的共享临时目录, - tmp -拥有特殊权限t - SBIT 只有文件的拥有者能删除自己的文件 |
/proc | 虚拟文件系统目录,系统内存的映射。可直接访问这个目录来获取系统硬件信息 |
/usr | 最庞大的目录,我们要用到的很多应用程序和文件几乎都存放在这个目录 |
/var | 主要存放经常变化的文件, 日志系统 messages 服务志/var/log/httpd/access_logerror_log --ELK |
/lost+found | 当文件系统发生错误时,将一些丢失的文件片段存放在这里 |
/etc目录常用配置文件
/etc/resolv.conf | DNS客户端配置文件,逐渐被网卡配置文件所替代 |
---|---|
/etc/hosts | 本机DNS解析文件,优先级高于DNS服务器 |
/etc/hostname | CentOS 7 主机名配置文件 |
/etc/fstab | 开机自动挂载设备的配置文件,开机就启动 |
/etc/rc.local | 开机自启动脚本程序或者命令的文件,也可以磁盘设备挂载,开机后启动 |
/etc/mtab | /当前已挂载的文件系统列表,由scripts初始化,使用mount、umount 命令时会立即更新 mtab 文件 |
/etc/inittab | 设定系统启动时init进程将把系统设置成什么样的runlevel及加载相关的启动文件设置 |
/etc/init.d | 存放系统或服务器以System V 模式启动的脚本 |
/etc/profile | 配置系统的环境变量、别名等的文件,各种永久配置,生效需重新登录 |
/etc/bashrc | 配置系统的环境变量、别名等的文件,各种永久配置,生效需重新登录 |
/etc/issue | 系统启动后用户登录前,登录页面提示信息的配置文件 |
/etc/issue.net | 系统启动后用户登录前,登录页面提示信息的配置文件 |
/etc/motd | 账户登录后弹出的登录提示,可配置欢迎信息 |
/etc/sysctl.conf | Linux内核参数设置文件,用于内核的配置和优化 |
/etc/redhat-release | centos查看版本信息,ubuntu 为/etc/lsb-release,oracle 为 /etc/oracle-release |
/etc/group | 设置用户的组名和相关信息 |
/etc/gshadow | 查看用户组相关信息 |
/etc/passwd | 账号信息文件 |
/etc/shadow | 密码信息文件 |
/etc/yum.repos.d/ | 存放yum源配置文件目录 |
/etc/default/useradd | 新增账户的默认属性配置 |
/etc/login.defs | 新增用户的属性信息 |
/etc/skel | 提供用户环境变量配置文件,由此目录向新增用户家目录添加环境变量配置文件 |
普通文件与特殊文件区分
– | 普通文件(文本文件) |
---|---|
d | 目录文件 |
l | 链接文件(特指软链接文件,快捷方式=符号链接) |
b | 块设备文件(block=硬件=机器硬盘=扇区=在Linux 表示为,块设备文件) |
c | 字符设备文件(字符设备=虚拟终端=tty) |
p | 管道文件 (> >> |
s | socket 安全套接字文件(所有的服务基于某个协议所有服务=端口号)虚拟层 - 安全套接层 - 启动服务 -80 端口 |
用户与用户组的概念
Linux是可多用户系统,同时控制工作,安全系数具备相同特性的用户
一组:分不同的操作权限职责用户,实施,检测,运维
文件,服务,归责,拥有者,用户=属主
Linux操作系统对多用户的管理,是非常繁琐的,所以用组的概念来管理用户就变得简单,每个用户可以在一个独立的组,每个组可以有零个用户或多个用户,Linux系统用户是根据用户ID来识别的,默认ID长度为32位,从默认ID编号从0开始,但是为了和老式系统兼容,用户ID限制在60000以用户分为三种
root用户:ID0 :超级用户
系统用户:ID1-499 或 1-999 :用于运行服务,但是此用户无家目录&不可登入
普通用户:ID500以上- 6版本 或 1000以上 -7版本 :必须由root创建,权限root分配
ID默认从1000 - 6533 最大用户数
Linux系统中的每个创建的文件或者文件夹,都有一个所属用户及所属组,使用ID命令可以显示当前用户的信息
每个用户拥有一个UserID,操作系统实际读取的是UID,而不是用户名称
每个用户属于一个主组,属于一个或多个附属组,一个用户最多有31个附属组
每个组拥有一个GroupID
每个进程以一个用户的身份运行,该用户可对进程拥有资源控制权限,出问题能快速找出该进程是谁负责
每个可登陆用户拥有一个指定的Shell环境bin/bash
Linux用户在操作系统可以进行日常管理和维护,涉及到的相关配置文件
root用户:一个特殊的管理账号,也被称为超级用户,root接近完整的系统控制,对系统损害几乎有无限能力,除非必要,不要登入为root
普通用户:非特权用户,权限有限造成损害的能力比较有限
你的用户不是名字叫root就一定是超级用户,普通用户还是超级用户是由系统中UID决定的,UID=0 则为超级用户,UID非0 则为普通用户
[root@localhost ~]# 超级用户
[jiangzhi@localhost ~]$ 普通用户
[root @ localhost ~ ]#
用户名 @ 主机名 ( ~ 当前所在目录)(#root - $普通用户)
用户权限管理
Linux文件或目录有三种权限:
r (读取) 可读取文件内容 ,可列出目录内容
w(写入) 可修改文件内容 ,可在目录中创建删除内容
x (执行) 可作为命令执行脚本,普通用户才能访问目录内容
案列1,文件 – rwx 权限请问该文件可以删除吗?
答案:文件是否可以删除不是看文件自身权限,而是看所在目录是否具备(W)权限
d rwx r-x r-x. 2 root root 6 Nov 12 13:55 date
(d类型)(rwx属主)(r-x属组)(2硬链接个数) (r-x其它)(root属组)(root属组)(6大小)(12号下午13:55创建)(date文件名)
Linux权限,默认授权给三种角色,分别是user ,group ,other ,与用户关联
U代表user用户 ,G代表Group组 ,O代表other其他不在组内的人
权限 | 文件所有者 | 文件所属组 |
其他人 |
---|
权限项 | 读 | 写 | 执行 | 读 |
写 |
执行 |
读 | 写 | 执行 |
---|---|---|---|---|---|---|---|---|---|
字符方式 | r | w | x | r |
w |
x |
r | w | x |
数字方式 | 4 | 2 | 1 | 4 |
2 |
1 |
4 | 2 | 1 |
注意:文件是否可以删除,不是受自身权限控制,而是所在的目录是否具备可写权限
权限 | 文件 | 目录 |
---|---|---|
4- r | 阅读文件内容 | 浏览目录内容 |
2-w | 修改文件内容 | 目录中增删改文件 |
1-x | 脚本文件 | 是否允许进入目录 |
文件权限默认644 ,文件满位权限 666
目录权限默认755 ,目录满位权限 777
默认权限与满位权限相差22,那这22是用来定义创建文件或目录的权限 ,也称之为反掩码
配置文件路径/etc/profile**,umask = 0022 特殊权限 ,修改完成重启文件source /etc/profile
chmod:修改权限文件或目录
常用参数:
+ | 表示增加权限 |
---|---|
– | 表示取消权限 |
= | 表示覆盖权限 |
u | user用户 |
g | group组 |
o | other其他 |
-R | 递归更改目录里所有文件-继承权限 |
以下例子:
[root@localhost ~]# chmod 666 file1 :以数字形式给予满权限
[root@localhost ~]# chmod u+x,g+x,o+x file1 :字母形式给予权限,逗号相隔
[root@localhost ~]# chmod u-x,g-x,o-x file1 :取消所有的x执行权限
[root@localhost ~]# chmod u=rw,g=r,o=r file1 :覆盖当前权限
[root@localhost ~]# chmod -R 777 date :包括目录本身里面所有文件权限覆盖更改
补充:chmod -R /etc --- 不加/ 连同etc自身都改变, chmod -R /etc/ ---加/ 不包括etc自身里面文件改变
chown:修改文件或目录的属主属组
以下例子:
[root@localhost ~]# chown jiangzhi file1 :修改文件所属主
[root@localhost ~]# chown jiangzhi:jiangzhi file1 :修改属主和属组
[root@localhost ~]# chown :dengzhi file1 :单独修改属组前面加双引号或者点
useradd:创建普通用户
常用参数:
-d | 指定用户家目录 |
---|---|
-g | 指定一个组(组必须存在) |
-G | 指定一个或多个组(组必须存在) |
-s | 指定解释器例如:/bin/bash或/sbin/nologin |
-M | 不创建家目录 |
-u | 指定用户ID |
以下例子:
[root@localhost home]# useradd -d /home/jianzhi1 -s /bin/bash dengzhi :不-S指定解释器登入普通用户会异常
[root@localhost home]# useradd -M -d /home/jiangzhi1 zaizhi :创建用户-M不要家目录,-d指定其他家目录
[root@localhost~]#useradd xianggan -g jiangzhi2 :用户属主与属组都是通过ID识别的
[root@localhost~]#useradd zhongguo -u 888 :指定用户ID
[root@localhost~]#useradd dengzhi1 -g jiangzhi10 :指定属组
[root@localhost~]#useradd dengzhi2 -g jiangzhi9 -G jiangzhi10 :添加附属组
userdel:删除普通用户
常用参数:默认删除用户保留家目录
-r | 删除用户及家目录,系统用户无法删除 |
---|---|
-rf | 强制删除用户及家目录,包括系统用户 |
以下例子:
[root@localhost/home]#userdel dengzhi2 :不加参数默认删除用户,家目录还存在
[root@localhost/home]#userdel -r dengzhi1 :删除用户及家目录
usermod:修改用户账号
常用参数:
-d | 更改用户登入的家目录 |
---|---|
-U | 解除密码锁定 |
-L | 锁定用户账号 |
以下例子:
[root@localhost/home]#usermod -d /home/jiangzhi dengzhi :将用户转移到新创建的目录作为家目录需要把/etc/skel/.*文件拷贝到新目录里面
由于新创建的目录没有配置文件,提示符没有任何变化,只能用pwd确定自己的位置
[root@localhost/home]#cp /etc/skel/.* /home/jiangzhi :拷贝所有带.文件到jiangzhi新家目录
[root@localhost~]#usermod -L dengzhi :锁定用户无法登入
[root@localhost~]#usermod -U dengzhi :解锁用户
groupadd:创建用户组
常用参数:
-g | 创建工作组指定ID |
---|---|
-r | 创建系统工作组ID小于1000 |
以下例子:
[root@localhost~]#groupadd -g 1888 xianggan
[root@localhost~]#groupadd -r dengdeng
groupdel:删除用户组
常用参数:只有默认参数
以下例子:
[root@localhost~]#groupdel fafa
groupmod:更改用户组
常用参数:
-g | 更改组GID |
---|---|
-n | 更改组的名称 |
以下例子:
[root@localhost~]#groupmod -g 1999 xianggan
[root@localhost~]#groupmod -n systemc xianggan
特殊权限及ACL权限
在特殊的环境下,我们的普通权限已经满足不了我们的安全需求了,所以,我们拥有了特殊权限来加固我们的文件安全,针对文件和文件设定特殊的用户和用户组,配置RWX权限来规定使用的用户
权限 | 对文件的影响 | 对目录的影响 |
---|---|---|
SUID-- 属主控制 -4 | 普通用户当作root用户权限使用 | 无 |
SGID – 属组控制 -2 | 以文件所属组身份去执行 | 该目录创建文件所属组相同 |
Sticky(SBIT)t = 1 | 无(粘滞位) | 该文件属主才能删除该文件 |
Linux中设置特殊权限方法如下:
设置suid: chmod u+s jiangzhi文件或目录
设置sgid: chmod g+s jiangzhi文件或目录
设置sticky: chmod o+t jiangzhi文件或目录
以下例子:
[root@localhost /]# chmod 4755 root :没有特殊权限普通用户都进不了root家目录,755权限只能查看不能增删
文件或目录4666没有执行权限可读写不能删除S为大写,4777满位权限任意删除添加S为小写
stat:显示文件或目录详细信息时间
常用参数:文件或目录权限,创建时间,软连接,Block个数,文件类型
-f | 显示文件系统的信息 |
---|---|
Access | 访问时间 |
Modify | 修改时间 |
Change | 状态改动时间 |
以下例子:
[root@localhost ~]# stat /sbin
chattr:添加文件属性
常用参数:
-a | 仅允许补充(追加)内容,无法覆盖/删除内容 |
---|---|
-s | 文件内容在变更后立即同步到硬盘 |
-u | 当删除该文件后依然保留其在硬盘中的数据,方便日后恢复 |
以下例子:
[root@localhost~]#chattr +a file1
[root@localhost~]#chattr +a file1 :取消a功能
lsattr:显示文件隐藏属性
-a | 列出目录中的所有文件,包括隐藏文件或隐藏权限 |
---|
以下例子:
[root@localhost~]#lsattr
[root@localhost~]#lsattr -a
setfacl:管理文件的ACL规则
常用参数:对某个指定的用户进行单独的权限控制,就需要用到文件的访问控制列表(ACL)基于普通文件或目录设置ACL其实就是针对指定的用户或用户组设置文件或目录的操作权限,如果针对某个目录设置了ACL,则目录中的文件会继承其ACL;若针对文件设置了ACL,则文件不再继承其所在目录的ACL
-R | 递归对目录或文件 |
---|---|
-m | 更改文件的访问控制 |
-b | 取消ACL |
以下例子:
没有设置ACL权限普通用户是没有权限访问root家目录
[root@localhost~]#setfacl -Rm u:dengzhi:rwx /root:添加ACL规则root目录会多出一个+号表示ACL已经生效,也证实了普通用户在root家目录随意增删改查
[root@localhost~]#setfacl -b /root:取消ACL规则
getfacl:查看目录ACL信息
常用参数:
以下例子:
[root@localhost~]#getfacl /root :没有设置ACL与设置了ACL的查看区别
待完成,"小白勿喷,谢谢观看"
来源:CSDN
作者:为什么不努力
链接:https://blog.csdn.net/qq_43032269/article/details/103792844