chown命令
chown命令是用来更改一个文件或目录的所有者和所属组的命令。该命令有一个跟chmod用法一样的参数 —R 级联更改所有者和所属组。意思就是使用—R命令会将要更改所属组的目录及该目录下所有文件和目录都执行chown。
其用法如下
chown -R username:groupname filename(dir)
[root@localhost tmp]# ls -la chown/
total 0
drwxr-xr-x. 2 root root 18 Jan 30 03:09 .
drwxrwxrwt. 9 root root 261 Jan 30 03:09 ..
-rw-r--r--. 1 root root 0 Jan 30 03:09 test
[root@localhost tmp]# chown -R user1:user1 chown/
[root@localhost tmp]# ls -la chown/
total 0
drwxr-xr-x. 2 user1 user1 18 Jan 30 03:09 .
drwxrwxrwt. 9 root root 261 Jan 30 03:09 ..
-rw-r--r--. 1 user1 user1 0 Jan 30 03:09 test
可以看到上面的执行结果,不但/tmp/chown/目录的属主属组变为了user1,而且该目录下的test文件的属主属组也变为了user1。下面我们不加—R的参数再验证一下。
[root@localhost tmp]# chown root:root chown/
[root@localhost tmp]# ls -la chown/
total 0
drwxr-xr-x. 2 root root 18 Jan 30 03:09 .
drwxrwxrwt. 9 root root 261 Jan 30 03:09 ..
-rw-r--r--. 1 user1 user1 0 Jan 30 03:09 test
这个结果可以明显看到,不加-R 的参数,chown目录属主属组变为了root,但是chown/test文件的属主属组依然是user1。
- chown user:user filename =chown user,user filename 。中间的符号用:和,是一样的。
useradd 命令
useradd命令是用来添加用户的。 useradd username 这个命令创建用户的时候会一并创建一个相同名字的用户组。
[root@localhost ~]# useradd zhaoyun
[root@localhost ~]# tail -2 /etc/passwd
user1:x:1000:1000::/home/user1:/bin/bash
zhaoyun:x:1001:1001::/home/zhaoyun:/bin/bash
如上面命令所示,useradd zhaoyun 就给系统添加了一个zhaoyun的账户,查看是否添加成功,可以使用 tail-2 /etc/passwd 命令来查看最后一行是否有了zhaoyun这一记录,有了就表示创建成功了。
groupadd命令
groupadd命令是用来添加组的命令的,用法跟useradd一样。
tail 命令
tail命令是用来查看一个文件最后几行的命令,不加参数默认是查看最后十行,可以通过tail -2 filename 用来查看文件最后两行的内容。
id 命令
id命令可以用来查看一个用户属于哪个组,通过该命令的执行结果我们可以看到一个用户不但有一个主组,还有一个附属组。
[root@localhost ~]# id zhaoyun
uid=1001(zhaoyun) gid=1001(zhaoyun) groups=1001(zhaoyun)
history和!
history命令是用来查看命令历史的命令,!XX的用法是可以运行XX开头的最近的一次命令。
[root@localhost ~]# history
79 ls -la chown/
80 cd
81 useradd zhaoyun
82 tail /etc/passwd
83 tail -2 /etc/passwd
84 id zhaoyun
85 di /tmp/chown/test
86 id /tmp/chown/test
87 history
[root@localhost ~]# !ls
ls -la chown/
ls: cannot access chown/: No such file or directory
软链接和硬链接
硬链接
硬链接文件与源文件是同一个iNode号的,所以硬链接文件既不能跨磁盘也不能跨分区。给一个文件做硬链接可以有防误删除的功能,但是因为硬链接文件和源文件里的内容是同时变更的,没有错误恢复的作用。
- 方法是ln 源文件 链接文件
[root@localhost chown]# ln test test2
[root@localhost chown]# ls
test test2
硬链接类似于一个教室的两个门,不管学生、课桌、工具通过哪个门进或出,透过两个门看教室的内容是一致的。
软链接
软链接相当于windows里面的快捷方式,它的命令格式:ln -s 源文件 快捷方式 。做链接跟其他命令不太一样的是源文件放在前面。软链接既可以作用在目录上,亦可以作用在文件上,还可以跨磁盘跨分区做软链接。
软链接的应用
当我们有一个文件特别比较大,还源源不断的写入数据,而且该文件所在的分区要容量不足时我们可以做一个软链接,将文件实际写入的位置转移到另一个分区下。
- 比如在/123分区下有一个文件aaa,/123分区马上写满了,我们可以将使用命令mv /123/aaa /abc/aaa 将文件移动到/abc分区下,然后使用命令ln -s /abc/aaa /123/aaa 这样原先aaa文件被移动到/abc下,后面写入的数据也是写到了/abc/aaa中。
yum工具
yum工具是一个能自动解决依赖关系的工具
- yum list 列出可用安装包 (三列显示,包名、版本平台、仓库)
- yum search vim 搜索与vim有关的包,不精确搜索,会把所有带vim字符的包全列出来
- yum list | grep 'vim` 列出包名中含有vim字符的包
- yum install 包名 安装
- yum grouplist 列出可用的分组
- yum grouplist install 安装可用的分组
- yum remove包名 卸载,会直接把依赖关系的包一起卸载
- yum update包名 升级,如果不加包名,则会把所有的软件包、系统、内核都升级到最新版本(比较危险)
- yum provides "/*/vim"搜索一个已知的命令是由哪个包安装的
- 下面是安装net-tools包的命令,-y是yes的意思,不用安装每个包前提示。
[root@localhost ~]# yum install -y net-tool
- yum remove 包名是卸载某个安装包的命令。
[root@localhost ~]# yum remove net-tools
- yum list 命令是用来查看所有安装包的命令,最右侧是仓库的名字,如果是@开头的表示这个包已经安装过了。中间是安装包的版本信息。
[root@localhost ~]# yum list |grep yum
yum.noarch 3.4.3-161.el7.centos @anaconda
yum-metadata-parser.x86_64 1.1.4-10.el7 @anaconda
yum-plugin-fastestmirror.noarch 1.1.31-50.el7 @anaconda
PackageKit-yum.x86_64 1.1.10-1.el7.centos base
PackageKit-yum-plugin.x86_64 1.1.10-1.el7.centos base
kabi-yum-plugins.noarch 1.0-3.el7.centos base
nextgen-yum4.noarch 2.7.5-19.el7_6 extras
yum-NetworkManager-dispatcher.noarch 1.1.31-50.el7 base
yum-cron.noarch 3.4.3-161.el7.centos base
yum-langpacks.noarch 0.4.2-7.el7 base
yum-plugin-aliases.noarch 1.1.31-50.el7 base
yum-plugin-auto-update-debug-info.noarch 1.1.31-50.el7 base
- yum grouplist列出可用的分组
[root@localhost ~]# yum grouplist
Loaded plugins: fastestmirror
There is no installed groups file.
Maybe run: yum groups mark convert (see man yum)
Loading mirror speeds from cached hostfile
* base: mirror.jdcloud.com
* extras: mirror.jdcloud.com
* updates: mirror.jdcloud.com
Available Environment Groups:
Minimal Install
Compute Node
Infrastructure Server
File and Print Server
Basic Web Server
Virtualization Host
Server with GUI
GNOME Desktop
KDE Plasma Workspaces
Development and Creative Workstation
Available Groups:
Compatibility Libraries
Console Internet Tools
Development Tools
Graphical Administration Tools
Legacy UNIX Compatibility
Scientific Support
Security Tools
Smart Card Support
System Administration Tools
System Management
Done
5.yum list | grep wget列出包名中含有wget字符的包
[root@localhost ~]# yum list |grep wget
wget.x86_64 1.14-18.el7 base
6 yum provides /*/ifcofnig 搜索一个已知的命令是由哪个包安装的
[root@localhost ~]# yum provides /*/ifconfig
Loaded plugins: fastestmirror
Loading mirror speeds from cached hostfile
* base: mirror.jdcloud.com
* extras: mirror.jdcloud.com
* updates: mirror.jdcloud.com
net-tools-2.0-0.24.20131004git.el7.x86_64 : Basic networking tools
Repo : base
Matched from:
Filename : /sbin/ifconfig
net-tools-2.0-0.24.20131004git.el7.x86_64 : Basic networking tools
Repo : @base
Matched from:
Filename : /sbin/ifconfig
rpm工具
通过一个实验来看rpm工具的用法。
- 虚拟机连接光驱,指定安装时的镜像盘
- mount命令挂载光盘,ls看一下光盘下的目录和文件 packages 就是软件包目录
- 使用ls | less 分屏显示一下packages可以看到软件包的列表
[root@localhost Packages]# ls
acl-2.2.51-14.el7.x86_64.rpm libndp-1.2-7.el7.x86_64.rpm
aic94xx-firmware-30-6.el7.noarch.rpm libnetfilter_conntrack-1.0.6-1.el7_3.x86_64.rpm
aide-0.15.1-13.el7.x86_64.rpm libnfnetlink-1.0.1-4.el7.x86_64.rpm
alsa-firmware-1.0.28-2.el7.noarch.rpm libnl-1.1.4-3.el7.x86_64.rpm
alsa-lib-1.1.6-2.el7.x86_64.rpm libnl3-3.2.28-4.el7.x86_64.rpm
alsa-tools-firmware-1.1.0-1.el7.x86_64.rpm libnl3-cli-3.2.28-4.el7.x86_64.rpm
atk-2.28.1-1.el7.x86_64.rpm libnotify-0.7.7-1.el7.x86_64.rpm
audit-2.8.4-4.el7.x86_64.rpm libpcap-1.5.3-11.el7.x86_64.rpm
audit-libs-2.8.4-4.el7.x86_64.rpm libpciaccess-0.14-1.el7.x86_64.rpm
authconfig-6.2.8-30.el7.x86_64.rpm libpipeline-1.2.3-3.el7.x86_64.rpm
软件包包文件一般是这个格式: teamd(包名)-1.25(主版本.次版本)-4.el7(发布版本).x86_64(平台_位数).rpm(后缀名)
使用RMP安装包
- 安装 :rpm -ivh 包文件 i:安装 v:可视化 h:进程
- 升级 :rpm -Uvh 包文件 U:update
- 卸载 :rpm -e 包名(若有依赖包则需要先卸载依赖包,否则会报错)
- 查询 :rpm -qa 查询已经安装了哪些包
- 查询 :rpm -q 包名 查询一个包是否已经安装
- 查询 :rpm -qi 包名 查询指定的rpm的信息
- rpm -ql 包名 列出安装该rpm包具体安装了哪些文件
- rpm -qf 命令的绝对路径 查询该命令由哪个包安装的。
- 安装
[root@localhost Packages]# rpm -ivh spamassassin-3.3.2-18.el7.x86_64.rpm
错误:依赖检测失败:
perl(Archive::Tar) 被 spamassassin-3.3.2-18.el7.x86_64 需要
perl(Archive::Tar) >= 1.23 被 spamassassin-3.3.2-18.el7.x86_64 需要
perl(DB_File) 被 spamassassin-3.3.2-18.el7.x86_64 需要
- 卸载
[root@localhost Packages]# rpm -e ppp
错误:依赖检测失败:
ppp = 2.4.5 被 (已安裝) NetworkManager-1:0.9.9.1-13.git20140326.4dba720.el7.x86_64 需要
- 查询
[root@localhost Packages]# rpm -q ppp
ppp-2.4.5-33.el7.x86_64
[root@localhost Packages]# rpm -q /usr/bin/ls
未安装软件包 /usr/bin/ls
[root@localhost Packages]# rpm -qf /usr/bin/ls
coreutils-8.22-11.el7.x86_64
[root@localhost Packages]# rpm -ql ppp
/etc/logrotate.d
/etc/logrotate.d/ppp
/etc/pam.d/ppp
在实际操作中我们会发现,rpm的查询的用法是比较好用的,但是如果用它来安装或者卸载则会很麻烦,因为它不会自动处理依赖关系,需要我们手动一个一个解决依赖和被依赖包的安装卸载等。