unbuntu-2
Ubuntu学习笔记2#
[TOC]
用户管理#
用户管理操作中,需要有root
超级用户的权限,要不然无法操作
sudo
表示以管理员身份执行
Linux下,能执行sudo
命令的用户叫做 sudoer
1 | echin@i:~$ useradd es |
切换用户#
可以看到echin
用户并没有权限操作用户管理
su
= switch user
1 | echin@i:~$ sudu useradd -m test |
所以需要切换用户到超级用户
1 | su root |
1 | echin@i:~$ su root |
添加用户#
m
表示在/home
下添加用户目录
1 | sudo useradd -m test |
例子
1 | root@i:/# sudo useradd -m test1 |
修改用户密码#
1 | sudo passwd test1 |
例子
1 | root@i:/# sudo passwd test1 |
删除用户#
1 | sudo userdel test1 |
例子
可以看到,我们虽然删除了用户,但是/home/test1
这个目录不会删除
1 | root@i:/# sudo userdel test1 |
推出#
1 | exit |
用户和组(不用着重了解)#
因为一般来说Linux
中不会有很多用户,所以不需要组这个概念
所以我绝对这下面的命令不需要知道,只要问gpt
一下
创建组#
1 | sudo groupadd boys |
创建用户#
g
表示添加用户,同时将用户加到``boys`里面
1 | sudo useradd -m -g boys xiaoMing |
修改用户信息#
1 | sudo usermod -g boys echin |
查看用户和组#
查看group
的信息
1 | cat /etc/group |
查看一个用户的信息
1 | cat /etc/passwd |
文件权限#
owner
文件的属主owner
-r
文件是否可读read
-w
文件是否可写write
-x
文件是否可以执行excute
如果系统中有用户 a 和 b
一个文件 xx.txt,由 a 创建
那么 b 是否可以访问这个文件,是否可读,是否可写
查看权限#
1 | ls -l xx.txt |
例子
1 | root@i:/# cd /home/echin |
-rw-rw-r--
表示文件的权限1
表示目录中有多少文件echin
创建文件的owner
echin
组10240
文件的大小May 30 12:56
创建或修改时间xxx.tar
文件的名称
权限字符的详解#
例子 : -rw-r--r--
第一个字符 :
-
-
表示文件d
表示目录l
表示软链接
r w - | r - - | r - -
=自己 | 同组 | 别人
分别表示 自己有什么权限 | 同组的人有什么权限 | 别人有什么权限
每个部分的解释
r w x
分别表示可读 可写 可执行
如果是
-
就表示 不能读/写/执行解释:
r w - | r - - | r - -
表示
自己可读可写不可执行|同组的人可读不可写不可执行|别人可读不可写不可执行
- 解释二
r w x
为可读可写可执行
修改文件的权限#
文件权限的修改只能由 文件的属主 和 超级用户 修改
1 | chmod # change file mode |
如果给 xx 添加给别人的可读权限
1 | chmod o+w example.txt # 表示添加别人可写的权限 |
a
表示all
,是所有人的意思u
表示user
, 是自己的权限o
表示other
, 是别人的权限
省略的写法
1 | chmod +w simple.txt # 默认修改自己和同组的权限 |
修改文件的属主#
一般来说,每个用户只操作自己的用户目录,所以 chown
命令并不常用
1 | chown # change owner |
可执行脚本#
脚本 script
,一种解释执行的程序
Linux
下常见的三种脚本程序
Shell
脚本*.sh
Perl
脚本*.pl
Python
脚本*.py
脚本程序,本质是一个文本文件,这些程序都是由解释器来执行的
如果要执行文件就直接 hello.py
- 他是一个文本文件
- 它具有可执行的权限
类似于这个:
Shell 脚本#
Shell
,是Linux
自带的脚本语言
他其实可以做循环,判断,每一行都是一个命令
1 | touch xx.sh |
下面是我运行的图片
1 | !/bin/sh |
- 发现第一次创建
hello.sh
的时候这个文件并没有权限执行,所以需要添加权限 - 使用
nano
文本编辑器进行编辑,因为我没有其他的,这个是自带的 - 编辑好了以后
ctrl + x
退出 - 很多时候可以看颜色判断是否可以执行,白色就是不行
Python 脚本#
Python
脚本比Shell
更加强大
1 | touch xx.py |
下面看示例(具体过程和shell一样):
1 | #!/usr/bin/env python3 |
环境变量#
作用域:
- 可以在当前终端中使用
- 可以在
shell
脚本中调用
在命令行中定义的环境变量,只对当前的SHELL终端有效
当关闭终端后,重启后就消失了
分类:
- 系统环境变量
- 用户环境变量
- PATH环境变量(比较特殊,所以特地拿出来讲)
- 创建/修改环境变量#
这个内容后面都会提到,这里不需要太执着
注意这个=
要和旁边两个东西紧密相连
1 | export VARIABLE_NAME=VALUE |
设置path
变量
1 | export PATH=$PATH:/additional/path |
- 显示所有环境变量#
1 | env |
- 刷新环境变量#
如果你不使用下面这个命令,那么每次修改完环境变量都需要注销登录
1 | source /etc/profile.d/myprofile.sh |
用户环境变量#
“用户环境变量”和”环境变量”这两个术语在很多情况下可以互换使用
环境变量是操作系统中的一个变量
用户环境变量是特定于某个用户的环境变量,每个用户都有自己的配置文件
定义在 ~/.profile
的脚本文件之中,而这个脚本文件存在于主目录之中
主目录 和 根目录 的区别:
主目录是在
/home/username
之下的目录根目录是
/
开头的目录
在主目录下使用:ls -la
在Linux下,以
。
开头的文件为隐藏文件
1 | root@i:/home/echin# ls -la |
通过 nano .profile
进入编辑
然后进入编辑…..
编辑好后一定要注销用户后才能生效
系统环境变量#
定义在 /etc/profile
的脚本文件中,这里的环境变量对 所有用户 有效
touch /etc/profile.d/myprofile.sh
nano /etc/profile.d/myprofile.sh
写一点命令就行了
但是 , 一般来说不直接修改 ``/etc/profile`
而是在
/etc/profile.d/
创建一个自定义的脚本,因为ect/profile
中会嵌套调用前者
系统配置文件和初始化脚本都是放在
etc
目录下面的,且这个目录必须需要超级用户修改
PATH 环境变量#
PATH 一定要大写; 修改
PATH
的时候与等号要贴贴,结构为PATH=$PATH:
先看一段代码:
为什么会找不到``hello.sh`这个脚本文件,明明他是存在的
或者说我们是根据什么来找的
1 | @i:/home/echin# cd /home/echin |
PATH
环境变量 是用来描述 可执行程序的搜索路径 (注意要全大写)
就是执行一个程序的是否,系统会从一个路径下面来搜索
显示PATH 环境变量
1 | echo $path |
1 | root@i:/# echo $PATH |
同时多个路径之间用冒号分隔
usr/local/bin:/usr/local/sbin:/usr/bin:/usr/sbin
usr/bin
是普通用户,usr/sbin
是超级用户
所以,我们可以明白,当我们使用hello.sh
的时候会从PATH
的一堆目录中寻找,但是这堆目录中并没有找到我们要的脚本文件,所以我们需要写路径才能执行
解决方案:
1 | root@iZbp19bvr4g3vqr24ft07rZ:/# nano /etc/profile.d/myprofile.sh |
编辑环境变量
再注销后登录:
1 | root@i:~# hello.sh |
完成了❤️
小事故#
因为我一开始并没有创建 myprofile.sh
这个文件,所以我刚刚在添加路径的时候好像直接把命令修改在了 .profile
文件里了,导致我直接所有路径都没有了,哈哈哈
解决方法是:
设置临时 PATH
1
export PATH=/bin:/usr/bin:/sbin:/usr/sbin:/opt/bin
编辑相应的文件
1
nano ~/.profile
添加之前的路径
1
export PATH=$PATH=export PATH=/bin:/usr/bin:/sbin:/usr/sbin:/opt/bin
最后测试是否成功
1
echo $PATH
再来进行我们的修改路径的操作:
成功啦💕💕💕💕💕
总结#
不同的环境变量的路径不一样
- 用户环境变量:
~/.profile
- 系统环境变量:
- 如果要自定义:
/etc/prfile.d/myprofile.sh
- 总的系统环境变量:
/etc/profile
- 如果要自定义:
- 用户环境变量:
PATH
环境变量其实是属于前面两个环境变量之中的,所以不要把他独立出来,要处理PATH
环境变量的时候也需要再对应的文件中处理,不过如果只是临时设置的话就无所谓,直接export PATH..
PATH
一定要大写