Linux 权限管理(2)与挂载

今天接着上一篇,讲完Linux中的权限管理命令,并简单讲一下挂载命令。

SBIT:粘着位。只对目录有用,且普通用户对目录有w和x权限,即普通用户可以对目录有写入权限当一个目录赋予了粘着位,除了root可以删除所有文件外,普通用户就算拥有w权限,也不能删除其他用户的文件,只能删除自己建立的文件。

设置粘着位:

  • chmod 1755 目录名:给目录赋予755权限并且设置了粘着位
  • chmod o+t 目录名:同样
[user1@centos-7 tmp]$ mkdir dir_1
[user1@centos-7 tmp]$ chmod 1755 dir_1
[user1@centos-7 tmp]$ ls -ld dir_1
drwxr-xr-t. 2 user1 user1 6 4月   8 21:43 dir_1
[user1@centos-7 tmp]$ cd dir_1
[user1@centos-7 dir_1]$ touch aaa
[user1@centos-7 dir_1]$ echo 'aaa' >> aaa
[user1@centos-7 dir_1]$ ll
总用量 4
-rw-rw-r--. 1 user1 user1 4 4月   8 21:44 aaa
[user1@centos-7 dir_1]$ chmod 777 aaa
[user1@centos-7 dir_1]$ ll
总用量 4
-rwxrwxrwx. 1 user1 user1 4 4月   8 21:44 aaa
[user1@centos-7 dir_1]$ su - liming
密码:
上一次登录:四 3月 25 23:28:53 CST 2021pts/0 上
[liming@centos-7 ~]$ rm -rf /tmp/dir_1/aaa
rm: 无法删除"/tmp/dir_1/aaa": 权限不够
[liming@centos-7 ~]$ touch /tmp/dir_1/bbb
touch: 无法创建"/tmp/dir_1/bbb": 权限不够
[liming@centos-7 ~]$ exit
登出
[user1@centos-7 dir_1]$ chmod 1756 /tmp/dir_1
[user1@centos-7 dir_1]$ ls -ld /tmp/dir_1
drwxr-xrwT. 2 user1 user1 17 4月   8 21:44 /tmp/dir_1
[user1@centos-7 dir_1]$ su - liming
密码:
上一次登录:四 4月  8 21:45:25 CST 2021pts/0 上
[liming@centos-7 ~]$ rm -rf /tmp/dir_1/aaa
rm: 无法删除"/tmp/dir_1/aaa": 权限不够

可以发现,用户只能删除自己的文件,不能删除别人的文件。

chattr权限:格式:chattr [-+=] [选项] 文件或者目录名。chattr命令不能保护/、/dev、/tmp、/var目录!!因此在这些目录下的文件或者目录都用不了chattr命令

选项:

  • i:如果对文件设置i属性,那么文件类似被锁死,不允许对文件进行删除改名和修改,如果对目录设置i属性,只能修改目录下的文件的数据,不能建立或者删除文件
[root@centos-7 ~]# chattr +i dir_1
[root@centos-7 ~]# lsattr
---------------- ./anaconda-ks.cfg
---------------- ./canglaoshi
---------------- ./yangmi
-----a---------- ./abc
---------------- ./abc~
---------------- ./abz~
----i----------- ./dir_1
[root@centos-7 ~]# echo 'aaa' >> dir_1/aaa
[root@centos-7 ~]# touch dir_1/bbb
touch: 无法创建"dir_1/bbb": 权限不够
  • a:如果对文件设置a属性,那么只能在文件中增加数据,不能删除也不能修改,相当于把文件的内容锁起来,操作的话只能echo方式追加;如果对目录设置a属性,那么只允许在目录中建立和修改文件(名字不可以修改),不允许删除,相当于把目录中的文件锁起来。总的来说,a比i要宽松一点。a的话可以追加,除此之外删除修改和i一样都是不允许的

lsattr:查看文件系统属性

  • lsattr -a 目录名:显示所有文件和目录
  • lsattr -d 目录名:列出目录本身的属性,而不是子文件

sudo:针对命令,将某些管理员才能使用的命令赋予给普通用户
使用:visudo,实际上修改的是/etc/sudoers文件。
在文件中这样显示:
root ALL=(ALL) ALL:分别表示 用户名 被管理主机的地址=(可使用的身份) 授权命令(绝对命令)
比如:sc ALL=/sbin/shutdown -r now:这个命令就是给予sc用户在本机使用shutdown命令中的now选项

  • sudo -l:查看当前用户有哪些sudo权限
  • sudo /sbin/shutdown -r now:执行命令要先命令的绝对路径
    注意:千万不要随便把vim命令给用户,不然该用户可以通过vim修改系统文件,达到成为root的目的!!

