linux基础
What I understand about linux
绪论
bash shell
通过bash shell与之交互,这个程序是bash,shell的一种,图形界面应该叫terminal(在Windows里面叫cmd)
可执行文件.o一般是不显示后缀的
./hello是因为外部指令的原理,./其实就是字面意思,从当前目录下找到hello.o
/表示root,~一般就是/home/user是默认路径,输入cd就会调到默认路径
gcc一般也可以用cc代替
一些常用的shell命令还是要熟悉的:
- 重定向
- 后台执行
- 子shell
- 环境变量
进阶一点的实用命令:
stracesarldd
linux C
linux的C语言依赖于标准库glibc,这里面在ISO定义的标准库之上增加了系统调用库的封装(帮写了汇编语言里的系统调用)
主要是在:
#include <uinstd.h>
还有一些在别的.h文件内
- OS提供的库:系统调用库
- OS提供的程序:在shell中的一些指令,甚至是bash shell本身
进程管理
| libc | syscall |
|---|---|
fork() |
clone() |
execve() |
execve() |
文件权限
/etc/passwd 记录了用户信息
分三类:root, 用户账户,系统功能账户
每一行的格式:
zongwei:x:1000:1000:zongwei,,,:/home/zongwei:/bin/bash
登录名:密码(隐藏了):UID:组ID:备注:默认目录:默认Shell
密码保存至/etc/shadow下面,root才有权限访问,不过如果有sudo权限是可以修改root密码的
$ sudo passwd root
...
$ su
$ exit
但是cat出来也看不懂,它经过了加密机制
组内可以共享权限设置
Ubuntu会为每个用户创建一个单独的与用户账户同名的组
查看文件权限:ls -l
第一个字符:-文件,d目录,l链接 …
后面9个字符每3个为一组:属主权限-同组用户权限-其它用户权限
r读 w写 x可执行 如果没有这个权限就是-来占位
创建文件时是用的默认权限,用unmask可以修改默认,但比较难
对已有的文件进行权限修改:chmod
改变文件属主:chown,属组chgrp (root才可以用)
下载下来的.run文件一般是没有可运行的权限的,需要赋予