linux基础学习笔记

linux 命令学习
linux注意事项:
1 linux严格区分大小写,windows不区分大小写,linux下所有命令都是小写的,linux系统下文件名区分大小写,windows下文件名不区分大小写。

2 linux中所有内容都是以文件形式保存,包括硬盘。如果没有写到文件中,写到内存中,那么重启后则失效。操作硬件时都是针对文件名操作。

3 linux不靠扩展名区分文件类型。靠文件权限区分文件。但操作时往往加上一些特定的“扩展名”来帮助管理员更好的识别文件,linux并不要求加上扩展名。

4 linux所有的存储设备都必须挂在之后用户才能使用,包括硬盘、U盘和光盘。

5 windows下的程序不能直接在linux中安装和运行。

 


linux各目录的作用
1 /bin/:存放系统命令的目录,普通用户和超级用户都可以执行。放在/bin下的命令在单用户模式下也可以执行。

2 /sbin/:保存和系统环境设置相关的命令,只有超级用户可以使用这些命令进行系统环境设置,但是有些命令可以允许普通用户查看。

3 /user/bin:存放系统命令,普通用户和超级用户都可以执行。

4 /user/sbin/ :存放根文件系统不必要的系统管理命令。只有超级用户可以使用。

5 /boot/ : 系统启动目录。

6 /dev/: 设备目录。

补充:/etc/: 配置文件保存位置。

7 /home/ :普通用户的家目录。/home/user1

8 /lost+found/ :当系统意外崩溃或机器意外关机,而产生一些文件碎片存放在这里。每个分区都有自己的lost+found目录。

9 /media/ :挂在目录,系统建议是用来挂在媒体设备的。例如软盘或者光盘。

10 /mnt/ : 挂载目录。挂载移动硬盘、U盘等操作系统分区。

11 /mise/ : 挂载目录。系统建议用来挂载NFS服务的共享目录。

12 /opt/:第三方安装的软件保存位置。但一般放置在 /user/local下。

13 /proc/: 虚拟文件系统。该目录中的数据并不保存在硬盘里。一般存放设备驱动列表网络协议等,在内存里。

14 /sys/: 虚拟文件系统。

15 /root/:超级用户目录。

16 /srv/:服务数据目录。

17 /tmp/:临时目录。

18 /usr/ :系统软件资源目录。不存放用户数据。

19 /var/ :动态数据保存位置。

 


服务器注意事项

1 远程服务器不允许关机,只能重启

2 重启时应该关闭服务

3 不要在服务器访问高峰运行高负载命令(杀毒,解压缩,传输文件这些都是高负载命令)

4 远程设置防火墙时不要把自己提出服务器(防火墙是一个过滤过程,只要是通过ip地址对访问进行过滤,与杀毒软件是两码事)

5 指定合理的密码规范并定期更行

6 合理分配权限,定期备份重要数据和日志


文件处理命令

1 命令格式与目录处理命令ls
命令格式:命令 [-选项] [参数] 所有用户都可以使用
2 目录处理命令
ls(list) 命令所在路径/bin/ls
ls -a -a的作用是显示所有文件,包括显示隐藏文件,以‘.’开头的文件就是隐藏文件。
ls -l 列出文件的详细信息
ls -lh
ls -i

ls -R 连同子目录的信息一起列出

mkdir(make director) mkdir /tmp/xiaodianying(right)
mkdir /tmp/dianying/xiaodianying【dianying不存在】(error)
mkdir -p mkdir /tmp/dianying/xiaodianying【-p 表示可以连同父目录一起创建】(right)
mkdir mkdir /tep/dianying /tmp/xiaodianying(right)【可以一次创建多个】

rmdir 删除目录 ,可以一次删除多个,-p选项表示可以连同目录一起删除

rmdir -p dianying/xiaodianying

rm 正常情况下是用来删除文件用的,加上-r选项就可以递归删除整个目录,rmdir是用来删除空目录的。

rm -r dianying

rm -rf dianying 强制删除

touch  如果文件存在则仅仅是更新文件创建的时间,不会覆盖文件不会改变原文件中的内容;如果文件不存在则创建一个0k的文件

touch file 创建/更新文件

