Linux常用命令之二

目录

 

文件的隐藏属性

文件权限

用户身份与文件权限

存储结构


文件的隐藏属性


 chattr命令 用于设置文件的隐藏权限
想把某个隐藏功能添加到文件上 则在命令后面追加+参数  如果想要把某个隐藏功能移出文件则需要追加“-参数”
  i    无法对文件进行修改 若对目录设置了该参数,则仅能修改其中的子文件内容而不能新建或删除文件
a   仅允许补充(追加)内容,无法覆盖/删除内容
S 文件内容在变更后立即同步到硬盘(sync)
s 彻底从硬盘删除,不可恢复(用0填充原文件所在硬盘区域)
A 不在修改这个文件或目录的最后访问时间(atime)
b 不在修改这个文件或目录的最后存取时间
D 检查压缩文件中的错误
d 使用dump命令备份时忽略本文件/目录
c 默认将文件或目录进行压缩
u 当删除该文件后依然保留其在硬盘中的数据,方便日后恢复
t 让文件系统支持尾部合并(tail-merging)
X 可以直接访问压缩文件中的内容

eg;chattr +a +S 文件名/目录

lsattr 用于显示文件的隐藏权限
lsattr a
-----a-------e- ./a

文件访问控制列表
针对对指定用户进行单独的权限控制  就需要用到访问控制列表

setfacl命令
用于管理文件ACL规则
可以针对单一的用户或用户组、单一文件或目录进行读/写执行权限控制
-R针对目录文件
-m 针对普通文件
-b 删除某个文件ACL

setfacl -Rm u:sj:rwx jay

setfacl -b jay 

怎么去查看文件上有哪些ACL呢?ls命令是看不到ACL表信息的,但却可以看到文件的权限最后一个点.变成+ 这就表示该文件已经设置了ACL


getfacl
显示文件上设置的ACL信息

getfacl jay 

-bash-4.1$ getfacl jay
# file: jay
# owner: root
# group: root
user::rwx
user:sj:rwx
group::rw-
mask::rwx
other::---

su命令与sudo服务
su命令可以进行用户切换,但在切换的过程中会暴露root密码,增大了系统密码被黑客获取的几率
sudo可以把特定命令的执行权限赋予给指定用户
-h 列出帮助信息
-l 列出当前用户可执行命令
-u 以指定的用户身份执行命令
-k 清空密码的有效时间 下次执行sudo时需要再次进行密码验证(谁使用sudo命令,清空谁的密码)
-b 在后台执行指定的命令
-p 更改询问密码的提示语

总结来说 sudo具有如下功能
限制用户执行指定的命令
记录用户执行的每一条命令
配置文件/etc/sudoers 提供集中的用户管理,权限与主机等参数
验证密码的后5分钟内(默认值) 无须再让用户再次验证密码

注意:如果担心直接修改配置文件出现问题 可用命令visodo
这条命令在配置时禁止多个用户同时修改sudoers配置文件 
还可以对配置文件内的语法进行检查和报错

可以在sudo命令的配置文件中 在99行填写指定的信息
格式 为
 谁可以用 允许使用的主机=(以谁的身份) 可以执行的命令
sj  ALL=(ALL) ALL

如果不允许普通用户拥有整个系统的所有命令
eg:
sj ALL=(ALL) /usr/bin/cat (绝对路径 可以用whereis查看)

如果不想每次使用sudo都验证密码,可以使用配置
sj ALL=NOPASSWD /usr/bin/cat (绝对路径 可以用whereis查看)


 

文件权限

- 普通文件 
d 目录文件
l 链接文件
b 块设备文件
c 字符设备文件
p 管道文件
每个文件 都有所属的所有者和所有组 其他人对文件
 可读 表示能够读取文件的实际内容 
可写 表示能够编辑新增 修改 删除
可执行 表示能够运行一个脚本程序

目录文件的权限
可读表示能够读取目录内的文件列表
可写 表示能够在目录内新增,删除,重命名 
可执行 表示能够进入该目录

读 写 执行
r    w   x 
4    2   1

-rw-r--r--. 1 root root   62 6月   9 22:08 readme.txt 
文件类型 访问权限 属主 属组    文件占用磁盘的大小 修改时间 

文件的特殊权限

SUID 是一种对二进制程序进行设置的特殊权限,可以让二进制程序的执行者临时拥有属主权限(仅对拥有执行权限的二进制程序有效)

eg:所有用户都可以执行passwd命令来修改自己的用户密码,而用户密码保存在/etc/shadow文件中。但这个文件的默认权限是000,也就是说除了root,所有用户都没有查看和编辑该文件的权限 
但是,在使用passwd命令时如果加上SUID特殊权限位 ,就可以临时拥有程序所有者的身份,把变更密码写入shadow

