在线时间:8:00-16:00
迪恩网络APP
随时随地掌握行业动态
扫描二维码
关注迪恩网络微信公众号
linux系统是一个多用户多任务的分时操作系统,但系统并不能识别人,它通过账号来区别每个用户。每个linux系统在安装的过程中都要为root账号设置密码,这个root即为系统的第一个账号。每一个用这个账号登录系统的用户都是超级管理员,他们对此系统有绝对的控制权。通过向系统管理员进行申请,还可以为系统创建普通账号。每个用普通账号登录系统的用户,对系统都只有部分控制权。 我们知道计算机中的数据是以二进制0、1的形式存储在硬件之上的。在linux中,为了管理的方便,系统将这些数据组织成目录和文件,并以一个树形的结构呈现给用户。如下图所示:
其中处于顶端的/是根目录,linux下所有的文件均起始于根目录。另外很重要的一点,linux中不仅普通文档是文件,目录是文件,甚至设备、进程等等都被抽象成文件。这样做的目的是为了简化操作和方便管理。 于是,本文开始所说的控制权,即为用户对系统中文件的控制权。通常所说的某某文件的权限,是针对特定用户而言的。 下面我们来看具体命令: 1、pwd 打印当前目录 pwd [OPTION]... 例如: [root@centos7 ~]# pwd /root 2、cd 切换目录 cd [DIR] [root@centos7 ~]# cd / [root@centos7 /]# pwd / 这两个命令非常简单,简单到它们的选项都不常用,其中cd命令后面跟一个路径名。这个路径名可以是“绝对的”也可以是“相对的”。绝对的表示成以/为开头的路径名,如命令cd /usr/local/src中的路径名;相对的表示成相对于当前目录的路径名,若将linux中目录的包含与被包含关系比喻成父子关系的话,符号..代表的是父目录,符号.代表当前目录。 [root@centos7 src]# cd ../../.. [root@centos7 /]# pwd / 然后再切换回root的家目录: cd root和cd ./root [root@centos7 /]# cd ./root [root@centos7 ~]# pwd /root 另外如果cd后面任何参数都没有的时候,执行的效果是切换回家目录: [root@centos7 /]# cd [root@centos7 ~]# pwd /root 3、ls 列出目录内容 ls [OPTION]... [FILE]... [root@centos7 ~]# ls anaconda-ks.cfg install.log install.log.syslog 上面的例子显示了/root目录下的三个文件anaconda-ks.cfg、anaconda-ks.cfg、anaconda-ks.cfg。 [root@centos7 ~]# ls -l total 84 -rw------- 1 root root 1666 Jan 14 2016 anaconda-ks.cfg -rw-r--r-- 1 root root 55745 Jan 14 2016 install.log -rw-r--r-- 1 root root 5039 Jan 14 2016 install.log.syslog 显示结果的意思后述。 4、mkdir 创建目录 mkdir [OPTION]... DIRECTORY... [root@centos7 ~]# mkdir temp [root@centos7 ~]# ls anaconda-ks.cfg install.log install.log.syslog temp 选项-p可以递归地创建子目录,如进入temp并创建目录dir1和dir2,dir1的子目录test: [root@centos7 ~]# cd temp [root@centos7 temp]# mkdir -p dir1/test dir2 [root@centos7 temp]# ls dir1 dir2 [root@centos7 temp]# cd dir1 [root@centos7 dir1]# ls test 5、touch “创建文件” touch [OPTION]... FILE... [root@centos7 temp]# touch file1 dir1/file2 [root@centos7 temp]# ls dir1 dir2 file1 [root@centos7 temp]# cd dir1 [root@centos7 dir1]# ls file2 test 6、useradd 添加账号 useradd [options] name [root@centos7 dir1]# useradd learner [root@centos7 dir1]# cd /home/learner [root@centos7 learner]# ls [root@centos7 learner]# 终端上并没有打印出任何信息,试试ls的-a选项: [root@centos7 learner]# ls -a . .. .bash_logout .bash_profile .bashrc 选项-a作用是显示目录下所有文件,包括当前目录.和父目录..,linux中以.开头的文件是隐藏文件。在这里的三个隐藏文件是用户learner登录系统时所要用到的配置文件。 7、passwd 添加或更改账号口令 passwd [OPTION]... [NAME] [root@centos7 ~]# passwd learner Changing password for user learner. New UNIX password: xxxxxx #此处的xxxxxx并不在屏幕上显示 BAD PASSWORD: it is too simplistic/systematic #此处可能会给出密码太简单的警告 Retype new UNIX password: xxxxxx #重复输入,此处的xxxxxx不在屏幕上显示 passwd: all authentication tokens updated successfully. 当passwd命令后没有用户名直接执行时,它的作用是更改当前账号的口令。 8、cat 查看文件内容 cat [OPTION]... [FILE]... [root@centos7 ~]# cat /etc/passwd root:x:0:0:root:/root:/bin/bash bin:x:1:1:bin:/bin:/sbin/nologin daemon:x:2:2:daemon:/sbin:/sbin/nologin .... learner:x:1000:1000::/home/learner:/bin/bash 这里节选了部分输出,我们看到新创建的账号learner的信息在文件最后一行。文件中每一行都被:分割为7列,拿第一行举例说明每一列所表示的含义: 1) root表示账号名。 9、head tail more less 查看内容 [root@centos7 ~]# head -n 3 /etc/group root:x:0: bin:x:1: daemon:x:2: 显示文件/etc/group的前三行。 1) 组名 tail默认输出文件的倒数10行内容,也可以用选项-n指定行数: [root@centos7 temp]# tail -n 4 /etc/shadow postfix:!!:16814:::::: sshd:!!:16814:::::: tcpdump:!!:16994:::::: learner:$6$.U5pPYhu$h9TnYR9L4dbJY6b6VgnAQBG5qEg6s5fyJpxZVrAipHeeFhHAiHk6gjWa/xOfvWx.CzM2fvk685OEUc.ZdBYiC0:17095:0:99999:7::: 显示文件/etc/shadow的后4行。 1) 用户名 10、groupadd创建用户组 groupadd [OPTION] group [root@centos7 ~]# groupadd -g 1005 group1 [root@centos7 ~]# useradd -u 1002 -g 1000 -s /bin/sh tom [root@centos7 ~]# tail -n 1 /etc/passwd tom:x:1002:1000::/home/tom:/bin/sh [root@centos7 ~]# tail -n 1 /etc/group group1:x:1005: 这里useradd命令的选项-u、-g和-s分别指定新用户的uid、gid和登录shell。 11、chmod 改变文件权限 chmod [OPTION]... MODE[,MODE]... FILE... [root@centos7 temp]# ls -l 总用量 0 drwxr-xr-x 3 root root 29 10月 21 20:34 dir1 drwxr-xr-x 2 root root 6 10月 21 20:33 dir2 -rw-r--r-- 1 root root 0 10月 21 20:34 file1 这部分输出被分为7个部分: 1) -rw-r--r-- 10个字符中第一个字符-代表文件类型,linux中文件共有7种类型,分别表示如下: 如给文件file1的用户组增加执行权限: [root@centos7 temp]# chmod g+x file1 [root@centos7 temp]# ls -l file1 -rw-r-xr-- 1 root root 0 10月 21 20:34 file1 这里g+x表示给group增加执行x的权限。 [root@centos7 temp]# chmod o-r file1 [root@centos7 temp]# ls -l file1 -rw-r-x--- 1 root root 0 10月 21 20:34 file1 这里o-r表示给others减少读r权限。 [root@centos7 temp]# chmod a=rw file1 [root@centos7 temp]# ls -l file1 -rw-rw-rw- 1 root root 0 10月 21 20:34 file1 这里a=rw表示给所有人all设置成rw-权限。 [root@centos7 temp]# chmod 644 file1 [root@centos7 temp]# ls -l file1 -rw-r--r-- 1 root root 0 10月 21 20:34 file1 如给目录dir1和目录内的所有目录和文件权限都设置成777: [root@centos7 temp]# chmod 777 -R dir1 [root@centos7 temp]# ls -l 总用量 0 drwxrwxrwx 3 root root 29 10月 21 20:34 dir1 drwxr-xr-x 2 root root 6 10月 21 20:33 dir2 -rw-r--r-- 1 root root 0 10月 21 20:34 file1 选项-R作用是递归地改变目标权限。 [root@centos7 tmp]# ls -l / .... drwxrwxrwt. 7 root root 88 10月 22 21:14 tmp .... 我们看到权限最后一位是t,这里代表粘滞位(sticky),它的作用是给目录特殊的权限:使用户不能删除该目录下不属于此用户的文件。 [root@centos7 bin]# ls -l /bin/su -rwsr-xr-x. 1 root root 32072 11月 20 2015 /bin/su 所有者的权限rws,这里的s代表suid,如果在用户组位置的话代表sgid,作用是给文件特殊的权限:当用户执行此文件的时候,把他当成是文件的所有者来执行。 12、lsattr 列出隐藏权限 lsattr [option] [files...] [root@centos7 temp]# lsattr ---------------- ./dir1 ---------------- ./dir2 ---------------- ./file1 列出了文件的隐藏权限位,共有16位(由于隐藏权限是文件系统相关的,不同的文件系统对于文件的隐藏权限的设定不一定相同)。 13、chattr 给文件设置隐藏权限 chattr [+-=] [mode] files... [root@centos7 temp]# chattr +a file1 [root@centos7 temp]# lsattr file1 -----a---------- file1 这里的a权限表示:这个文件将只能添加数据,而不能删除也不能修改数据,只有root才能配置这个属性。 [root@centos7 temp]# chattr +i file2 [root@centos7 temp]# lsattr file2 ----i----------- file2 这里的i权限表示:使文件不能被修改、删除、改名、链接。只有root才能配置这个属性。 14、chown 改变文件的所有者和所属组 [root@centos7 temp]# chown learner file1 [root@centos7 temp]# ls -l file1 -rw-r--r-- 1 learner root 0 10月 21 20:34 file1 如递归地改变目录dir1和其下面的所有目录和文件,使它们的所有者和所属组均为learner: [root@centos7 temp]# chown -R learner:learner dir1 [root@centos7 temp]# ls -l 总用量 0 drwxrwxrwx 3 learner learner 29 10月 21 20:34 dir1 .... 这里的用户和用户组可以用对应的uid和gid代替,冒号:也可以换为点号.。 15、userdel和groupdel 用于删除用户和用户组。 16、id 打印用户ID信息 id [OPTION]... [USER] [root@centos7 ~]# id uid=0(root) gid=0(root) 组=0(root) 17、whoami,who,w 显示登录用户信息 [root@centos7 ~]# whoami root 命令who打印当前登录用户信息: [root@centos7 ~]# who root tty1 2016-09-30 15:18 root pts/0 2016-10-23 17:12 (192.168.78.140) learner pts/1 2016-10-23 17:49 (192.168.78.140) root pts/2 2016-10-23 17:50 (192.168.78.140) 显示信息中第一列为用户名,第二列为登录终端,第三列为登录时间,最后为登录ip地址。 命令w显示信息与命令who类似,增加了一些系统信息: [root@centos7 ~]# w 17:56:59 up 23 days, 2:39, 4 users, load average: 0.00, 0.01, 0.05 USER TTY FROM LOGIN@ IDLE JCPU PCPU WHAT root tty1 309月16 23days 0.01s 0.01s -bash root pts/0 192.168.78.140 17:12 7:31 0.01s 0.00s bash learner pts/1 192.168.78.140 17:49 7:29 0.00s 0.00s -bash root pts/2 192.168.78.140 17:50 3.00s 0.00s 0.00s w 输出的第一行显示了系统运行时间,当前有多少用户登录,cpu的平均负载(以后文章中会有详述)。余下的信息增加了空闲时间,cpu的使用时间以及运行的命令。 18、su 执行用户命令 su [options...] [-] [user [args...]] [root@centos7 ~]# su learner -c pwd /root 例子中使用账号learner执行了命令pwd。当不使用选项-c时则为切换用户: [root@centos7 ~]# whoami root [root@centos7 ~]# su learner [learner@centos7 root]$ whoami learner 注意如果是从普通账号切换至root或其他账号时,需要输入对应密码。 [root@centos7 ~]# pwd /root [root@centos7 ~]# su - learner 上一次登录:日 10月 23 18:22:23 CST 2016pts/5 上 [learner@centos7 ~]$ pwd /home/learner [learner@centos7 ~]$ exit 登出 [root@centos7 ~]# whoami root 19、sudo 作为另一个用户来执行命令 sudo [OPTION]... command [learner@centos7 ~]$ sudo -l We trust you have received the usual lecture from the local System Administrator. It usually boils down to these three things: #1) Respect the privacy of others. #2) Think before you type. #3) With great power comes great responsibility. [sudo] password for learner: 对不起,用户 learner 不能在 centos7 上运行 sudo。 这里看到learner用户并不能使用sudo。若要设置用户使用sudo,需要编辑sudo的配置文件/etc/sudoers。该文件中以符号#开头的都是注释行,用来解释或描述配置,并不起实际作用。 user MACHINE=COMMANDS learner ALL=(ALL) ALL [learner@centos7 ~]$ sudo -l tom machine=/usr/sbin/shutdown -h now 20、mv 移动文件或目录 mv [OPTION]... SOURCE... DIRECTORY [root@centos7 temp]# ls dir1 dir2 file1 file2 [root@centos7 temp]# mv file2 /root/temp/dir2/ [root@centos7 temp]# ls dir1 dir2 file1 [root@centos7 temp]# ls dir2/ file2 命令mv还可以对文件进行改名,如将目录dir2移动到dir1内并改名为dir3: [root@centos7 temp]# ls dir1 dir2 file1 [root@centos7 temp]# mv dir2 ./dir1/dir3 [root@centos7 temp]# ls dir1 file1 [root@centos7 temp]# ls dir1/ dir3 file2 test 21、cp 复制文件或目录 [root@centos7 temp]# ls dir1 file1 [root@centos7 temp]# cp file1 file3 [root@centos7 temp]# ls dir1 file1 file3 复制目录dir1内目录dir3及其包含内容到当前目录下,起名为dir2: [root@centos7 temp]# cp -r dir1/dir3/ ./dir2 [root@centos7 temp]# ls dir1 dir2 file1 file3 复制目录的时候需要使用选项-r,当目标已存在时,会需要用户确认是否覆盖,输入y或yes表示确认覆盖,输入n或no表示取消覆盖: [root@centos7 temp]# cp file1 file3 cp:是否覆盖"file3"? y [root@centos7 temp]# cp file1 file3 cp:是否覆盖"file3"? no 可以使用选项-f(force)来强制复制,不需要确认。 [root@centos7 temp]# cp -rf dir1/test ./dir2/ 22、rm 删除文件 rm [OPTION]... FILE... [root@centos7 temp]# ls dir1 dir2 file1 file3 [root@centos7 temp]# rm -rf dir2/ [root@centos7 temp]# ls dir1 file1 file3 23、whereis 查找系统命令 whereis [options] name... [root@centos7 test]# whereis ls ls: /usr/bin/ls /usr/share/man/man1/ls.1.gz 24、du 估算文件占用空间大小 u [OPTION]... [FILE]... [root@centos7 temp]# du file1 4 file1 输出的结果第一列表示所占空间大小(单位是KB)。第二列是是文件名。 [root@centos7 temp]# du -h file1 4.0K file1 当使用-s选项作用在目录上时,只显示总用量。不用时则显示该目录下的每个文件: [root@centos7 temp]# du dir1 0 dir1/test 0 dir1/dir3 0 dir1 [root@centos7 temp]# du -sh dir1 0 dir1 linux秉承“一切皆文件”的思想,在这样的思想作用之下,linux内的所有操作都可以说是文件相关的。这里列出的命令都是最为基础的文件相关命令,每一个使用者都需要牢记。当然这里并不能将它们的所有用法一一列举,如想了解更多,一定要记得man! 以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持极客世界。 |
请发表评论