cd (chang directory) cd /tmp/dianying
pwd (print working directory)
cd .
cd ..

~ 代表当前用户的家绝对目录 cd ~ 可以直接进入当前用户的目录

另外在root用户下 ~可以代表 /home/

[root@linux ~] cd ~test1

[root@linux test1]pwd

/home/test1

cp(copy) 可以拷贝文件,可以拷贝目录  -r
cp file1 file2 

cp file1 ~/file2
cp file1 ../

cp dir1 dir2 -r

cp dir1 ~/  -r


mv(move)  重命名文件目录和移动文件目录

mv file1 file2 将file1的名字改为file2

mv file1 ~/   将file1文件移动到自己的家目录下

 

cat 查看文件里的内容,输出到终端,如果cat时没有跟文件名,则读标准输入,遇到\n后输出到标准输出,终端下输入ctrl+d结束
cat -n

tac 
more 查看文本文件的内容,屏幕显示完一屏等待用户按下任意键在滚动到下一屏,如果中途不想继续看下去就按ctrl+c或q结束显示
less  查看文件内容,屏幕显示完一屏就等待用户按键,用户可以向上或者向下查看,如果中途不想继续看了就ctrl+c或q结束显示
less /关键字
head -n【行号】 /文件
tail -n【行号】 /文件

wc 统计指定文件中的行数、单词数和字符数

wc -l file 统计行数

wc -w file 统计单词数

wc -c file 统计字符数

链接
ln -s 软连接 相当于windows的快捷方式 可以跨分区 可以针对目录使用 权限全部是rwx

ln -s wdx cyj


ln 硬链接 类似拷贝 同时可以同步更新 源文件丢失此硬链接也可以执行 不能跨分区 不能针对目录使用

ln wdx cyj

软硬链接的本质区别:软链接就是原文件的快捷方式,原文件丢失则软链接失效,原文件改变大小链接大小不变;硬链接是原文件的快捷方式,原文件的名字被删,硬链接依然存在,原文件或者硬链接中任一打开文件改变文件大小,硬链接显示的文件大小都发生改变。

快捷键

ctrl + p 上键 previous

ctrl + n  下键 next

ctrl + b  左键 backward

ctrl + f  右键  forward

ctrl +d  del键 但是是 删除光标后面的 delete

ctrl +a home键

ctrl + e end键

3 文件处理命令

-rw-r--r--
文件 u g o
r w x
d - l

4 链接命令

linux常用命令

权限管理命令

chmod u-r u+r u=r /tmp/wdx
777 /tmp/wdx
对文件r(cat more less tail head)w(vim)x(command script)
对目录r(ls)w(touch mkdir rmdir rm)x(cd)
权限管理root和所有者都可以操作
记住:要想删除文件,则文件所在的目录必须有w权限
要想查看文件,则文件所在的目录必须有r权限
要想执行文件,则文件所在的目录必须有x权限
权限是有继承关系的

chown
只有root可以操作
chown testing(用户):组 文件或者目录


chgrp 组名 文件
groupadd
umask -S 在linux下所有新建的文件都会把x权限取消 因此umask看到的值 touch后会把x去掉
umask 直接执行,会出现数字 是权限掩码,应该是777-022这样

用umask该默认权限,需要利用掩码设置 umask 023 执行后默认权限改为rwx-r-xr--


查找

find *匹配任意多个任意字符 ?匹配某一个字符
find 目录 -name(区分大小写) 文件名
find 目录 -iname(不区分大小写) 文件名
find 目录 -size + or - or =数字(表示在根目录下查找大于数字的文件,数字是0.5kb数据块的倍数 linux下最小存储单元是512k)
find 目录 -user 用户名
find 目录 -group 组名
find 目录 -cmin -时间(在某个时间内修改后属性的文件)
find 目录 -amin -时间(在某个时间内被访问够的文件)
find 目录 -mmin -时间(在某个时间内被修改过内容的文件)
find 目录 -size +数字1 -a -数字2(在数字1和数字2之间的文件)
find 目录 -size +数字1 -o -数组2(在数字1或者数字2之间的文件)
find 目录 -type d(目录)f(文件) l(软连接)(通常和其他查找连接使用)
find 目录 -name 文件名 -exec ls -l {} \;(其中{} \;是固定格式)
find 目录 -name 文件名 -ok {} \;(其中{} \;是固定格式)
(-exec和-ok是执行操作的连接符)

