C++系统编程篇——Linux初识(系统安装、权限管理,权限设置)

(1)linux系统的安装

  • 双系统---不推荐
  • 虚拟机+centos镜像(可以使用)
  • 云服务器/轻量级云服务器(强烈推荐)

①云服务器(用xshell连接)
ssh  root@公网IP        然后输入password

①添加用户:

· adduser user_111

· passwd user_111

②用户登录:

· ssh user@公网IP        password

③修改用户:

· userdel -r user_111

②虚拟机

(2)Linux应用场景及版本

1.企业后台最常用----服务器(centos居多,Ubuntu)

2.手机--安卓手机/平板--Linux

3.嵌入式领域

4.智能家居领域,汽车领域

商业化版本:

技术版本:主版本号.次版本号.修正次数(偶数:稳定版本,奇数:开发版本)

(3)操作系统是什么?为什么要有操作系统?

操作系统是一款进行软件资源管理的软件,Linux是一款具体的擦偶做系统的品类,centos7是一款具体的linux操作系统

1.对下提供基本的管理工作,让各种硬件工作在一个稳定的、高效的、安全的状态当中(手段)

2.对上要提供一个高效的、稳定的安全运行环境里(用户的,目的)

(4)指令

1.基础指令

命令

功能

pwd

查看当前文件所在位置

ls

罗列出当前路径下的文件名

cd

进入指定的文件夹

cd -

跳转到最近一次所处的路径下

cd ~

进入用户家目录

clear-

清屏

touch file.txt

用于修改文件的访问时间和修改时间,或者创建新的空文件,在当前目录下,快速创建一个新的普通文件

whoami

查看当前正在使用的人是谁

which

要求系统打印出我所指定的命令名称在系统所在的路径

alias

给其他命令起一个别名(别名只在当前会话中有效)

(创建一个名为 ll 的别名,将其映射为 ls -l 命令:alias ll='ls -l')

tree

以树的形式显示目录结构

(tree example)

(sudo) yum -y install tree

安装

madir

在当前路径下,创建一个新的文件夹

rmdir

删除空目录

rm

删除文件或目录

man

Linux帮助手册

cp

在不同的位置创建文件的副本

