Linux课程实践一:Linux基础实践(基础操作)
一、软件源维护
1. 基本操作
(1)查看源列表
sudo vim /etc/apt/sources.list
- deb:二进制软件安装包
- deb-src:源码包
(2)备份软件源列表
sudo cp /etc/apt/source.list /etc/apt/backup_source.list
(3)更新源
sudo apt-get update
(4)升级源
sudo apt-get upgrade
(5)通过关键字查找安装包
sudo apt-cache search [软件名]
(6)安装软件
sudo apt-get install [软件名]
(7)卸载软件
sudo apt-get remove [软件名]
(8)升级软件
sudo apt-get -u install [软件名]
(9)从指定网址下载deb包
wget [网址/xxx.deb]
2. 常见问题:通过终端安装程序sudo apt-get install xxx时出错
错误提示:
E: Could not get lock /var/lib/dpkg/lock - open (11: Resource temporarily unavailable)
E: Unable to lock the administration directory (/var/lib/dpkg/), is another process using it
错误原因:
- 可能是有另外一个程序正在运行,导致资源被锁不可用。
- 资源被锁的原因可能是上次运行安装或更新时没有正常完成。
解决:
sudo rm /var/cache/apt/archives/lock
sudo rm /var/lib/dpkg/lock
二、Linux权限管理
1. 文件权限
(1)查看权限
ls -l
(2)9bit:权限管理相关