ll /usr/bin/passwd 
-rwsr-xr-x. 1 root root 25980 2月  22 2012 /usr/bin/passwd

当对某个二进制程序设置了SUID权限后,文件的所属人权限部分的x执行权限就会替换成s或S,原来有执行权限的会写成s
原本没有x的会被写成S

SGID 
让二进制程序的执行者临时拥有属组权限(仅对拥有执行权限的二进制程序有效)
在某个目录中创建的文件自动继承该目录的用户组(只可以对目录进行设置)

每个文件都有它所有者和所有组
当创建或传送一个文件后,这文件就会自动归属于执行这个操作的用户(即该用户是文件的所有者)
现在需要一个部门内设置共享目录,让部门内人员都可以读取目录中的内容 那么就创建部门共享目录后在目录上设置SGID 
这样 部门内任何人员在里面创建的任何文件都归属于该目录的所属组,而不再是自己的基本组

当对某个二进制程序设置了SUID权限后,文件的所属组权限部分的x执行权限就会替换成s或S,原来有执行权限的会写成s
原本没有x的会被写成S

chmod -Rf g+s testdir/


chmod
能够设置文件或目录的权限
chmod 760 jay 

-R 目录名  将递归设置目录内权限

chown 设置文件或目录的所有者和所有组
chown 所有者:所有组 文件或目录名称

SBIT
当对某个目录设置了SBIT权限后,那么该目录中的文件就只能被其所有者执行删除操作
文件的其他人权限部分的x执行权限就会替换成t或T,原来有执行权限的会写成t
原本没有x的会被写成T

chmod -R o+t linux/

a  所有用户,三个不同级别的权限都可以进行修改
u  系主, 改变系主的权限
g  组,改变同组的权限
o  其他用户,改变其他用户的权限

+  添加新的权限
 -  删除权限
= 在删除所有权限后重新设置

用户身份与文件权限


管理员 UID为0 系统的管理员用户
系统用户UID为1~999  默认程序会有独立的系统用户负责运行,进而有效的控制被破坏范围
普通用户UID从1000 是由管理员创建的用于日常工作的用户
UID不能冲突
需要注意的是
在linux系统创建每个用户时,将自动创建一个与其同名的基本用户组,而且这个基本用户组只有该用户一个人。如果该用户以后被归纳为其他用户组,则这个其他用户组称之为扩展用户组。 一个用户只有一个基本用户组,但可以有多个扩展用户组
5.1用户身份与能力
useradd 【选项】【用户名】 创建用户账户 
-d 指定用户的家目录 默认为/home/username
-e 账户的到期时间 格式为 YYYY-MM-DD
-u 指定该用户的默认UID
-g 指定一个初始的用户基本组(必须已存在)
-G 指定一个或多个扩展用户组
-N 不创建与用户同名的基本用户组
-s 指定该用户默认的shell解释器  默认为/bin/bash
eg useradd -d /home/sj -u 8889 -s /sbin/nologin yqy
id yqy
uid=8889(yqy) gid=8889(yqy) 组=8889(yqy)
注意 /sbin/nologin是终端解释器中的一员 与Bash解释器有着天壤之别,一旦解释器设置为nologin,该用户不能登录系统。


groupadd
用于创建用户组  
更高效的安排一类用户权限
groupadd 组名

usermod 用于修改用户属性
因为用户的信息被保存在/etc/passwd文件中,所以也可以通过修改其中的参数
-c 填写账户的备注信息
-d -m 这两个参数两用,可以重新指定用户的家目录并自动把旧数据转移过来
-e 账户到期时间 格式 YYYY-MM-DD
-g 变更所属用户组
-G 变更扩展用户组

-L锁定用户禁止登陆系统
-U 解锁用户,允许其登陆系统
-s 变更默认终端
-u 修改用户UID

eg:usermod -G root sj
[root@stx stx]# id sj
uid=8888(sj) gid=8888(sj) 组=8888(sj),0(root)

 usermod -c 這是一個普通用戶 sj
sj:x:8888:8888:這是一個普通用戶:/root/stx:/bin/bash


passwd 用于修改用户密码,过期时间 认证信息 
-l 锁定用户 禁止其登陆
-u 解锁锁定 允许用户登陆
--stdin 允许通过标准输入修改用户密码 echo "123"| passwd --stdin sj
-d 是该用户可用空密码登陆
-e 强制用户在下次登陆时修改密码
-S 显示用户密码是否被锁定,以及密码所采用的加密算法名称
passwd -S sj
sj PS 2018-06-11 0 99999 7 -1 (密码已设置,使用 SHA512 加密。)
注意修改当前用户不需要参数

userdel 
用于删除用户 
-f 强制删除用户
-r 同时删除用户及用户家目录

存储结构

一切从“/”开始
采用文件系统层次化标准FHS 采用树形结构
目录名称严格区分大小写,不包含“/”