find 目录 -inum 节点号 -exec rm {} \;
(常用于查找硬链接和删除操作)

locate 文件名
使用locate时,先updatedb一下,但是updatedb命令对临时文件/tmp不起作用

locate -i 文件名 不区分大小写搜索

which 命令
whereis 命令(列出文件绝对路径和帮助文档的位置)

grep 内容 文件目录
grep -i 内容 文件目录(不区分大小写搜索)
grep -n 内容 文件目录(输出行号)
grep --color=auto 内容 文件目录
grep -v 内容 文件目录(反向查找)
grep -v ^# 文件目录(排除首字母为#的行)


帮助命令

man(manual) man ls(查看命令帮助) man services(查看配置文件的帮助信息,不需要加上配置文件的绝对路径)

在man命令下可以用/关键字 找到关键字的位置

使用man可以查看命令和配置文件的帮助

帮助文档一般用两种:1代表命令的帮助 5代表配置文件的帮助(2代表系统调用的命令 3代表C语言函数库命令 4代表驱动程序和系统设备的解释 6 游戏程序的命令 7其他软件或程序的命令 8 有关系统维护的命令)

对于配置文件和命令同名的 可以用man 1 passwd 和man 5 passwd区分开

help命令的使用方法: mkdir --help

whatis命令用法: whatis ls 可以直接查看命令的信息

whereis命令用法:whereis ls 查找ls在什么目录下

apropos services apropos加上配置文件的 可以直接查看配置文件的简短的信息

ls --help 可以直接列出关于命令ls的选项

shell是一个命令解释器,里面有一些内置的命令,这样的命令不能用man查看,这样的命令有cd,umask等,这样的命令man cd不会打开cd的帮助,会打开shell的帮助的信息,若想获得shell命令的帮助信息,可以使用help cd得到cd的帮助信息。


用户管理命令

useradd 只有root下可以使用 useradd wdx
passwd 设置用户的密码 passwd wdx
在自己的账户下该密码 直接passwd即可
who linux可以同时登陆多个用户 who命令可以查看有多少个用户在线 其中tty表示本地登陆(即虚拟机登陆),pts表示远程登陆
w命令可以获得更加详细的用户登陆信息 里面的信息量很大 记不住


linux压缩命令

压缩格式 .zip是linux和windows都不需要装软件就可以解压的格式
.gz是linux下的压缩文件格式 命令gzip加文件名就可以压缩了 gunzip加文件名(解压缩)或者使用gzip -d 文件名
gzip只能压缩文件 并且不保留原文件
tar -c(打包)v(详细信息可选选项)f(文件名)压缩后的名字 /目录 tar -cvf wdx.tar /tmp/testing/wdx
生成.tar文件后继续使用gzip压缩最后形成 wdx.tar.gz

tar -zcvf wdx.tar.gz /tmp/testing/wdx 这条命令是上述两条命令的综合 这是最常用的压缩命令

tar -zxvf wdx.tar.gz 解包

-z 解压缩对gz
-x 解包对tar
-c 压包对tar
-v 详细信息(可选项)
-f 指定压缩文件

zip命令,压缩完保留原文件
zip -r wdx.zip /tmp/testing/wdx 压缩目录时需要加上-r这样一个选项 如果要缩文件不需要加-r
unzip 解压缩

由于zip的压缩能力不如gz好,因此用得少

bzip2命令压缩完保留原文件,并且压缩比例很强大
bzip2 文件名
bzip2 -k 文件名 (-k可以保留原文件)
tar -cjf wdx.tar.bz2 /tmp/testing/wdx
bzip2 wdx.bz2 解压缩
tar -xjf wdx.tar.bz2解压缩
很明显-j针对bz2


网络命令

write 用户名 内容 ctrl+d结束输入发送,如果输错用ctrl+回格键删除或者delete
wall(write all) 内容 (给所有用户发送信息)
ping IP地址(一直ping ctrl+c停止)
ping -c 次数 IP地址