(创建一个名为 "file2.txt" 的副本,其内容与 "file1.txt" 相同:cp file1.txt file2.txt

mv

移动文件或目录的,也可以用来重命名文件或目录

(将文件 "file1.txt" 移动到指定目录中:mv file1.txt /path/to/directory/

(将文件重命名为 "newname.txt":mv oldname.txt newname.txt

cat

tac是逆向输出查看

查看较小的文件,会将整个文件的内容一次性输出到屏幕上

more

more 命令比较适合查看大文件,是分页器,它会将文件内容逐页显示在终端上,并在显示完一页后停止,等待用户按键继续查看下一页。

less

允许用户在文件的内容中进行前后翻页、搜索、跳转等操作,并且在查看文件时,不会像 more 那样一次性加载整个文件内容(推荐

head

显示开头或结尾某个数量的文字区块

(查看开头二十行:head -20 big.txt 默认10行)

tail

显示指定文件末尾内容(查看结尾二十行:tail -20 big.txt 默认10行)

| --> 管道

级联多条指令

(查看文件中间内容(8790~8800行):head -8800 big.txt | tail -10)

wc

统计文本行数

date

指定格式显示时间: date +%Y:%m:%d

%H : 小时(00..23)

%M : 分钟(00..59)

%S : 秒(00..61)

%X : 相当于

%H:%M:%S %d : 日 (01..31)

%m : 月份 (01..12)

%Y : 完整年份 (0000..9999)

%F : 相当于 %Y-%m-%d

cal

显示公历(阳历)日历

  • -3 显示系统前一个月,当前月,下一个月的月历
  • -j 显示在当年中的第几天(一年日期按天算,从1月1号算起,默认显示当前月在一年中的天数)
  • -y 显示当前年份的日历

(显示2018年的日历:Cal –y 2018)

find

find命令在目录结构中搜索文件

grep

在文件中搜索字符串,将找到的行打印出来

zip/unzip

将目录或文件压缩成zip格式

-r 递归处理,将指定目录下的所有文件和子目录一并处理

tar

sz/rz

把云服务器上的文件传输到本地/本地文件上传到云服务器

scp

scp xxx.tgz root(用户名)@IP:/root(拷贝到对方的位置)

bc

浮点运算

uname –r

来获取电脑和操作系统的相关信息

[Tab]按键

『命令补全』和『档案补齐』的功能

[Ctrl]-c按键

让当前的程序『停掉』

[Ctrl]-d按键

『键盘输入结束(End Of File, EOF 戒 End OfInput)』的意思;另外,他也可 以用来取代exit

shutdown

关机

2.详细的谈论课件中的所有的指令 -- 附加Linux周边的配套知识

① 文件 = 文件属性 + 文件内容

② 在linux中, 开头的文件是隐藏项目

  • 在任何目录下,都会默认具有两个隐藏目录, 和 ..
    •  . -> 用它来表示当前路径
    •  .. -> 用它来表示上级目录

③家目录

任何一个用户,首次登录所处路径都是自己的家目录

家目录:root---超级管理员账户--- /root

              XXX用户 --- 普通用户 --- /home/XXX

④ 重定向

输出重定向:

echo(把本来应该显示在显示器上的数据,显示在文件中):

  • echo “hello”>file
  • 创建一个空文件:>file
  • 清空一个文件:>file

追加重定向

  • 从结尾处写入(不会清空):echo “hello”>>file(两个>)

输入重定向

  • cat < code.c(从文件code.c中读取并重定向到显示器中)

构建一个大文件的方法

i=1;while [ $i -le 10000 ]; do echo "hello Linux $i"; let i++; done > big.txt

当 i < 10000 时,往文件big.txt中写入i = 1,并执行 i++(注意空格)

(5)shell命令以及运行原理

Linux严格意义上说的是一个操作系统,我们称之为“核心(kernel)“ ,但我们一般用户,不能直接使用kernel,而是通过kernel的“外壳”程序,也就是所谓的shell,来与kernel沟通。

如何理解?为什么不能直接使用kernel?

从技术角度,Shell的最简单定义:命令行解释器(command Interpreter)

主要包含: 将使用者的命令翻译给核心(kernel)处理。 同时,将核心的处理结果翻译给使用者。

对比windows GUI,我们操作windows 不是直接操作windows内核,而是通过图形接口,点击,从而完成我们的 操作(比如进入D盘的操作,我们通常是双击D盘盘符.或者运行起来一个应用程序)

shell 对于Linux,有相同的作用,主要是对我们的指令进行解析,解析指令给Linux内核。反馈结果在通过内核运行出结果,通过shell解析给用户。

(6)Linux权限的概念

Linux下有两种用户:超级用户(root)、普通用户

  • 超级用户:可以再linux系统下做任何事情,不受限制
  • 普通用户:在linux下做有限的事情。 超级用户的命令提示符是“#”,普通用户的命令提示符是“$”。

用户切换

  • 从root用户切换到普通用户user,则使用 su user
  • 从普通用户user切换到root用户则使用 su root(root可以省略),此时系统会提示输入root用户的口令。

(7)Linux权限管理

①文件访问者的分类(人)

u---User 文件和文件目录的所有者

g---Group 文件和文件目录的所有者所在的组的用户

o---Others 其它用户

②文件类型和访问权限(事物属性)

a) 文件类型

-

普通文件

d

文件夹

i

软链接(类似Windows的快捷方式)

b

块设备文件(例如硬盘、光驱等)

p

管道文件

c

字符设备文件(例如屏幕等串口设备)

s

套接口文件

b) 基本权限

读(r/4)

Read对文件而言,具有读取文件内容的权限

对目录来说,具有浏览该目录信息的权限

写(w/2)

Write对文件而言,具有修改文件内容的权限

对目录来说具有删除移动目录内文件的权限

执行(x/1)

execute对文件而言,具有执行文件的权限

对目录来说,具有进入目录的权限 iv.“-”表示不具有该项权限

③文件权限值的表示方法

a) 字符表示方法

b) 8进制数值表示方法

④文件访问权限的相关设置方法

a) chmod

  • 功能:设置文件的访问权限
  • 格式:chmod [参数] 权限文件名
  • 常用选项:R -> 递归修改目录文件的权限
  • 说明:只有文件的拥有者和root才可以改变文件的权限

chmod命令权限值的格式

①用户表示符+/-=权限字符

例: chmod u+w /home/abc.txt

        chmod o-x /home/abc.txt

        chmod a=x /home/abc.txt

+

向权限范围增加权限代号所表示的权限

-

向权限范围取消权限代号所表示的权限

=

向权限范围赋予权限代号所表示的权限

用户符号

u:拥有者

g:拥有者同组用

o:其它用户

a:所有用户

②三位8进制数字

