Linux学习
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Linux学习相关的知识,希望对你有一定的参考价值。
前言:接着上一篇Linux学习(一)
1.用户,组和权限
2.文本处理工具
3.vim文本编辑器
4.shell脚本编程基础
一,用户,组和权限
1.用户
1.管理员:root,0
普通用户:1-65535
shell 交互式登录
非交互式登录 /etc/nologin
2.有关用户和用户密码的基本命令
vim 查看修改,有颜色
cat 查看
cat/etc/passwd 查看用户信息,显示7列,以 : 分隔
登录名:密码:UID:GID:GECOS:家目录:登录的shell
GID:主要组的组id,附加组的在group文件中
shell:空白默认为最传统的 sh shell
cat/etc/shadow 查看用户密码,显示9列
pwconv 将passwd当中的密码映射到了 /etc/shadow
映射后的passwd $id$salt$加密后的字符串
salt不一样,即使id一样,密码字符串不一样
vim /etc/shadow-
pwunconv 取消映射,密码仍然放在/etc/passwd
用户名:密码:密码上次修改的日期:密码的最小存活期:密码的最大存活期:密码过期前几天提醒:密码过期后不改密码触发用户过期的时间:用户过期时间:保留位
密码上次修改的日期:距离到1970.1.1的天数(Linux开发出来的日期)
最小存活期:存活期前不能更改密码 " " date +%s
2.组
1.有关组和组密码的基本命令
cat /etc/group 组 4列
组名:组密码:GID:组成员
组密码:当临时需要获取组信息,进入时需要输入密码
通常没有密码需要创建,没有密码无法临时加入,只能root永久加入
组成员:附加组成员
/etc/gshadow组密码
grpconv 将组密码映射到了/etc/gshadow
grpunconv 取消组密码的映射
组名:组密码:管理员:组成员
3.有关用户和组的其他命令
1.用户
useradd/adduser 创建用户
-u 指定UID 默认从1000开始往后
-o 与 -u 配合,不检查UID的唯一性
xiaohuihui和huitailang 同一个UID,顺序优先先创建的
-g 指定用户的主要组为某个已存在的组,可以指定GID也可以指定组名
-G 指定附加组 以逗号为间隔可以同时指定多个,组必须事先存在,可以指定GID也可以指定组名。
-c 注释信息
-d 指定目录路径 ,如不指定默认在/home下与用户同名。指定时注意,目录名需已存在,基名不存在。
-s 指定登录shell如下
-N 不创建私用组做主组,使用users组做主组
-r 创建系统用户 (centos 6及之前的版本 < 500, centos 7 < 1000)
usermod 修改用户信息
-u NEWUID 用户名 修改用户的uid
-g NEWGID 用户名 修改用户的主要组 可以指定组名,也可以指定GID
-G GID或组名[,组名] 用户名 设定用户的附加组为哪些组,这前的附加组信息被覆盖
-a 与-G 结合,-aG 使用可以增加用户的附加组,而不会影响之前的附加组
-s shell名 用户名 修改用户的Shell=chsh -s shell 用户名
-c "描述信息" 设置用户的描述信息 =chfn
-d /path 用户名 修改用户的家目录,新家目录不会自动创建
-m 把用户原来家目录下的文件移到新的家目录
-d -m 若要创建新家目录并移动原家数据,同时使用-m选项
-l newname 用户名 修改用户的名称
-L lock指定用户,在/etc/shadow 密码栏的增加 ! 等同于passwd -l
-U unlock指定用户,将 /etc/shadow 密码栏的 ! 拿掉 等同于passwd -u
-e YYYY-MM-DD 指明用户账号过期日期
-f 设定非活动期限
userdel 删除用户
-r 删除用户名连同家目录及邮箱文件一起删除
2.组
groupadd 创建组
-g GID 组名 创建组
groupmod 修改
-n newname 组名 修改组名
-g newgid 组名 修改组id
groupdel 删除组
-r 删除组名连同成员所有的信息
groupmems 对组成员进行操作 仅root执行
-g 组名 -a 用户名 将某用户以附加组方式加入到某组当中
-g 组名 -d 用户名 将某用户从指定组当中踢出
-g 组名 -p 清空所有组成员
-g 组名 -l 查看指定组有哪些成员(仅显示附加组)
groups 用户名
查看指定用户属于哪些组(包含主组和附加组)
newgrp 组名(普通用户执行)
非附加组成员的普通用户在正确输入组密码后可以使用该命令临时变更主要组.
附加组成员的普通用户无需输入密码可以使用该命令临时变更主要组. 原主要组临时变成附加组
passwd username 修改密码
普通用户改密码 需要先输入旧密码 不符合要求的密码被拒绝重新输入
root改密码 直接输入新密码 任意设置密码
passwd -l 锁定用户 实际就是在密码位前加!!
-u 取消用户锁定
-e 强制用户下次登录时更改密码
-n 指定最短使用期限
-x 最大使用期限
-w 提前多少天开始警告
-i 非活动期限
--stdin username 从标准输入接收用户密码 显示密码 只输入一次 只有root可以
gpasswd 设置组密码 管理员可以执行
-a 用户名 组名 将某用户以附加组方式加入到某组当中 管理员可以执行
-d 用户名 组名 将某用户从指定组当中踢出 管理员可以执行
-M 用户名[,用户名...] 组名 设置某组的用户列表 仅root执行
-A 用户名[,用户名...] 组名 设置某组的管理员列表 仅root执行
组管理员在不是组成员的情况下,仅能修改组密码,和将其他人加入组和踢出组,但并不具有组成员的权限
3.其他
id -u 显示UID
-g 显示GID
-G 显示用户所属的组的ID
-n 显示名称,需配合-u -g -G使用
su username 表示非登录式切换 需要输入密码
su - username 表示登录式切换
su - 表示登录root
当前用户是root时,切换到其他用户不要密码
chage (修改文件 不建议使用 容易出错)
-d 上一次修改时间
-E 密码过期时间
-I(大写i) 密码过期之后账户过期
-m 最小存活期
-M 最大
-W 提醒
-l 显示密码策略 查看修改密码信息
示例:
chage -d 0 tom 下一次登录强制重设密码
chage -m 0 –M 42 –W 14 –I 7 tom
chage -E 2016-09-10 tom
4.权限
1.默认权限
chown 更改文件的所属人,只有root可以操作
用户名 filename 只更改owner
用户名.组名 filename 或 用户名:组名 filename 同时更改owner和group
如果.或:前省略,则只改group
-R 递归
chgrp 组名 filename
文件的owner可以使用chgrp修改文件的group,但该owner一定要属于目标group
-R 递归
权限的表示形式
-owner-group-other
read-r write-w exe-x
d 表示目录
chmod 修改权限
r:4 w:2 x:1
可以随意组合
-R 递归
X:只给目录及已有部分x权限的文件加上x权限,不给三个权限位完全没有x的文件加x
文件权限
当仅r权限作用在文件上的时候,用户可以读取该文件的内容:cat less more head tail
当仅w权限作用在文件上的时候,用户可以修改文件的内容:>>
当仅x权限作用在文件上的时候,无作为.
当rw权限作用在文件上的时候,用户即能读与能修改:cat less more head tail vim nano > >>
当rx权限作用在文件上的时候,用户可以执行该文件
当wx权限作用在文件上的时候,权限等同于仅w权限.
文件的常见权限是r-- rw- rwx
目录权限
当仅r权限作用在目录上的时候,用户可以短列出目录下的文件名.
当仅w权限作用在目录上的时候,无作为.
当仅x权限作用在目录上的时候,用户可以进入该目录,并且在知道具体文件名且具有相关权限的情况下,可以访问子文件.
当rw权限作用在目录上的时候,权限等同于仅r权限
当rx权限作用在目录上的时候,用户进入,长列出.
当wx权限作用在目录上的时候,用户可以进入且可以创建及删除文件.但不能使用文件名通配符
目录的常见权限r-x rwx
2.特殊权限
工具和文件都拥有权限
which 查看绝对路径
对工具拥有权限对文件没有权限不能查看文件
suid权限(文件),可执行的二进制文件,可以临时调用所属人的权限
chmod u+s 临时调用文件所属人的权限
sgid权限(目录)目录所属组的权限
chmod g+s 对目录操作了sgid权限,任何人在该目录下所创建的文件所属组都与该目录的所属组相同
sticky权限 进行删除操作的权限
chmod o+t 该目录下的文件只能root,目录的所属人和文件的所属人删除
权限位上原本有x的,加上特殊权限时,为小写
原本没有x的,加上特殊权限时,为大写
实验:刘备关羽张飞三个用户有一个共享目录叫shuguo,要求三人的主组不一样的情况下,三人在Shuguo目录下所创建的文件,彼此之间可以读取及修改,但不能删除其他人创建的文件
验证
文件特定权限
chattr +a 不能删除,改名,修改,可以追加
+i 不能删除,改名,修改,追加
lsattr 查看权限及属性
3.ACL
acl:除了文件的所属人,所属组,其他,还可以进行更多的设置用户权限
acl生效顺序:所有者,自定义用户,自定义组,其他人
CentOS7中的所有文件系统是划分的文件系统均已默认开启acl
CentOS6随着操作系统安装所有文件系统是话费的文件系统均已默认开启acl
为多用户或者组的文件和目录赋予访问权限rwx
getfacl 查看权限信息
setfacl -m 设置user的acl权限
-x 删除设置的user的acl权限
setfacl -b 删除权限包括acl权限属性
setfacl -m m 设置权限上限阀值,修改权限无法超过上限阀值,不显示但是是有效的
setfacl -d -m
-m d 设置默认权限
setfacl -k 清除默认权限
setfacl -Rm 递归设置,设置的目录及该目录下的所有目录和文件都被设置权限
setfacl -M file1 file2 file1是写有权限的文件,把写有的权限设置file2
setfacl -X file1 file2 file1是写有取消权限的文件,对file2进行取消权限设置
acl权限的备份及还原
umask值
umask值可以存储在/etc/bashrc当中,使所有用户均被设置
也可以存在~/.bashrc只对某用户设置
文件最高权限 666
目录最高权限 777
默认权限=最高权限-umask
文件权限,如果umask 有奇数,也就是含有-x ,计算完要加1
5.其他
手工创建家目录的方法
mkdir /home/username
chmod 700 /home/username/
cp -r /etc/skel/.[^.]* /home/username/
(..为上一级目录,/etc/skel 新创建的用户的初始化环境变量脚本都在这个目录下)
chown -R username.usename /home/username
cat /etc/passwd |grep username 检索
|grep -E "maidou|biubiu" 同时都检索
2.文本处理工具
1.各种文本工具来查看、分析、统计文本
cat 查看
cat -E 显示换行符$
cat -n 输出的结果前显示行号
cat -v 显示^M,即windows的换行符
cat -T 显示^I 即tab
cat -A = -EvT
cat -b 输出的结果前显示行号,非空行不参与排列
cat -s 将连续的空行压缩为一行
head 向前截取
head -c N 指定截取前N字节
head -n N 指定截取前N行
head -N 指定获取N行
tail 向后截取
tail -c N 指定截取后N字节
tail -n N 指定截取后N行
tail -N 指定截取N行
tail -f 跟踪显示文件新追加的内容,常用于日志监控
cut 切割
cut -d 指明分隔符
cut -f N ; N,N ; N-N 指明字段
cut -c 按字符一个一个切割
cut --output-delimiter=" " 指定输出分隔符
paste 合并俩个文件,同行的内容在一行显示
paste -d 分隔符:指定分隔符,默认用TAB
paste -s : 所有行合成一行显示
wc 文本数据统计
wc -l 行数
wc -w 单词总数
wc -c 字节总数
wc -m 字符总数
sort 排序
sort -r 反方向(由上至下)整理
sort -n 按数字大小整理
sort -f 忽略(fold)字符串中的字符大小写
sort -u (独特, unique)删除输出中的重复行
sort -t c 使用c做为字段界定符
sort -k X 列
uniq 删除重复的行数
uniq -c: 显示每行重复出现的次数
uniq -d: 仅显示重复过的行
uniq -u: 仅显示不曾重复的行
连续且完全相同方为重复
diff f1 f2 比较2文件之间的区别
patch 复制其他文件进行的改变
2.grep
grep 关键字高亮显示
grep -v 反向搜索
grep -i 忽略大小写
grep -n 显示行号
grep -c 不显示搜索结果,仅显示匹配的行数
grep -o 仅显示匹配到的字符串
grep -q 静默输出
grep -A N 显示搜索行及其向下相临的N行
grep -B N 显示搜索行及其向上相临的N行
grep -C N 显示搜索行及其向上和向下相临的N行
grep -e -e 多个选项间or关系
grep -w 匹配整个单词
3.正则表达式
元字符
位置锚定:定位出现的位置
^ 行首锚定,用于模式的最左侧
$ 行尾锚定,用于模式的最右侧
^ .. $ 用于模式匹配整行
^$ 空行
^[[:space:]]\*$ 空白行
\< 词首锚定,用于单词模式的左侧
\> 词尾锚定;用于单词模式的右侧
\< .. \> 匹配整个单词
分组
\( .. \) 将一个或多个字符捆绑在一起,当作一个整体进行处理,如: \(root\)
\1, \2, \3, .. 分组括号中的模式匹配到的内容会被正则表达式引擎记录于内部的变量中
\1 表示从左侧起第一个左括号以及与之匹配右括号之间的模式所匹配到的字符
后向引用:引用前面的分组括号中的模式所匹配字符, 而非模式本身
\| 或者
4.扩展正则表达式
元字符
egrep
egrep=grep -E
fgrep=grep -F 不支持正则表达式
3.vim文本编辑器
vim
三种主要模式
命令模式 (default): 移动光标,复制,剪切,粘贴,撤销,重做,搜索,进入其他模式
移动光标: k
h j l
配合 !h,!l, ! j, ! k可一次性移动 ! 个字符
w 跳到下一个单词的词首
b 跳到上一个单词的词首
H 跳到当前页首
M 跳到当前页中
L 跳到当前页尾
gg 跳到整个文件的首行
G 跳到整个文件的末行
^ 移到非空格开头的行首
$ 移到行尾
!G 跳到指定 ! 行,或退出模式下 : !
r 替换一个字符
d 剪切
dd 剪切当前行
!dd 剪切 ! 行
dw 剪切一个单词
d^ 从光标所在处剪切到行首
d$或D 从光标所在处剪切到行尾
y 复制
yy或Y 复制当前行
! yy 复制 ! 行
yw 复制一个单词
y^ 从光标所在处复制到行首
y$ 从光标所在处复制到行尾
p 粘贴
p 当前行向下粘贴或光标所在处向后粘贴
P 当前行向上粘贴或光标所在处向前粘贴
替换模式 R进入 Esc退出
从命令模式进入插入模式
插入模式:文本编辑
i 光标在哪从哪进入
I 光标移至行首同时进入插入模式
a 光标向后移一个字符同时进入插入模式
A 光标移至行尾同时进入插入模式
o 光标向下插入一新行同时进入插入模式
O 光标向上插入一新行同时进入插入模式
退出模式:保存、退出
w 保存
q 退出
q! 强制退出
wq或x 保存并退出
w!当前用户为该文件所属人时,如果该文件为read only,可加上!强制保存。
在退出模式下返回命令模式EscEsc或Enter
r /path/filename 读取另一个文件的内容并将输出结果写入文件
w /path/filename 另存为(确认当前用户对该路径中的最后一级目录有wx权限)
! command 执行某条命令,将输出结果显示在终端上
r! command 执行某条命令,在光标所在的当前行向下插入新行并将输出结果输入
.! command 执行某条命令,替换光标所在的当前行并将输出结果输入
搜索
?关键字
n向上找 N向下找
以上是关于Linux学习的主要内容,如果未能解决你的问题,请参考以下文章