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 命令查看文件权限:
ls -l filename.txt
[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 的语法是这样的:
chmod [-R] xyz 文件或目录
选项与参数:
- xyz : 就是刚刚提到的数字类型的权限属性,为 rwx 属性数值的相加。
- -R : 进行递归(recursive)的持续变更,以及连同次目录下的所有文件都会变更
scp 上传下载文件目录
从服务器下载文件
sudo scp username@servername:/path/filename /var/www/local_dir(本地地址)
从服务器下载整个目录
加上 -r
(directory 目录)
sudo scp -r username@servername:/path/remote_dir(远程目录) /var/www/local_dir(本地地址)
上传本地文件至服务器
sudo scp /path/filename username@servername:/path/
上传目录到服务器
sudo -r local/dir username@servername:remote_dir