linux命令之目录操作(一)

在看具体的命令之前,先来看看权限对于目录的意义,因为这个对于命令的操作也是有一定影响的,另外,理解了权限对于目录的意义,对于执行一些命令出现的问题,比如权限不足的情况,可以更好的排查,找出原因。

目录的权限

目录的权限跟文件的权限有点像,都是分为三组,即所有者权限、组权限、其他人的权限,每组也是由rwx,即读写运行三者组成。

虽然名字都是一样,但是这三个权限对于目录来说的意义却不一样。我们分别来看一下。

第一,读取权限r对于目录的意义。

当你要知道目录里面有什么东西,比如有什么文件,有什么子目录的话,那么就需要有这个权限,可以用ls命令来测试这个权限。

比如,我们的目录/etc,对于所有用户都是可读的:

[jack@VM-0-14-centos /]$ ls -ld etc
drwxr-xr-x. 70 root root 4096 Jan 24 16:41 etc

当我们运行在这个目录运行ls命令时,就可以看到/etc文件夹里面的内容了:

[jack@VM-0-14-centos /]$ ls /etc
acpi               cron.monthly             favicon.png       init            login.defs      networks       prelink.conf.d  redhat-release    shells              uuid
adjtime            crontab                  filesystems       init.conf       logrotate.conf  nfsmount.conf  printcap        request-key.conf  skel                vimrc
aliases            cron.weekly              fstab             init.d          logrotate.d     nsswitch.conf  profile         request-key.d     ssh                 virc
alternatives       crypttab                 gai.conf          inittab         lsb-release     ntp            profile.d       resolv.conf       ssl                 wgetrc
anacrontab         csh.cshrc                gcrypt            inputrc         lsb-release.d   ntp.conf       protocols       rpc               statetab            X11
at.deny            csh.login                gnupg             iproute2        lvm             ntp.conf.dist  qcloudzone      rpm               statetab.d          xdg
audisp             dbus-1                   group             iscsi           magic           openldap       rc              rsyslog.conf      sudo.conf           xinetd.d
audit              default                  group-            issue           mail.rc         opt            rc0.d           rsyslog.d         sudoers             yum
bash_completion.d  depmod.d                 grub.conf         issue.net       makedev.d       pam.d          rc1.d           rwtab             sudoers.d           yum.conf
bashrc             dhcp                     gshadow           kdump-adv-conf  man.config      passwd         rc2.d           rwtab.d           sudo-ldap.conf      yum.repos.d
blkid              DIR_COLORS               gshadow-          kdump.conf      mke2fs.conf     passwd-        rc3.d           sasl2             sysconfig
centos-release     DIR_COLORS.256color      gssapi_mech.conf  krb5.conf       modprobe.d      pkcs11         rc4.d           securetty         sysctl.conf
chkconfig.d        DIR_COLORS.lightbgcolor  host.conf         ld.so.cache     motd            pki            rc5.d           security          sysctl.d
cloud              dracut.conf              hosts             ld.so.conf      mtab            plymouth       rc6.d           selinux           system-release
cron.d             dracut.conf.d            hosts.allow       ld.so.conf.d    multipath       pm             rc.d            services          system-release-cpe
cron.daily         environment              hosts.deny        libaudit.conf   my.cnf          popt.d         rc.local        sestatus.conf     terminfo
cron.deny          ethers                   idmapd.conf       libuser.conf    netconfig       postfix        rc.sysinit      shadow            udev
cron.hourly        exports                  img_version       localtime       NetworkManager  ppp            redhat-lsb      shadow-           updatedb.conf

查看etc文件的权限,可以知道,这个文件夹的所有者是root,所属的组的root,对于同组、其他用户的权限是r和x:

[jack@VM-0-14-centos /]$ ls -ld etc
drwxr-xr-x. 70 root root 4096 Jan 24 16:41 etc

当前的用户jack是一个普通用户,如果我把其他用户的r权限去掉,那么jack将无法看到目录里面有什么内容了:

[root@VM-0-14-centos /]# chmod 751 etc
[root@VM-0-14-centos /]# ls -ld etc
drwxr-x--x. 70 root root 4096 Jan 24 16:41 etc
[root@VM-0-14-centos /]# su jack
[jack@VM-0-14-centos /]$ ls etc
ls: cannot open directory etc: Permission denied