ifconfig 直接回车 查看ip情况 eth0网卡 lo回环地址

mail 用户名 发邮件
mail 查看邮件
h键查看邮件列表
d 加列表标号 删邮件

last 统计所有用户登陆信息
lastlog 查看用户最后登陆的信息
last -u 用户号

traceroute 主机地址 非常重要的一个命令

netstat -t(查tcp协议) -u(查udp协议) -l(监听) -r(路由) -n(显示IP地址和端口号) -an(显示所有IP地址和端口号 ) 关于端口号:发起端口是随机的,收到端口是固定的

netstat -rn 查看网关

DHCP的作用:局域网内自动分配ip的服务,因此如果想使用这个服务需要确定局域网内是否有dhcp服务器来提供服务。

setup 命令 是redhat系列linux特有的命令,作用是界面化配置网络,这种配是永久生效,配置完后需要重启系统,service network restart


挂载命令
mount 设备文件名 挂载点 例:mount -t iso9660 /dev/sr0 /mnt/cdrom
关盘挂载整个过程:
1 所有创建目录:mkdir /mnt/wdx
2 mount [-t iso9660](若系统知道设备名或者自动识别可以省略) /dev/sr0(光盘设备名,其中sr0是一个软连接,是系统 自动指定的,因此前面的-t iso9660可以省略) /mnt/cdrom
3 若需要卸载命令是 umount /mnt/cdrom


关机和重启
shutdown -h now (代表现在关机)
shutdown -h 20:30

shutdown -h 45 45分钟后关机

shutdown -r now 重启
shutdown -c 取消前一个关机命令
推荐使用shutdown命令,这个命令是最原始的可以保存数据的命令,虽然现在也有别的命令或者工具可以达到关机的作用,但为了以 防万一,推荐使用shutdown。 关机或者重启前最好停掉服务,保护硬盘。

其他命令:
halt命令关机
poweroff关机
init 0关机
reboot重启
init 6重启

系统运行级别:
0 关机
1 单用户,相当于安全模式,一般用于修复
2 不完全多用户,不含nfs(文件共享服务)服务命令(由于linux对此不太安全)
3 完全多用户,也就是完全命令行
4 未分配
5 图形界面
6 重启
修改运行级别命令 init 数字
在cat /etc/inittab中可以看到同样的系统运行级别信息
用runlevel查看当前的运行级别 打印两个数字 第一个数字是开机前的运行级别,第二个数字是开机时的运行级别

logout命令 退出用户命令 做完操作后一定要退出

文本编辑器(vim)
vim没有菜单,只有命令,可以建立、编辑、显示文本文件。
vim三种工作模式:命令模式、插入模式、末行模式。

从命令模式进入插入模式:i

    重点记忆:O在光标所在行的上面插入一行  I行首 A行末 S删除光标所在的行

 

从插入模式进入命令模式:ESC

         ^移动到光标所在行的行首 $移动到光标所在行的行尾

         dd删除光标所在行 ndd从光标所在行开始删除n行

         nyw复制n个字到缓冲区 nyy复制n行到缓冲区 p在光标所在位置粘贴

         r替换光标所在位置的字符  R替换光标所到之处的字符直到按ESC结束

         u 撤销上一次操作

         nG跳到文本第n行行首

         ZZ存盘退出 ZQ不存盘退出

只能从命令模式进入末行模式:在命令模式下按冒号键:输入wq 存盘退出,输入q!不存盘强制退出vi

         set nu 设置行号

         set nonu 取消行号

         n 跳到第n行

         /关键字  查找关键字 按下n查找下一个

          ?关键字  同/

         s /a/x 将光标所在行第一个a换为x

         s /a/x/g  将光标所在行所有a换位x

:r 文件名
:!which ls :r !date
自定义快捷键:map ctrl+v+p I#<esc> 表示按下ctrl+p调到行首插入#
map ctrl+v+b 0x 表示按下ctrl+b删除首行字母
map ctrl+v+h Iwangdexing@sina.com<esc>

n1,n2s/^/#/g 表示在n1—n2首行加上#,并不确认
n1,n2s/^/\/\//g 表示在n1—n2首行加上//,其中\是转义符

