Linux移动文件提示权限被拒绝

问题

普通用户下在终端里输入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个字母代表文件或目录权限位

    1. 三种权限

      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账户不受文件权限的读写限制,执行权限受限制。

    2. 对于文件和目录来说,r,w,x有着不同的作用和含义:

      针对文件:

      r:读取文件内容
      w:修改文件内容
      x:执行权限对除二进制程序以外的文件没什么意义
      

      针对目录:目录本质可看做是存放文件列表、节点号等内容的文件

      r:查看目录下的文件列表
      w:删除和创建目录下的文件
      x:可以cd进入目录,能查看目录中文件的详细属性,能访问目录下文件内容(基础权限)
      
    3. 权限顺序
      用户获取文件权限的顺序: 先看是否为所有者,如果是,则后面权限不看;再看是否为所属组,如果是,则后面权限不看。

修改权限

  • 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文件权限详解

解决办法

  1. 对文件夹授权

    ~ $ sudo chmod -R 777 dir1
    

    -R 是指级联应用到目录里的所有子目录和文件,777 是所有用户都拥有最高权限

  2. 切换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身份登录,就可以正常复制文件了。

  • 8
    点赞
  • 28
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值