文件系统查看命令:df

  • df -h:使用习惯单位显示容量,如KB,MB或者GB等。该命令也可以查看是否挂载成功
[root@centos-7 ~]# df -h
文件系统             容量  已用  可用 已用% 挂载点
devtmpfs             888M     0  888M    0% /dev
tmpfs                898M     0  898M    0% /dev/shm
tmpfs                898M  9.6M  889M    2% /run
tmpfs                898M     0  898M    0% /sys/fs/cgroup
/dev/sda3             10G  1.5G  8.5G   15% /
/dev/sda1            197M  120M   77M   61% /boot
tmpfs                180M     0  180M    0% /run/user/0
/dev/mapper/vg1-lv1  197M   11M  187M    6% /mnt/lv1
  • df -T:显示文件系统类型
  • df -a:显示所有文件系统信息,包括特殊文件系统

du:显示文件或者目录大小

  • du -a [目录名或文件名]:显示每个子文件的磁盘占用量,默认只统计子目录的磁盘占用量
[root@centos-7 ~]# du -a /tmp
0       /tmp/.Test-unix
0       /tmp/.XIM-unix
0       /tmp/.font-unix
0       /tmp/.ICE-unix
0       /tmp/.X11-unix
0       /tmp/issue.soft
0       /tmp/vmware-root_595-4013788883
0       /tmp/test
0       /tmp/vmware-root_590-2688750742
0       /tmp/vmware-root_600-2722697857
0       /tmp/vmware-root_631-4021718894
0       /tmp/vmware-root_610-2731152165
0       /tmp/vmware-root_624-2688750775
4       /tmp
  • du -h [目录名或文件名]:使用习惯单位显示大小,比如KB,MB等。其实很多命令选项都有这个选项
  • du -s [目录名或文件名]:统计总占用量,而不列出子目录和子文件的占用量
[root@centos-7 ~]# du -hs /tmp
4.0K    /tmp
[root@centos-7 ~]# ls -ldh /tmp
drwxrwxrwt. 14 root root 4.0K 4月   8 22:06 /tmp

ll 命令与 du的统计目录大小的区别:
ll之后统计目录中一级目录的作用,而du命令可以统计目录中所有子目录的大小
du 与 df 命令的区别:df命令从文件系统考虑,还要统计命令或者程序占用的空间(常见的是文件已删除但是没有释放空间),du则只会计算文件或目录占用的空间。

[root@centos-7 ~]# df -h /
文件系统        容量  已用  可用 已用% 挂载点
/dev/sda3        10G  1.5G  8.5G   15% /
[root@centos-7 ~]# du -sh /
du: 无法访问"/proc/1931/task/1931/fd/3": 没有那个文件或目录
du: 无法访问"/proc/1931/task/1931/fdinfo/3": 没有那个文件或目录
du: 无法访问"/proc/1931/fd/4": 没有那个文件或目录
du: 无法访问"/proc/1931/fdinfo/4": 没有那个文件或目录
1.6G    /

可以发现,由于没有刷新文件系统,因此du会比df大很多,主要还是残余垃圾。

文件系统修复命令:fsck

  • fsck -a 分区设备文件名:不显示用户提示,自动修复文件系统
  • fsck -y 分区设备文件名:和-a一样,不过有的文件只支持-y

显示磁盘状态:dumpe2fs

  • dumpe2fs 分区设备文件名
[root@centos-7 ~]# dumpe2fs -h /dev/sda1
dumpe2fs 1.42.9 (28-Dec-2013)

挂载命令:mount

  • mount -l:查询已经挂载的设备,会显示卷标名称
  • mount -a:根据配置文件/etc/fstab的内容,自动挂载

挂载命令格式:mount -t 文件系统 -L 卷标名 -o特殊选项 设备文件名 挂载点
挂载光盘格式:
建立挂载点:mkdri /mnt/cdrom
挂载:mount /dev/cdrom /mnt/cdrom
取消挂载:umount /mnt/cdrom

上一篇:linux学习第三课


下一篇:Linux04 shell编程1