:ab xxxxx yyyyy 用yyyyy替换xxxxx

这些快捷键需要写到配置文件里,在用户的家下的.vimrc

软件包管理简介
源码包。源代码直接开放出来的包,绝大多数c语言写的。
二进制包(RPM包(rpm是c语言编译后的格式,相当于obj)、系统默认包)
脚本安装包。针对源码包写了安装界面,安装过程类似windows的安装包。

对于源码包:需要编译安装,卸载直接删除文件就行。安装过程步骤多,编译过程时间长,安装过程中一旦报错新手很难解决。
对于二进制包:包安装、升级、查询和卸载简单,安装速度快。

RPM包管理——rpm命令管理
rpm包命名规则,区分包全名和包名,如果操作的是没有安装的软件包,必须使用包全名,操作的如果是已经安装好的软件包,使用包名,自动在/var/lib/rpm搜索,已经安装的包都会存在/var/lib/rpm下存在
rpm包依赖性:最难,因此出现了yum在线管理

rpm -ivh 包全名 安装命令
rpm -Uvh 包全名 升级命令
rpm -e 包名 卸载命令

rpm查询方式:rpm -q 包名 查询包是否安装
rpm查询软件包详细信息:rpm -qi 包名
rpm查询未安装的包的详细信息:rpm -qp 包全名
rpm查询软件包安装位置和列表:rpm -ql 包名
rpm查询未安装的软件包将安装位置和列表:rpm -qlp 包名
rpm查询系统文件名属于哪个包:rpm -qf 系统文件名
rpm查询软件包的依赖性:rpm -qR 包名
rpm查询未安装软件包的依赖性:rpm -qRp 包全名

rpm包的检验和提取:
rpm -V 包名 检验包中的文件是否被改变过
rpm2cpio 包全名 | cpio -idv ./bin/ls

RPM包管理——yum在线管理
rpm命令管理需要解决依赖性的问题,yum在线管理解决了依赖性。
yum list 查询所有可用的软件包
yum search 关键字 搜索相当的软件包
yum -y install 包名 (-y 自动 如果没有-y会问操作者是否安装)
yum -y install gcc (gcc c语言linux的编译器)
yum -y update 包名 更新
yum -y update 如果没有加包名,是对系统所有软件更新
yum -y remove 包名
yum grouplist
yum groupinstall 组名

yum光盘作为yum源:

源码包和Rpm包的区别
RPM包安装的服务启动方式有两种:
1 services httpd start(services命令是centoslinux特有的,别的linux可能性)
2 /etc/rc.d/init.d/httpd start
源码包是安装到自己指定的位置,RPM包安装到默认的位置,因此两种安装方式的启动不同:
绝对路径 start

源码包安装:
1 安装c语言编译器——gcc
2 下载源码包

查看install文件,查看安装过程
脚本安装包
脚本安装包一般用于硬件驱动的安装

用户配置文件
在/etc/paawd文件,保存账号信息,共7个字段:
文件的读写权限对root用户是没作用的。UID号是0的用户是root用户。1-499的用户是伪用户,是为系统服务的用户。500-65535普通用户。
把x去掉,没有密码的用户远程无法登陆,只能是本地登陆。

正常用户的shell解释器/bin/shell 如果禁止某个用户登陆将解释器改为/sbin/nologin

 

在/etc/shadow文件保存用户密码串,共9个字段:
在/etc/group文件保存组的信息
windows下每个用户都默认是user组下的成员,linux下每个用户创建的时候会自动生成一个同名的组,并且自己处于这个组中。
GID号是0的用户是root用户。1-499的用户是伪用户,是为系统服务的用户。500-65535普通用户。
在/etc/gshadow在保存的是组密码

用户的家目录
通过进入/etc/passwd文件将用户的用户id改为0,这样这个用户就是超级用户了,但是这个用户的家目录不变,组也可以不变。

用户的邮箱
/var/spool/mail/用户名/
用户模板目录
/etc/skel/ 这个模板的作用,当每次添加新用户是,都会将这个目录的文件,拷贝到用户的家目录中,有的文件是隐藏的格式。我们自己也可以 在模板目录中加入自己的文件,这样每次创建新的用户都会有自己的文件。

