文件的权限与格式
权限
Windows一般以文件名字的后缀来区分文件的类型,例如ABC.txt表示这是一个文本文件,ABC.exe表示这是一个可执行文件,是一个程序,但Linux并不是这样,Linux以权限来区分文件。Linux的文件有三种权限:读、写、执行。
如果一个脚本上传到Linux里面,虽然它是一个脚本,是一个程序,但默认状态下,它无法被执行,而需要用户赋予它可执行权限之后,它才有资格被运行。赋予可执行权限的命令:chmod 700 文件名
解释如下:
chmod:是修改权限的命令
700:三个数字,第一个数字是针对自己的,第二个数字是针对和自己在同一个用户组的其它用户的,第三个数字是针对其它用户。“读”权限的数字是4,“执行”权限数字是1,“写”权限是2。因此7代表可读、可写、可执行。0代表无任何权限,因此700表示我自己可读可写可执行,其它任何用户(除root外),对此文件不可读不可写不可执行。如果一个程序被root安装在诸如/opt、/local/user/这样的路径,默认状况下,其它用户对这些路径下的文件、文件夹没有写、执行的权限,因此并不能运行安装的软件。因此root用户需要对整个软件文件夹赋予755的权限。这样普通用户对软件具有读、执行的权限,但不能做任何修改。
文件名:如果文件就在当前目录,那么直接输入文件名就可以了,如果不在,那么可以输入路径和文件名,例如chmod 700 /home/Fermi/test/*run。其中*是Linux中的通配符,该命令表示,/home/Fermi/test/下所有文件名字以run结尾的文件,对“自己”赋予读写执行权限,对其它用户无任何权限。因此用户在Windows生成的*.run脚本文件,在Linux下要运行的话,首先要chmod 700 *run将其赋予可执行权限
格式
Windows的文件格式和Linux文件格式,有一定的几率不兼容,这个时候,Windows上传的*.run文件在Linux中,用vi命令查看的时候,会看见每行的尾巴上有^M这样的符号。参考:vi的用法
解决办法:
执行命令:dos2unix 文件名。但有的系统没有dos2unix命令。
直接在Windows拷贝脚本文件的文字,在Linux中用vi创建文件,将文字粘贴进去。参考:
vi的用法
如果是使用SSH Secure Shell,则可以在Edit-Setting-File Transfer中ASCII extension中将某个不常用的后缀,例如html改为run即可一劳永逸的解决这个问题。