可以看到,当其他用户的r权限被移走之后,jack无法读取目录里面的内容。

这里有个疑问,当这个用户对文件夹没有读取权限,但是对里面的文件有读取权限,那么能否读取到文件的内容呢?

答案是可以的。

[jack@VM-0-14-centos /]$ ls etc
ls: cannot open directory etc: Permission denied
[jack@VM-0-14-centos /]$ cat /etc/fstab

#
# /etc/fstab
# Created by anaconda on Tue Jan 11 19:52:58 2022
#
# Accessible filesystems, by reference, are maintained under '/dev/disk'
# See man pages fstab(5), findfs(8), mount(8) and/or blkid(8) for more info
#
UUID=22785f64-6c43-450f-8ea6-be91302eecc6 /                       ext4    defaults        1 1
tmpfs                   /dev/shm                tmpfs   defaults        0 0
devpts                  /dev/pts                devpts  gid=5,mode=620  0 0
sysfs                   /sys                    sysfs   defaults        0 0
proc                    /proc                   proc    defaults        0 0

同理,只要你对文件有写入、执行权限,那么就算你对目录没有读取权限,你可以修改、执行里面的文件,比如:

[root@VM-0-14-centos jack]# mkdir writeAndExecuteTest
[root@VM-0-14-centos jack]# ls -l writeAndExecuteTest/
total 0
[root@VM-0-14-centos jack]# ls -ld writeAndExecuteTest/
drwxr-xr-x 2 root root 4096 Jan 26 17:58 writeAndExecuteTest/
[root@VM-0-14-centos writeAndExcuteTest]# vim echoSomething.sh  #里面的内容是:echo "hi, you can execute this file"
[root@VM-0-14-centos writeAndExecuteTest]# chmod 777 echoSomething.sh
[root@VM-0-14-centos writeAndExecuteTest]# ls -l echoSomething.sh
-rwxrwxrwx 1 root root 37 Jan 26 18:00 echoSomething.sh
[root@VM-0-14-centos jack]# su jack
[jack@VM-0-14-centos ~]$ ./writeAndExecuteTest/echoSomething.sh
hi, you can execute this file

再来看看修改的:

[jack@VM-0-14-centos ~]$ echo 'echo "add something to you"' >> ./writeAndExecuteTest/echoSomething.sh
[jack@VM-0-14-centos ~]$ ./writeAndExecuteTest/echoSomething.sh
hi, you can execute this file
add something to you
[root@VM-0-14-centos writeAndExecuteTest]# chmod 700 echoSomething.sh 
[root@VM-0-14-centos writeAndExecuteTest]# ls -l
total 4
-rwx------ 1 root root 65 Jan 26 18:06 echoSomething.sh
[jack@VM-0-14-centos ~]$ ./writeAndExecuteTest/echoSomething.sh
bash: ./writeAndExecuteTest/echoSomething.sh: Permission denied

可见,只要对目录里面的文件有相应的权限,还是可以进行相关操作的,因此,在权限配置的时候要注意,如果你不想别人看到目录里面文件的内容,最好继承你所限制的目录的权限,以防把信息泄露出去了。

第二、写入权限和执行权限对于目录的意义

写入权限,实际上是:

  1. 在目录里面,可以创建、删除文件、子目录

  1. 对于文件、子目录可以修改名字、移动

如果没有这个权限,那么将无法进行以上操作:

[jack@VM-0-14-centos /]$ ls -ld root
dr-xr-x---. 5 root root 4096 Jan 26 18:00 root
[jack@VM-0-14-centos /]$ touch /root/aaa.txt
touch: cannot touch `/root/aaa.txt': Permission denied

执行权限对于目录的意义:

有了这个权限,你才可以把这个目录当做工作目录,最近简单的就是cd命令,如果没有这个权限,那么你就无法进入这个目录。

[jack@VM-0-14-centos /]$ ls -ld root
dr-xr-x---. 5 root root 4096 Jan 26 18:00 root
[jack@VM-0-14-centos /]$ cd root
bash: cd: root: Permission denied
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值