用户管理命令
添加一个用户:useradd wdx
passwd wdx
查看相关配置文件:grep wdx /etc/passwd
grep wdx /etc/shadow
grep wdx /etc/group
grep wdx /etc/gshadow
ll -d /home/wdx
ll /var/spool/mail/wdx
为一个用户添加密码:passwd wdx
passwd 直接回车是对自己的账户改密码,超级用户能改所有用户的密码。
root用户,可以使用passwd -S wdx查询用户密码装填
passwd -l wdx可以锁定一个用户,暂停一个用户,在/etc/shadow中对应的用户密码加上两个叹号
passwd -u wdx解锁一个用户
对于shadow文件权限是000,保存文件时应该是:wq! 感叹号的意思是强制保存
使用字符串作为用户密码:
echo “123” | passwd --stdin wdx 接收字符串123给wdx用户添加密码


用户默认值文件
/etc/default/useradd 这个文件的作用,当定义一个用户是会调用这个文件里的信息,例如家目录:文件里指定的是/home

/etc/login.defs 这个文件的作用,对密码的相关定义

修改用户信息usermod

usermod -u -c -G -g -U -L 用户名
禁用用户的方法:1 改shadow文件,将密码串前加!! 2 将passwd文件的/bin/bash 改为/sbin/nologin 3 passwd -l 用户名 4 usermod -L 用 户名

修改用户密码状态
change -l -d -m -M -W -I -E 用户名
change -d 0 root 解释一下-d是修改密码最后一个修改的时间的选项,当改为0时,系统认为普通用户没有修改过密码,这样系统要求用户一登陆 就需要修改密码。

删除用户userdel
userdel -r 用户名 -r 删除用户的同时也删除用户家目录


查看用户ID
id 用户名

切换用户身份
su - 用户名 -号不能少,必须有,如果不加切换后环境变量没变,还是切换前的环境变量。

exit 退回到登陆前的账户

env 查看当前操作的操作环境变量

su - root -c “useradd wdx” 作用不切换用户执行-c后面的命令添加一个wdx用户

添加删除用户组
groupadd wdx
groupdel wdx 删除一个组里面的用户:一种有初始用户的组,这种不能删,报错 二种附加用户,这种可以删组

修改用户组
groupmod -n wdx cyj 将cyj组改为wdx组
把用户添加到组或者删除组
gpasswd -a 用户 组 (个人推荐记这种方式,先添加用户在添加组)
也可以在/etc/gpasswd直接添加用户

ACL权限
所有文件只有一个用户组,用户。
df -h 查看分区的命令
dumpe2fs -h /dev/sda1 查看sda1分区是否支持acl权限
mount -o remount acl 在分区内执行这条命令,可以使分区有acl权限 这是临时的
/etc/fstab 这是硬件挂载配置文件,看到对应分区如果是default就可以了,如果默认也不可以,则default,acl保存即可 这样是永久的

对于每个文件创建的时候都会有默认的权限,权限只有root和所有者可以更改,针对每个文件都只能有一个用户和一个组,用户自己可以更改自己的 文件权限,root用户可以更改所有文件的权限

getfacl 文件名
setfacl 选项 文件名
setfacl -m u:用户:权限 目录或者文件
setfacl -m g:组:权限 目录或文件

最大有效权限和删除
mask用来指定最大有效权限,任何一个用户权限都是与mask的rwx“相与”得出用户的权限
setfacl -m mask:rx 文件或者目录 mask权限只对acl权限和所属组的权限,不影响用户自己的权限
setfacl -x u:用户 文件或者目录 删除acl权限
setfacl -x g:组名 文件或目录 删除组的权限
setfacl -b 文件或目录 直接删除组和用户的权限

递归ACL权限 只能针对目录使用
递归权限是将目录以及目录下的所有目录和文件
setfacl -m u:用户:权限 -R 目录 这种方式对当前所有文件都设置成对应的权限

为了实现对未来新建的子文件都有acl权限,这个很重要的一个命令
setfacl -m d:u:用户名:权限 文件名 只对新出现的文件

总结一下:修改一个文件对一个用户的权限可以有两种方式,一种是将用户添加到文件所在的组中,另一种是针对用户和文件建立acl权限管理机制


