Skip to content

Linux 文件目录及权限

笔者只记录一些常见的 Linux 操作,肯定不全,如果要查找命令,可以去 Linux 命令大全(手册)处查看相关命令

文件目录基本操作

ls:列出目录文件

  • ll / ls –l :显示文件的属性以及文件所属的用户和组
  • -a:查看隐藏文件

cat:查看文件

cd:切换目录

cp:复制文件与文件夹

  • -r:复制目录,包括所有文件和子目录
  • scp:复制文件或目录,从本机到远程系统。或者远程系统到本机

mv:移动文件

  • mv file1 file2:重命名文件·
  • mv *.pdf ~/Documents:将所有pdf 移动到 Documents 文件下

rm:删除文件目录

  • -r:删除整个目录

pwd:查看当前目录

mkdir:创建目录

touch:创建文件

文件权限

Linux 系统是一个典型的多用户系统,不同的用户处于不同的地位,拥有不同的权限。

为了保护系统的安全性,Linux 系统对不同的用户访问同一文件(包括目录文件)的权限做了不同的规定

在 Linux 中,每个文件都与一个所有者和一个组相关联,并为三类不同的用户分配访问权限:

  • 文件所有者
  • 组成员
  • 其他人

每个文件都有三种权限类型:

  • 读取权限
  • 写权限
  • 执行权限

此概念运行您指定运行哪些用户读取文件、写入文件或者执行文件。你可以使用 ls 命令查看文件权限:

shell
ls -l filename.txt
shell
[root@www /]# ls -l
total 64
dr-xr-xr-x   2 root root 4096 Dec 14  2012 bin
dr-xr-xr-x   4 root root 4096 Apr 19  2012 boot
……

bin 文件的第一个属性用 d 表示,d 在 Linux 中代表该文件是一个目录文件

在 Linux 中第一个字符表示这个文件是目录、文件或链接文件等等

  • d:目录
  • -:文件
  • l:链接文档
  • b:接口设备
  • c:端口设备,如鼠标、键盘

接下来的字符中,以三个为一组,且均为 rwx 的三个参数的组合。其中, r 代表可读(read)、 w 代表可写(write)、 x 代表可执行(execute)。 要注意的是,这三个权限的位置不会改变,如果没有权限,就会出现减号 - 而已。

从左至右用 0-9 这些数字来表示。

0 位确定文件类型,第 1-3 位确定属主(该文件的所有者)拥有该文件的权限。

4-6 位确定属组(所有者的同组用户)拥有该文件的权限,第 7-9 位确定其他用户拥有该文件的权限。

其中,第 1、4、7 位表示读权限,如果用 r 字符表示,则有读权限,如果用 - 字符表示,则没有读权限;

2、5、8 位表示写权限,如果用 w 字符表示,则有写权限,如果用 - 字符表示没有写权限;第 3、6、9 位表示可执行权限,如果用 x 字符表示,则有执行权限,如果用 - 字符表示,则没有执行权限。

更改文件属性

在 Linux 中,我么通常使用以下四个命令来修改文件或目录的所属用户与权限:

  • chown(change owner):修改所属用户与组
  • chmod(change mode):修改用户的权限
  • chgrp 修改文件和目录的所属组
  • touch 修改文件的时间戳

Linux 文件的基本权限就有九个,分别是 owner/group/others(拥有者/组/其他) 三种身份各有自己的 read/write/execute 权限。

先复习一下刚刚上面提到的数据:文件的权限字符为: -rwxrwxrwx , 这九个权限是三个三个一组的!其中,我们可以使用数字来代表各个权限,各权限的分数对照表如下:

  • r:4
  • w:2
  • x:1

每种身份(owner/group/others)各自的三个权限(r/w/x)分数是需要累加的,例如当权限为: -rwxrwx--- 分数则是:

  • owner = rwx = 4+2+1 = 7
  • group = rwx = 4+2+1 = 7
  • others= --- = 0+0+0 = 0

所以等一下我们设定权限的变更时,该文件的权限数字就是 770。变更权限的指令 chmod 的语法是这样的:

bash
chmod [-R] xyz 文件或目录

选项与参数:

  • xyz : 就是刚刚提到的数字类型的权限属性,为 rwx 属性数值的相加。
  • -R : 进行递归(recursive)的持续变更,以及连同次目录下的所有文件都会变更

scp 上传下载文件目录

从服务器下载文件

shell
sudo scp username@servername:/path/filename /var/www/local_dir(本地地址)

从服务器下载整个目录

加上 -r(directory 目录)

shell
sudo scp -r username@servername:/path/remote_dir(远程目录) /var/www/local_dir(本地地址)

上传本地文件至服务器

shell
sudo scp /path/filename username@servername:/path/

上传目录到服务器

shell
sudo -r local/dir username@servername:remote_dir

参考资料