Linux笔记_1
用户
-
可以查看
/etc/passwd文件, 得到系统用户信息- 这个目录最早用来存储用户密码的哈希, 但是所有用户都可以访问
- 现在用户密码的哈希存储在
/etc/shadow中, 只有root可以访问
-
如果执行
apt update发现权限不足, 可以使用sudo !!进行补救, 因为!!表示上一条命令
用户组
- 一组用户的集合, 使用
groups命令查看当前用户组 - 一般用户在创建的时候, 都会创建一个与用户名相同的用户组
添加用户
Debian系列使用adduser可以实现添加用户, 添加组, 将用户添加到组- 添加用户:
sudo adduser 用户名 - 添加组:
sudo adduser --group 组名 - 将用户添加指定用户组:
sudo adduser 用户名 组名 - 一般创建的用户没有
sudo权限, 可以将用户添加到sudo用户组中
- 添加用户:
文件
文件权限
ls -l可以查看文件的详细信息- 第一位是文件类型:
-表示普通文件,d表示目录 - 接下来三位是所属用户的权限
- 再三位是所属用户组的权限
- 最后三位是其他人的权限
- 第一位是文件类型:
文件层次
Linux下所有的文件从/开始, 以树结构的形式, 其他的分区以挂载的形式挂在了树上
| 目录 | 内容 |
|---|---|
/bin |
存放程序文件, 所有用户均可用 |
/boot |
存放启动系统的文件 |
/dev |
存放设备文件 |
/etc |
存放系统和配置文件 |
/home |
存放用户的信息 |
/lib |
存放程序库文件 |
/media, /mnt |
都用于挂载其他文件系统, /media用于挂载可移除文件系统, /mnt挂载临时使用的文件系统 |
/opt |
存放额外的程序包, 一些大型 商用程序 |
/root |
root用户的家目录 |
/srv |
存放网络服务数据 |
/usr |
大多数软件存放于此 |
/tmp |
临时目录, 所有用户均可使用 |
/var |
存放会发生变化的程序的相关文件 |
特殊权限位
/etc/shadow存储密码, 只有root用户可以查看修改, 但是普通用户可以通过passwd查看和修改自己的密码- 这是因为有三个特殊权限位
| 权限 | 解释 |
|---|---|
setuid |
以文件所属的用户身份执行此程序 |
setgid |
对文件来说, 以文件所属用户组的身份执行此程序, 对目录来说, 在这个目录下创建的文件的用户组都与目录的用户组一致, 而不是文件本身的用户组 |
sticky |
目录中的所有文件只能由除了root以外的所有者删除或者移动 |
比如
/tmp下, 可以删除修改自己的文件, 无法删除修改别人的文件
ls -l /usr/bin/passwd查看文件, 可看到权限为-rwsr-xr-x,s表示有特殊权限位setuid
实际用户与有效用户
- 使用
sudo命令修改passwd, 文件却知道具体用户是你, 而不是root - 这是因为有两个获取当前进程
UID的函数,getuid(), geteuid - 前者对应实际用户, 后者对应有效用户, 使用
sudo命令, 前者是自己, 后者是root
I/O重定向
echo "hello world" > file可以将hello world输入到file中, 如果不存在则会创建, 如果已存在则覆盖echo "new" >> file可以将new追加到file中, 如果不存在则创建, 如果已存在则追加
wget
- 使用
HTTP, FTP协议从网上下载 - 可以在用户注销以后的后台工作, 支持断点续传
curl
- 可以下载文件, 也可以模拟
web请求
文本处理
wc file可以统计文本行数, 单词数, 字节数- 如果包含中文, 可以使用
wc -m file统计宽字符
- 如果包含中文, 可以使用
diff file1 file2比较两个不同的文件, 列出差异-b忽略空白字符的数量变化,-w忽略空白字符
head, tail查看文本开头末尾head -n 24 f查看文本开头24行head -24 f查看文本开头24行tail -c 10 f查看文本结尾10个字节tail -f filetail命令独有, 持续输出文本末尾新增加的内容
grep查找文本内容grep -i "System" f查找文本中包含System的行grep -R "hello"递归查找当前目录下包含hello的文件
sed替换文本字符串sed 's/hello/world/g' f使用world全局替换文本中的hello输出sed 's/hello/world' f使用world替换文本第一个hello输出sed -i 's/hello/world/g' f使用-i表示直接写入文件sed -i.bak 's/hello/world/g' f使用-i.bak可以备份到f.bak中再写入f
shell
| 位置变量 | 含义 |
|---|---|
$# |
命令行参数个数, 不包括$0 |
$? |
最后命令退出代码, 0表示成功, 其他表示失败 |
$$ |
当前进程的PID |
$! |
最近一个后台运行进程的进程号 |
$* |
所有参数构成一个字符串 |
$@ |
使用双引号扩起所有参数构成字符串 |
-
read读取用户输入, 使用-p添加提示, 使用-r避免转移字符 -
echo输出,-e解析转义字符,-n结尾不换行 -
sort
| 选项 | 功能 |
|---|---|
-r |
倒序 |
-o |
输出指定文件 |
-u |
去除重复 |
-n |
数值排序, 否则是字典序 |
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 Sangs Blog!