文件特殊权限
SetUID的功能:
SetUID的功能:只有可以执行的二进制程序才能设定SUID权限
命令执行者要对该程序拥有x权限
命令执行者在执行该程序时获得该程序文件属主的身份(在执行程序的过程中灵魂附体为文件的属主)
SetUID权限只在该程序执行过程中有效,也就是说身份改变只在程序执行过程中有效
passwd命令拥有SUID权限,因此普通用户就可以利用passwd命令修改/etc/shadow文件了,因为shadow文件对于普通用户是什么权限也没有的
这样就可以理解为什么passwd可以修改密码了,但是cat命令无法查看shadow文件,因此cat命令很明显没有SUID权限

设定SUID的方法
4代表用户的SUID
chmod 4755 文件 其中的4就代表对用户权限设定了s权限
chmod u+s 文件 同上
chmod 755 文件 去除s权限
chmod u-s 文件 去除s权限

SUID权限方法一般用于针对root用户的文件,加上s权限,对于能执行这个文件的其他用户就可以在执行这个文件时有了root用户有的权限

SetGID针对文件的作用,只有可执行的二进制程序才能设定SGID权限,命令执行者要对该程序拥有x执行权限,命令执行在执行程序时候,组身份升级 为该程序文件的属组。 例如locate命令,/usr/bin/locate是可执行的二进制程序,可以赋予SGID,执行用户lamp对/usr/bin/locate命令拥有执行
权限,执行locate命令,组身份升级为slocate组,而slocate组队mlocate.db数据库拥有r权限,所有普通用户就可以使用locate命令查询mlocate.db
数据库了,命令结束,lamp用户的组身份返回为原来的组。

SetUID针对目录的作用,普通用户必须对此目录拥有r和x权限,才能进入此目录,普通用户在此目录中的有效组会变成此目录所在的组,

设定SetUID的方法
chmod 2755 文件
chmod g+s 文件


Sticky BIT文件特殊权限,SBIT黏着位目前只对目录有效。普通用户只对该目录拥有w和x权限,普通用户可以在此目录拥有写入权限,如果一个目录 有的SBIT权限,除了root用户,其他用户能在这个目录新建文件,但是不能删除别人建立的文件。
设定SBIT方法:
chmod 1755 目录名
chmod o+t 目录名
取消黏着位
chmod 777 目录名
chmod o-t 目录名


chattr权限
chattr [+-=][选项] 文件或者目录
选项主要有i和a两个选项,针对文件付了i属性则不允许对文件进行删除和改名,也不能添加和修改数据,针对目录设置i属性,那么只能修改目录下文 件的数据,但是不允许建立和删除文件 ,这个命令对root同样适用。a属性针对文件设置是,那么只能在文件中增加数据,但是不能删除也不能修改数 据,如果对目录设置a属性,那么只允许在目录中建立和修改文件,但是不允许删除。

lsattr 选项 文件或者目录 查看chattr属性
选项a,查看目录或者文件的chattr属性

sudo权限
root把本来只能超级用户执行的命令赋予普通用户执行
sudo的操作对象时系统命令

命令是visudo 执行时是修改/etc/sudoers文件 root ALL=(ALL) All
用户名 被管理主机的地址=(可使用的身份) 授权命令(绝对路径)
例子:在sudoers文件中加上wdx ALL=/sbin/shutdown -r now 其中的ALL相当于本机的ip 这个ip是指装有linux的服务器,也就是这个ip是被管理的 主机ip,不是来源ip,这个比较绕。
然后su - wdx 然后不能直接使用shutdown 通过sudo -l可以查看当前用户被root赋予了什么sudo权限 如果想执行shutdown命令,
sudo /sbin/shutdown -r now

文件分区和文件系统
主分区最多只能有四个,扩展分区只能有一个,主分区加上扩展分区最多有四个,但是扩展分区不能存储数据和格式化,必须在划分成逻辑分区才能使用,逻辑分区是在扩展分区中划分的,IDE硬盘,linux最多支持59个逻辑分区,scsi硬盘linux最多支持11个逻辑分区。
此处注意一个问题:逻辑分区一般总是从sda5开始,sda1-4只能给主分区和扩展分区使用。