图片来源:Linux及安全——Linux基础实践
- 文件类型
- “-”表示普通文件。
- “d”表示目录文件。
- “l”表示链接文件。
- “c”表示字符设备。
- “b”表示块设备。
- “p”表示命名管道,比如FIFO文件(先进先出)。
- “f”表示堆栈文件,比如LIFO(后进先出)。
- “s”表示套接字。
- 属主权限:文件拥有者(u)对该文件的权限。
- 属组权限:文件用户组(g)对该文件的权限。
- 其它用户权限:系统其他用户(o)对该文件的权限。
(3)更改文件权限方法一
chmod [对象] [操作] [权限] [文件/目录名]
- 对象:
- u:表示文件所有者
- g:表示同组用户
- o:表示其它用户
- a:表示所有用户
- 操作:
- +:添加某个权限
- -:取消某个权限
- =:赋予给定的权限,并取消原有的权限
- 权限:
- r:可读
- w:可写
- x:可执行
(4)更改文件权限方法二
chmod [_ _ _] [文件/目录名]
- 将 r w x 看成二进制数,如果有则有1表示,没有则有0表示
- 例:文件权限为最高权限
rwx rwx rwx,二进制表示为111 111 111,换算后为777,所以命令为chmod 777 [文件/目录名]。
(5)改变文件拥有者和群组
chown [选项] [所有者]:[组] [文件]
- 选项
- -c 显示更改的部分的信息
- -f 忽略错误信息
- -h 修复符号链接
- -R 处理指定目录以及其子目录下的所有文件
- -v 显示详细的处理信息
- -deference 作用于符号链接的指向,而不是链接文件本身
2. 用户与用户组
(1)切换到root
sudo su
(2)切换到其它用户
su [用户名]
(3)创建用户
adduser [用户名]
useradd [用户名]
- 在root权限下,useradd只是创建了一个用户名,它并没有在/home目录下创建同名文件夹,也没有创建密码,因此利用这个用户登录系统,是登录不了的。
- 可以用
useradd -m [用户名]的方式创建,它会在/home目录下创建同名文件夹,然后用passwd [用户名]为指定的用户名设置密码。 - adduser创建新用户会在/home目录下会自动创建同名文件夹。
- 系统会在 /etc/passwd 文件中增添了一行记录。
(4)删除用户
adddel
(5)创建用户组
groupadd [组名]
(6)查看用户组
grep [组名] /etc/group
(7)删除用户组
groupdel [组名]
(8)修改用户组
sudo usermod -g [用户] [用户组]
- 如果用户已经是其他组的成员,需要添加 -a 这个选项
3. 开机脚本
(1)修改开机脚本
sudo vim /etc/init/rc-sysinit.conf
- 其中有一行
env DEFAULT_RUNLEVEL指系统当前启动后运行级别
(2)Ubuntu的runlevel级别定义
0 – Halt,关机模式。不能将系统缺省运行级别设置为0,否则无法启动。
1 – Single,单用户模式。
2 - Full multi-user with display manager (GUI)。
3 - Full multi-user with display manager (GUI)。
4 - Full multi-user with display manager (GUI)。
5 - Full multi-user with display manager (GUI)。
6 – Reboot,重启。不能将系统缺省运行级别设置为6,否则会一直重启。
- 2~5级是没有任何区别的。他们为多用户模式
(3)开机脚本使用原理
- init进程就会读取这个系统运行级别设置,然后运行
/etc/rc.d/rc脚本。 - 通过这个脚本,然后进入rcx.d。启动相应的程序。其中
rcx.d为/etc/rc.d/rcx.d(x为对应的系统运行级别)。 /etc/rc.d/rcx.d/下的文件均为符号链接,最终绝大部分都是都是链接到/etc/rc.d/init.d下面。/etc/rc.d/init.d目录下面的都是开启启动脚本文件,用来启动相应的程序。- 在rcN.d中,对于以K开头的文件,系统将终止对应的服务;对于以S开头的文件,系统将启动对应的服务。
(4)修改某开机启动服务为开机终止服务
sudo mv Sxxgdm Kxxgdm
(5)删除某开机自启动文件
sudo update-rc.d –f xxx remove(其中xxx是文件名中除了S和K以外的非数字部分)
(6)写一个开机脚本并添加
- 在/etc/init.d文件夹下编写一个新的脚本文件
xx.sh。 sudo chmod给脚本文档设置权限。- 将脚本的路径写入
/etc/init.d/rc.local中。 sudo update-rc.d xx.sh defaults [启动顺序]
4. 环境变量
- PATH决定了shell将到哪些目录中寻找命令或程序。
(1)临时修改环境变量
export PATH=$PATH:[目录]
- 每当登出或注销系统以后,PATH 设置就会失效
(2)修改环境变量
vim /etc/profile
- 在文件中添加PATH="目录:$PATH"
source /etc/profile
- 新PATH立即生效
5. 常见问题:新建用户后,新用户无法使用sudo的解决方法
错误提示:
xxx is not in the sudoers file.This incident will be reported.
错误原因:
- 执行sudo命令的用户不在sudoers文件的列表中。
解决方法:
在原用户中切换到root下:
sudo su
添加sudo文件的写权限:
chmod u+w /etc/sudoers
编辑/etc/sudoers文件:
找到 root ALL=(ALL) ALL
在下面添加 [新用户名] ALL=(ALL) ALL退出的时候撤销sudoers文件写权限
chmod u-w /etc/sudoers
参考资料
参考资料1:Linux及安全——Linux基础实践
参考资料2:实践一:Linux基础实践
参考资料3:deb包构建手册
参考资料4:ubuntu常见错误--Could not get lock /var/lib/dpkg/lock解决
参考资料5:每天一个linux命令目录
参考资料6:深入理解linux下rc.d/目录文件以及程序开机自启动
参考资料7:xxx is not in the sudoers file.This incident will be reported.的解决方法
Linux课程实践一:Linux基础实践(基础操作)的更多相关文章
- 尚学linux课程---4、linux网络配置及linux文件
尚学linux课程---4.linux网络配置及linux文件 一.总结 一句话总结: linux下的etc目录是配置文件的目录,所以很多的文件配置操作都可以看到它的身影:比如 init系列命名,比如 ...
- Linux课程---11、Linux中软件安装和调试
Linux课程---11.Linux中软件安装和调试 一.总结 一句话总结: 启动过程:1.安装软件,2.修改配置文件,3.启动服务 查看过程:4.查看进程,5.查看端口 关闭过程:6.关闭软件,7. ...
- Linux课程---8、Linux启动流程
Linux课程---8.Linux启动流程 一.总结 一句话总结: grub启动引导界面(比如装了多系统,选择系统),找到linux内核 启动init程序,加载各种驱动 1.进入grub界面选择相应的 ...
- Linux课程---4、Linux目录结构及常用命令(目录结构)
Linux课程---4.Linux目录结构及常用命令(目录结构) 一.总结 一句话总结: 家目录:./root:root用户的家目录 能执行的程序:./bin:所有用户都能执行的程序:./sbin:只 ...
- Linux课程---3、Linux远程登录和传输(操作Linux服务器软件)
Linux课程---3.Linux远程登录和传输(操作Linux服务器软件) 一.总结 一句话总结: xshell:Xshell是一个强大的安全终端模拟软件 Xshell是一个强大的安全终端模拟软件, ...
- Linux课程---2、Linux下最常用命令(查看帮助命令)
Linux课程---2.Linux下最常用命令(查看帮助命令) 一.总结 一句话总结: man 1.显示文件? ls:ls带其它参数详情可以man ls man ls:比如 ls -a显示隐藏文件,l ...
- 尚学linux课程---10、linux环境下安装python
尚学linux课程---10.linux环境下安装python 一.总结 一句话总结: 直接在官网下载python的源码包即可,然后在linux下安装 linux下安装软件优先想到的的确是yum,但是 ...
- 尚学linux课程---7、linux系统管理命令
尚学linux课程---7.linux系统管理命令 一.总结 一句话总结: 查网络:netstat -ntpl 查进程:ps 1.需要下载163yum源(从外部源同步仓库)里面的所有rpm文件? re ...
- 尚学linux课程---6、linux命令介绍
尚学linux课程---6.linux命令介绍 一.总结 一句话总结: linux中命令的一般格式:命令关键字 选项 参数1 参数2 1.linux基本原则? 一切皆文件 配置文件保存为纯文本格式 2 ...
- 尚学linux课程---5、linux操作系统介绍
尚学linux课程---5.linux操作系统介绍 一.总结 一句话总结: centos开源免费,用的特别多 1.库是什么意思? 没有执行入口的应用程序 2.linux和window下的动态库文件是什 ...
随机推荐
- hdu4666 Hyperspace ——曼哈顿距离
link:http://acm.hdu.edu.cn/showproblem.php?pid=4666 这题学会了怎么处理曼哈顿距离. 比如维数是k,那么每个点有2^k个状态,求出在每个状态下,所有点 ...
- vs2010编译出的exe“应用程序无法正常启动(0xc0150002)”
今天编译出一个使用ogre1.6.5动态库的应用程序,启动时报"应用程序无法正常启动(0xc0150002)"的错误提示. 编译环境是Win10+VS2010.这个错误可以在Win ...
- js封装的方法
1.JS封装就是尽量把使用的方式简单化,内部逻辑和使用解耦.通俗的说就是使用的时候只需要知道参数和返回值,其他条件尽量不要使用人员进行设置. 2.JS封装的方法有函数方式.对象的方式.闭包的方式. 举 ...
- DuoCode测试
http://duoco.de/ DuoCode 只能引用自己编译的DLL,不能引用外部DLL.这么做可以保证”代码编得过,就一定能跑“. SharpKit 遇到过这样的问题.在代码中使用了 list ...
- vb6 关闭显示器
Option Explicit Private Const WM_SYSCOMMAND As Long = &H112 Private Const SC_MONITORPOWER As Lon ...
- 50 道 Java 线程面试题(转载自牛客网)
下面是 Java 线程相关的热门面试题,你可以用它来好好准备面试. 1) 什么是线程? 线程是操作系统能够进行运算调度的最小单位,它被包含在进程之中,是进程中的实际运作单位.程序员可以通过它进行多处理 ...
- 转载:使用命令行启动VirtualBox虚拟机
使用命令行启动VirtualBox虚拟机 装上VirtualBox就琢磨着如何让它开机自动启动,又或者能够通过命令行的形式直接启动指定的虚拟机. 看了下VirtualBox的官方文档,发现有一个命令可 ...
- access数据库select查询top时无效的解决办法
access数据库select查询top时有时无效,原因就是在使用Order by时,且排序的条件中数据有重复的. 比如:select top 10 * from table1 order by cd ...
- ES6 Set和Map
一.Set遍历方法: set.key() set.values() set.entries() 二.Set例子: var s = new Set(); var arr = [1,1,2,3,6,8,8 ...
- C++常见gcc编译链接错误解决方法
除非明确说明,本文内容仅针对x86/x86_64的Linux开发环境,有朋友说baidu不到,开个贴记录一下(加粗字体是关键词): 用“-Wl,-Bstatic”指定链接静态库,使用“-Wl,-Bdy ...