例: chmod 664 /home/abc.txt

        chmod 640 /home/abc.txt

b) chown

  • 功能:修改文件的拥有者
  • 格式:chown [参数] 用户名文件名
  • 实例:
    • chown user1 f1
    • chown -R user1 filegroup1

c) chgrp

  • 功能:修改文件或目录的所属组
  • 格式:chgrp [参数] 用户组名文件名
  • 常用选项:-R 递归修改文件或目录的所属组
  • 实例:
    • chgrp users /abc/f2

d) umask

  • 功能:
    • 查看或修改文件掩码
    • 新建文件夹默认权限=0666
    • 新建目录默认权限=0777
    • 但实际上你所创建的文件和目录,看到的权限往往不是上面这个值。原因就是创建文件或目录的时候还要受到 umask的影响。假设默认权限是mask,则实际创建的出来的文件权限是: mask & ~umask
  • 格式:umask 权限值
  • 说明:将现有的存取权限减去权限掩码后,即可产生建立文件时预设权限。超级用户默认掩码值为0022,普通用 户默认为0002。
  • 实例
    • umask 755
    • umask //查看
    • umask 044//设置

(8)file指令

  • 功能说明:辨识文件类型。
  • 语法:file [选项] 文件或目录...
  • 常用选项:

        -c 详细显示指令执行过程,便于排错或分析程序执行的情形。

        -z 尝试去解读压缩文件的内容。

  • 使用 sudo分配权限

(1)修改/etc/sudoers 文件分配文件

        chmod 740 /etc/sudoers

        vi /etc/sudoer

格式:接受权限的用户登陆的主机 =(执行命令的用户)命令

(2)使用 sudo 调用授权的命令

        格式:$ sudo –u 用户名命令

        实例:$sudo -u root /usr/sbin/useradd u2

(9)目录的权限(粘滞位)

可执行权限(x)

如果目录没有可执行权限, 则无法cd到目录中

可读权限(r)

如果目录没有可读权限, 则无法用ls等命令查看目录中的文件内容

可写权限(w)

如果目录没有可写权限, 则无法在目录中创建文件, 也无法在目录中删除文件

换句话来讲, 就是只要用户具有目录的写权限, 用户就可以删除目录中的文件, 而不论这个用户是否有这个文件的写权限. 这好像不太科学啊, 我张三创建的一个文件, 凭什么被你李四可以删掉? 我们用下面的过程印证一下.

[root@localhost ~]# chmod 0777 /home/
[root@localhost ~]# ls /home/ -ld 
drwxrwxrwx. 3 root root 4096 9月 19 15:58 /home/
[root@localhost ~]# touch /home/root.c
[root@localhost ~]# ls -l /home/
总用量 4
-rw-r--r--. 1 root root 0 9月 19 15:58 abc.c
drwxr-xr-x. 27 litao litao 4096 9月 19 15:53 litao
-rw-r--r--. 1 root root 0 9月 19 15:59 root.c
 
[root@localhost ~]# su - litao
[litao@localhost ~]$ rm /home/root.c #litao可以删除root创建的文件
rm:是否删除有写保护的普通空文件 "/home/root.c"?y
 
[litao@localhost ~]$ exit 
logout

为了解决这个不科学的问题, Linux引入了粘滞位的概念

[root@localhost ~]# chmod +t /home/ # 加上粘滞位
[root@localhost ~]# ls -ld /home/
drwxrwxrwt. 3 root root 4096 9月 19 16:00 /home/
[root@localhost ~]# su - litao
[litao@localhost ~]$ rm /home/abc.c #litao不能删除别人的文件
rm:是否删除有写保护的普通空文件 "/home/abc.c"?y
rm: 无法删除"/home/abc.c": 不允许的操作

当一个目录被设置为"粘滞位"(用chmod +t),则该目录下的文件只能由

  • 超级管理员删除
  • 该目录的所有者删除
  • 该文件的所有者删除

(10)关于权限的总结

  1. 目录的可执行权限是表示你可否在目录下执行命令。
  2. 如果目录没有-x权限,则无法对目录执行任何命令,甚至无法cd进入目, 即使目录仍然有-r 读权限(这个地方很容易犯错,认为有读权限就可以进入目录读取目录下的文件)
  3. 而如果目录具有-x权限,但没有-r权限,则用户可以执行命令,可以cd进入目录。但由于没有目录的读权限
  4. 所以在目录下,即使可以执行ls命令,但仍然没有权限读出目录下的文档。
  • 21
    点赞
  • 20
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Outlier_9

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值