centos6支持的文件系统是ext4,ext4支持的存储量大 文件操作速度快


文件系统命令
df查看分区情况 df -h 人性化显示
ll查看目录是不能统计目录下所有文件的大小,只会统计当前目录所有文件名占了多少空间
du -s 统计文件大小 并且仅是文件的大小, df统计的大小包括文件相关进程等占用的大小, 这两个大小对比,可以知道是否需要重启一下系统,重 启结束没用的进程。

fsck[选项] 分区设备文件名 这个不需要人为使用,系统自己使用这种命令。
dumpe2fs命令中主要看block大小(格式化产生小隔断,隔断的大小,一般是4kb) 分区是否默认有acl权限

查询和自动挂载
mount -l 显示系统中已经挂载的设备
mount -a 依据配置文件/etc/fstab的内容 自动挂载仅是针对已经存在的分区重新挂载
mount [-t 系统系统] [-L 卷标名][-o 特殊选项] 设备文件名 挂载点
其中-o中的特殊选项中有一个是禁止这个分区执行可执行程序

挂载光盘 mount -t iso9660 /dev/cdrom /mnt/cdrom
卸载命令 umount 设备文件名或挂载点(注意不能在挂载点里卸载挂载点)
挂载优盘 fdisk -l 查看U盘设备文件名 U盘的名字与当前系统硬盘的情况有关,因此需要查看当前设备
mount -t vfat 设备 挂载点 (linux默认不支持NTFS文件系统,苹果的系统由于就是linux内核的因此苹果往往就不支持u盘移动硬盘等)

支持NTFS文件系统
linux系统自身有很多驱动,基本可以支持整个计算机的运行。
要想让linux支持NTFS一种是安装ntfs驱动,这需要重新编译整个linux内核。
另一种下载一个NTFS-3G插件,解压tar -zxvf 文件。。。。。。。

添加硬盘,分区
fdisk /dev/sdb
mkfs -t ext4 /dev/sdb1

总结一下:光盘和u盘以及移动硬盘本身已经文件系统了,插入电脑后电脑就能识别这个硬件各个分区,但是需要将各个分区挂载到linux系统中,这时对应硬盘已有的文件系统进行挂载就可以了。 对于硬盘需要先分区再格式化再挂载然后就能用了

但是由于这种挂载电脑重启后就消失了。因此需要实现自动挂载:
fstab文件实现分区自动挂载与修复:
每个分区都会有一个last—found目录,这个目录的作用是分区自动备份的备份点。
要实现自动挂载在fstab文件中按照别的分区记录格式写上就可以。
若针对新硬盘写错了fstab,首先是按照提示进入系统,同时需要注意报错以后挂载根分区时默认是只读挂载(mount -o ro 查看mount命令的特殊选项)因此如果想修改fsatb文件需要重新挂载根分区同时指定为rw权限。


GCC是Linux操作系统下一个非常重要的源代码编译工具,有着许多重要的选项,支持许多不同语言的编译,如C、C++、Ada、Fortran、Objective、Perl、Python、Ruby以及Java等,甚至Linux的许多内核和许多其他自由软件以及开放源码应用程序都是用C语言编写并经gcc编译而成的.

1.编译单个源文件

[例如]在屏幕上打印"Hello,Linux."ex

[源代码]

#include<stdio.h>

#include<stdlib.h><

int main(int argc,char **argv)

{

printf("Hello,Linux.\n");

exit(0);

}

将源文件保存为hello.c,开始进行编译

$gcc -o hello hello.c

编译成功完成后,在当前路径下,生成一个名std为hello的文件,然后执行

$./hello

在屏幕上,你将会看到打印结果:Hello,Linux.

说明:在默认情况下,编译成功完成后,会在当前路径下,生成一个名为a.out的文件,然后执行$./a.out便可打印结果,但通常可以通过选项-o来指定自己的可执行程序名称;

2.编译多个源文件

3.使用外部函数库

4.使用共享函数库和静态函数库

5.gcc选项详细描述

posted @ 2016-01-22 21:04  小德cyj  阅读(421)  评论(0编辑  收藏  举报