问题
普通用户下在终端里输入mv ~/dir1 /home/dir2
,将dir2文件夹移动到dir2路径下。错误如下:
mv: cannot move 'dir1' to 'dir2': Permission denied
分析
为什么会权限不足呢?
输入ls -l
查看权限:
root@DESKTOP $ ls -l
total 10
-rwxr-xr-x 1 root root 126 Dec 2 16:21 config
drwxr-xr-x 2 root root 4096 Dec 2 16:21 data
drwxr-xr-x 5 root root 4096 Dec 2 16:21 dir1
linux文件权限
这里温习一下linux文件权限相关知识。
查看权限
ls -l
查看某一个目录会得到一个7字段的列表。第一个字段是文件属性字段(eg: drwxr-xr-x
),文件属性字段总共10个字母:
-
第一个字符代表文件类型:
-
:普通文件d
:目录dirtectory的缩写(目录或者是特殊文件,这个特殊文件存放其他文件或目录的相关信息)l
:链接文件。link(链接)的缩写,类似于windows下的快捷方式。b
:块设备文件(block),一般置于/dev
目录下,设备文件是普通文件和程序访问硬件设备的入口,是很特殊的文件。没有文件大小,只有一个主设备号和一个辅设备号。一次传输数据为一整块的被称为块设备,如硬盘、光盘等。最小数据传输单位为一个数据块(通常一个数据块的大小为512字节)。c
:字符设备文件(character),一般置于/dev
目录下,一次传输一个字节的设备被称为字符设备,如键盘、字符终端等,传输数据的最小单位为一个字节。p
:命令管道文件。与shell编程有关的文件。s
:sock文件。与shell编程有关的文件。
-
后面9个字母代表文件或目录权限位
-
三种权限
r
表是读 (Read) 、w
表示写 (Write) 、x
表示执行 (execute) 。
其中,前3字母表示拥有者(owner,缩写u)权限,中间3字母表示所属组(group,缩写g)的其他用户权限,末3位表示除同组外其他用户(others,缩写o)权限。每3位是一个二进制数,即权重依次为4 2 1,因此:
111表示数7,即用户拥有rwx
权限
110表示数6,即用户拥有rw
权限
101表示数5,即用户拥有rx
权限注意: 一般只对目录加执行权限x,文件不加执行权限(因文件具备执行权限有安全隐患),并且root账户不受文件权限的读写限制,执行权限受限制。
-
对于文件和目录来说,r,w,x有着不同的作用和含义:
针对文件:
r:读取文件内容 w:修改文件内容 x:执行权限对除二进制程序以外的文件没什么意义
针对目录:目录本质可看做是存放文件列表、节点号等内容的文件
r:查看目录下的文件列表 w:删除和创建目录下的文件 x:可以cd进入目录,能查看目录中文件的详细属性,能访问目录下文件内容(基础权限)
-
权限顺序
用户获取文件权限的顺序: 先看是否为所有者,如果是,则后面权限不看;再看是否为所属组,如果是,则后面权限不看。
-
修改权限
-
chmod 修改权限 change mode
方法1:mode法
格式:
chmod who opt per file
who:u g o a(all) opt:+ – = per:r w x X
方法2:数字法
格式:
chmod XXX file
rwx rw- r– 111 110 100 7 6 4 r:4 w:2 x:1
例:
chmod 764 file
给file文件添加rwxrw-r–
权限
chmod -R +X dir
给dir目录添加X执行权限,dir目录下文件不添加执行权限
(如果dir目录下有文件已具备执行权限,则添加该文件执行权限)
取消权限
除了可以使用chmod命令来间接实现取消权限外,还可以使用umask值。
对目录: umask+default=777(dir)
对文件:666-umask:观察结果,如果有奇数,奇数位+1,偶数不变
linux文件权限更多内容可以参考Linux文件权限详解
解决办法
-
对文件夹授权
~ $ sudo chmod -R 777 dir1
-R 是指级联应用到目录里的所有子目录和文件,777 是所有用户都拥有最高权限
-
切换root账户
上述方法治标不治本,其实我们需要以root的身份进入系统,才能畅通无阻,那么怎么样才能以root身份进入系统呢?
Ubuntu安装好后,root初始密码(默认密码)不知道,需要设置。
1、先用安装Ubuntu的时候创建的用户登录到系统;
2、然后输入命令:sudo passwd
回车;
3、接下来会提示您:输入新密码,重复输入密码,最后提示您passwd:password updated sucessfully
此时已完成root密码的设置。
4、接着就可以输入命令:su root
;
即以root的身份登录到系统里面去了,此时你再拷贝文件,就可以了。以上就是Ubuntu复制文件时出现Permission denied错误提示的解决方法了,只要按照上面的步骤设置root密码后以root身份登录,就可以正常复制文件了。