root:这是系统特权用户类,他们都有访问root登录帐号的权限
owner:这是实际拥有文件的用户。
group:这是共享文件的组访问权的用户类的用户组名称
world:这是不属于上面3类的所有其他用户。
该文件是存放linux所有用户信息文件
帐号名称:登陆的用户名
密码:MD5加密的密码
UID:用户ID号.0是管理员帐号,1~499保留系统使用.500~65535给一般使用者
GID:用户所属组ID号
使用者信息说明栏
家目录:用户默认所在home目录
Shell名称
存放linux所有用户的密码文件
帐号名称:由于密码也需要和帐号相匹配
密码:这才是真正密码,是以MD5加密(如果密码是以*或者是!开头表示密码对应用户不是登陆用户)
最近更动密码日期
密码不可被更改得天数
密码需重新变更天数
密码变更期限前警告期限
密码过去恕限时间
帐号失效日期
保留
group文件格式: groupname:password:gid:user_list
groupname:组名称
password:组密码
gid:组识别号
user_list:该组用户清单
首先寻找/etc/passwd里面是否有这帐号,如果没有则退出,如果有得话将该帐号对应得UID 和GID读出来,另外,该帐号得家目录与shell设定一并读出
再来则是核对密码表.这时linux会进/etc/shadow里面查找对应帐号后核对你得密码和里面密码是否相同(MD5)
如果一切正常,就进入shell控管阶段
文件权限位的表示:-rwxrwxrwx
第一位表示文件的类型,-表示普通文件,d表示目录文件,l表示符号链接文件;
接下来三位表示owner用户的读,写,执行权限
紧接着三位表示group用户的读,写,执行权限
最后三位表示world用户的读,写,执行权限
注意:这些权限只针对文件内容,而非文件本身属性
规划用户以及用户所属的组
设置文件所属的用户以及所属的组(chown,chgrp)
给文件赋予相应的权限位(chmod)
目录的内容认为是文件,如果目录是没有w权限,则不能该目录下进行增删文件操作
chgrp用来更改文件的组拥有者,其一般格式为: chgrp [option] group file
把文件abc的组拥有者改为study: chgrp study abc
把abc及其子目录下的所有文件的组拥有者改为study: chgrp -R study abc
chown用来更改文件所有者与组拥有者,其一般格式为:chown [option] owner[:group] file
将abc及其子目录下的所有文件的所有者改为jjl:chown jjl abc
将abc文件的所有者改为jjl,组拥有者改为study:chown jjl:study abc
考查/usr/bin/passwd与/etc/shadow的权限,分别为:-r-s--x--x、-r--------
我们发现/etc/shadow文件没有写的权限,那么普通用户要修改密码如何做到修改/etc/shadow文件呢?
这是通过s这个特殊权限实现的。当具有s权限的文件运行时,进程的拥有者不是执行程序的用户,而是文件的拥有者。
同样如果文件组用户执行权限位为s,表示任何用户执行该文件,都拥有该组的权限,就好像自己是组的成员一样。
用chmod命令来设置这些“特殊”的权限位。数值4表示设置文件拥有者的执行权,数值2表示设置文件用户组的执行权。如:
chmod 4755 test
-rwsr-xr-x 1 study study 0 May 25 17:37 test
chmod 2755 test
-rwxr-sr-x 1 study study 0 May 25 17:37 test
chmod 6755 test
-rwsr-sr-x 1 study study 0 May 25 17:37 test
考查root用户的umask值为0022
这表示root用户创建的文件对于组用户与其他用户都要去掉2即写的权限,目的就是防止除root以外的用户改写root用户的文件。
设定了umask的文件权限计算公式:
newmode = oldmode & ~umask
文件基数为666,目录为777,即文件无设x位,目录可设x位。
什么vi :vi是Linux/Unix底下最常用的文本编辑器。
vim:vim是vi的升级版本,它不仅兼容vi的所有命令,而且还加入了一些新的特性。
i和I键插入:在目前光标处输入文字,已存在的文字会向后
A和a键:a为从目前光标所在的下个字符处开始插入,A为从光标所在行的最后一个字符开始插入
O和o:在目前光标所在下一行处插入新的一行.O为在目前光标所在处的上一行插入新行
R和r 取代:r会取代光标所在的那个字符:R会一直取代光标所在的文字,直到按下ESC为止
退出命令:q 退出vi q! 不保存退出 wq 保存退出
搜索字符串: 输入/+要查找的字符串 按n键重新查找下一个
shell切换: !+shell命令 如 !ls –l 在vi中使用ls命令 sp +filename 在同一个vi中编辑两个文件
什么是gcc:gcc是GNU Compiler Collection的缩写。最初是作为C语言的编译器,现在已经支持多种语言了,如C、Java、Pascal、Ada、COBOL语言等。
gcc支持多种硬件平台,甚至对Don Knuth 设计的 MMIX 这类不常见的计算机都提供了完善的支持
预处理(Pre-Processing)
编译(Compiling)
汇编(Assembling)
链接(Linking)
在使用C语言和其他语言进行程序设计的时候,我们需要头文件来提供对常数的定义和对系统及库函数调用的声明。
库文件是一些预先编译好的函数集合,那些函数都是按照可重用原则编写的。它们通常由一组互相关联的用来完成某项常见工作的函数构成。比如用来处理屏幕显示情况的函数(curses库)和数据库访问例程(dbm库)等。 printf cout
/usr/include及其子目录底下的include文件夹
/usr/local/include及其子目录底下的include文件夹
/usr/lib /usr/lib/x86_64-linux-gnu
/usr/local/lib
静态库(.a):程序在编译链接的时候把库的代码链接到可执行文件中。
共享库( .so或.sa ):程序在运行的时候才去链接共享库的代码,多个程序共享使用库的代码。
一个可执行文件使用静态库 的文件更大,还是使用共享库文件大。
1、拷贝.so文件到系统共享库路径下 一般指/usr/lib
2、ldconfig: ld.so.conf,将路径写入文件 ldconfig,生效 更新ld.so.cache
3、更改LD_LIBRARY_PATH
什么是gdb:gdb是GNU debugger的缩写,是编程调试工具。
启动程序,可以按照用户自定义的要求随心所欲的运行程序。
可让被调试的程序在用户所指定的调试的断点处停住 (断点可以是条件表达式)。
当程序停住时,可以检查此时程序中所发生的事。
动态地改变程序的执行环境。
break: info break 查看断点 br linenum 设置某行断点
br functions 设置某个函数断点 br if 条件 根据条件设置断点