文章目录[隐藏]
主要是给刚接触Linux甚至不知道命令行的人写的,所以会非——常啰嗦。建议有一点基础的(cmd也可)直接去找自己想看的部分。
本文将包括文件管理、权限设定、下载等常用操作。不是所有的命令都有回显(即返回结果),所以应该有“没有报错就是执行成功”的思想。
文章写作(弃坑)时间跨度达10个月,文风可能会变。
1.文件管理
1.1 cd(Change Directory)和ls(List)
这是两个最基础的命令,等同于Windows命令行解释程序(cmd)中的cd和dir。最大的不同之处在于Linux对大小写敏感,比如在Windows中敲cd和CD是同一个效果,Linux就只认cd,键入CD就会报not found。
用法是:cd(ls) 目标目录
如进入 /var/www目录并列出内容,就是:
cd ~/var/www ls
其中”~”符号代表根目录。
甚至可以使用”;”把两个合并成一行,但是并不能提高效率就是了。
cd ~/var/www; ls
如果只需要查看/var/www内的文件时,就不一定要在这个目录内使用ls,而可以用ls ~/var/www
来实现。
直接键入cd就是回到根目录,而直接键入ls则是列出当前目录内容。
ls可以用来查看某一文件/文件夹的权限,这个我打算放到权限里面说。
1.2 新建文件(文件夹)
在Linux中新建文件的命令是touch(我也不知道为什么叫这个)。用法也跟cd/ls类似,就是touch 文件名
。 比如新建一个文件叫test,就是直接touch test
。这是一个文本文档,等同于Windows的记事本文件。Linux中没有后缀也不大要紧,文件格式对就可以了(当然是限于文本文件来说)。
新建文件夹用的是和Windows相同的mkdir。在/home文件夹中新建一个user文件夹就是mkdir /home/user
。但是如果上一级文件夹/home不存在的话(这里是不可能出现这种情况的)就会报错,所以一次只能新建一级文件路径。
1.3 移动、复制、重命名、删除文件/文件夹
和Windows一致,Linux下重命名和移动指令都是mv(move),复制是cp(copy),删除是rm(remove)。其中mv和cp的使用方法都是mv(cp) 旧文件(夹)名 新文件(夹)名
。rm则是rm 文件名
。不过删除文件夹时还需要加上-r(recursive),即rm -r 文件夹名
。
1.4 查看/编辑文本文件
如果需要把文本文件的内容在屏幕上“打印”出来的话,Windows上使用的是type命令,而Linux使用的是cat 文件名
。比如说常用的查看CPU数据的cat /proc/cpuinfo
其实就是把/proc/cpuinfo中的内容显示出来。
而编辑文档需要用到工具,主流的有vim和nano。我个人喜好是nano。
要打开比如第一个介绍里的test文件(假设就在当前目录下),输入vi(nano) test
。对于nano来说就可以直接编辑了,跟Word使用差不多(就是没有鼠标),下方也有退出(Ctrl+X)之类的命令供参考。其中[M-B]中的M是键盘上的ALT。vi恕我根本不会用,不敢乱说话= =
1.5 下载
我们可以直接用wget
+网址来进行下载。比如我要自行编译Linux Kernel的话,就需要去kernel.org下载最新内核。
wget https://cdn.kernel.org/pub/linux/kernel/v4.x/linux-4.13.10.tar.xz
这个命令下载来自https://cdn.kernel.org/pub/linux/kernel/v4.x/linux-4.13.10.tar.xz的文件。
Wget还有一个非常黑的功能:抓取网站。同样的用法,不过不建议用,会给对方服务器造成比较大的负荷。
2.权限管理
Linux对于“权限”的概念还是很重视的,脚本需要运行权限才能运行,Apache提供网页要权限(权限不够就是403),用户进行某些操作(比如安装程序、编辑甚至查看不属于自己的文件)也要权限。然而新手最烦的也是权限,经常为了方便直接设置成777(我会说明的)。这种情况下一旦被黑就很那啥了。
2.1 查看文件(夹)权限
第一段里面我有讲ls还可以查看权限,其实就是用ls -l
把文件(夹)的属性全部列出来。我在/home/temp里新建了一个叫temp(临时)的文件,用ls -l查看就是这样子的:
ls -l temp -rw-r--r-- 1 temp temp 0 Feb 21 15:54 temp
其中的1和0各位不必要知道,我们这里关心的是前一串的-rw-r–r–。最前面的一个”-“表示这是一个普通文件(如果是d则表示文件夹),r表示可读(read),w表示可写(write),还有一个x表示可执行(execute)。这一串字符的意思就是:普通文件,用户temp有读写权限(rw)但不能执行它(-),用户组temp中的用户和其他用户只能读取该文件的内容但不能写入也不能执行(r–)。
2.2 修改文件权限
假设我懒到程序更新命令aptitude update && aptitude upgrade
都懒得输入,于是写了个脚本(假设叫做update.sh)自动执行,但是这个脚本只有rw-r–r–的权限。这时候就可以使用chmod
把文件权限修改成可执行。
这里要讲一下Linux权限的421,即r=4,w=2,x=1。上面说的777,就是(4+2+1)(4+2+1)(4+2+1),所有人都可读、可写、可执行,哪怕不怀好意的人只能接触到这一个文件,也可以通过它获取完全的操作权限,因此像777和666还是不要乱设的好,一般644或者755足够了。
上面说的要使脚本可执行,就是
chmod 744 update.sh
或者只要
chmod +x update.sh
+x应该很好理解,就是添加执行权限。这个命令让所有用户都有执行权限,即rwxr-xr-x。类似的,-x就是减去执行权限。
如果实在不想计算421的话,可以用chmod u+x
来只给用户(user)添加可执行权限。u还可以改成用户组g(group)或其他用户o(other),+也可以改成-,x也可以改成r或w。例:chmod u-x update.sh
。
2.3 修改文件归属者(owner)
owner字面意思就是主人,这样翻应该也没错(摊手
这种情况常见于建站时。因为使用root用户在/var/www中新建文件时的owner是root:root(用户root,用户组root),Apache则是www-data:www-data,于是就出现了Apache没有足够权限的错误(error 403:permission denied)。
这时候会用chown
(change owner)来把owner改成www- data:www-data来解决,就是:
chown www-data:www-data /var/www -R
其中-R也是recursive的意思,就是把整个文件夹内的文件全部改为www-data用户www-data用户组,但是用户组不是必需的。换句话说,chown www-data /var/www -R 从格式上也能行。不过这个命令一般刚开始用一下以后就用不上了。
2.4 给某个用户root权限(和创建用户)
因为一直用root账户进行操作不是很安全(有人手滑把系统删掉过),所以一般我们会使用useradd
添加一个普通用户。我们假设这个用户名是temp,那么这条命令异常简单,就是useradd temp
。
然而在使用sudo时,会返回一个”temp is not in the sudoers file”,不能授予root权限。
这不是bug啦,其实还是出于安全考虑:要新建一个用户是非常简单的,假如任意新用户都能使用sudo
,那整个系统也谈不上安全了。
因此我们在root权限下执行visudo
。这个命令会让我们编辑一个路径为/etc/sudoers.tmp的文件。找到
root ALL=(ALL:ALL) ALL
在下面加上
用户名 ALL=(ALL:ALL) ALL
然后保存。这样就能允许新用户使用sudo.
2.5 禁止root账户登录
root作为最高权限账户,是针对服务器的攻击中一旦被盗取后果最严重的弱点(之一)。因此一般会在配置好普通账户之后会选择禁止root账户登录。
找到/etc/ssh/sshd_config
,并将其中的PermitRootLogin yes
改为PermitRootLogin no
。之后使用service sshd restart
重启服务。
(待更)
“~” 应该是用户的主目录, “/” 才是 root 根目录。
/etc/sudoers 没有.tmp吧。记得是这样。
权限那儿学习了。
@好奇的 01 确实目录那里是我脑抽了,sudoers.tmp是visudo命令新建的文档,保存完后即销毁。