物理设备命名规则
一台主机可以有多块硬盘 可以用a~p代表16块不同的硬盘
分区编号
  主分区或扩展分区的编号从1开始到4结束
  逻辑分区从编号5开始
 需要注意的是
 1./dev/sda 并不表示第一个插槽的存储设备 
 而是由系统的识别顺序决定的
 2./dev/sdb3 并不表示分区已经有3个分区,只能表示编号为3的分区

扩展分区是并不是真正的分区,在其原本位置额外划分急块逻辑分区 ,它只存放指向逻辑分区的指针

文件系统 
作用:合理的规划硬盘
ext3 ext4 xfs
正因为有了VFS 所以用户会感觉不同的文件系统,文件操作起来都一样 
VFS架构 
       用户进程
       系统调用界面
       虚拟文件系统VFS
    ext3 ext4 xfs 等文件系统
          缓存
        系统驱动程序
       磁盘设备控制器   

6.4挂载硬件设备
拿到全新的硬盘存储设备后要先分区然后格式化 最后挂载并正常使用
当用户需要使用硬盘中的数据时,需要将其与一个已存在的目录文件相关联
mount 命令
mount 文件系统 挂载目录 

-a 挂载所有在/etc/fstab中定义的文件系统(可以自动检查有无疏漏的被挂载设备) 如果有,则自动挂载

-t 指定文件系统的类型

mount /dev/sdb2  /newfs

这种操作,每次操作都手动挂载一下
如果想让硬件设备和目录永久自动关联

配置文件实现挂载(/etc/fstab)
                                     
设备文件       挂载目录 格式类型 权限选项  自检  优先级
路径名+设备名称         ext3等    默认default  1则自检      
 umount /dev/sdb2

6.5.1 fdisk
用于管理磁盘分区
交互式命令
m  查看全部可用的参数
n   添加新的分区
d    删除某个分区
l    列出所有可用的分区类型
t    改变某个分区的类型
p    查看分区信息
w    保存并退出
q     不保护直接退出

fdisk /dev/sdb  输入n添加新的分区

linux系统会自动把这个硬盘主分区抽象成/dev/sdb1设备文件

partprobe手动将分区信息同步到内核

如果硬件存储设备进行格式化,则无法得知怎么在其上写入数据

mkfs可以进行格式化分区  
 mkfs 此处连续按下两次tab
mkfs          mkfs.ext2     mkfs.ext4     mkfs.msdos    
mkfs.cramfs   mkfs.ext3     mkfs.ext4dev  mkfs.vfat  

mkfs.xfs /dev/sdb1 表示将分区格式化为xfs

最后是挂载设备

df -h 命令来查看挂载状态和硬盘使用量信息

du命令
该命令就是用来查看一个或多个文件占用的空间大小
 du -sh stx
40M     stx

6.6添加交换分区
SWAP交换分区是一种通过在硬盘中预先划分一定的空间,然后将把内存中暂时不常用的数据临时存放到硬盘中,以便腾出物理内存空间让更活跃的程序来使用的技术


6.7磁盘容量配额
因为linux为多用户的,root需要使用磁盘容量配额来限制某个用户或者某个用户组针对特定文件夹可以使用的最大硬盘空间或最大文件个数
软限制:当达到软限制时会提示用户,但仍允许用户在限定的额度内继续使用。
硬限制:当达到硬限制时会提示用户,且强制终止用户操作

xfs文件系统
xfs_quota 来管理quota磁盘容量配额服务而设计的命令 
-c 用于以参数的形式设置要执行的命令
-x 参数是专家模式
eg:tom对/boot目录的quota磁盘容量配额 
具体的限制控制 :硬盘使用量的软限制和硬限制分别为3MB和6MB,创建文件的数量软限制和硬限制
xfs_quota -x -c 'limit bsoft=3m bhard=6m isort=3 ihard=6 tom' /boot
xfs_quota -x -c report /boot

edquota 用于编辑用户的配额限制
-u 针对那个用户进行设置 
-g 表示要针对那个用户组进行设置
edquota -u tom 就会进入vim编辑器


软硬方式链接
硬链接
  硬链接文件与原始文件其实是同一个文件,只是名字不同
  即使硬链接原始文件被删除,硬链接文件还是能访问
  不能跨区对目录文件进行链接
软链接
  仅仅包含所链接文件的路径名
  也可以跨文件系统链接
  当原始文件被删除后,链接文件也就失效了
ln命令
 -s 不带-s参数 默认创建硬链接
 -f 强制创建文件或目录的链接
 -i 覆盖前先询问
 -v 显示创建链接的过程

ln -s /stx(要用相对路径) stx绝对路径

猜你喜欢

转载自blog.csdn.net/qq_35240226/article/details/82973398
今日推荐