我在阿里云学习Linux,下面是我的学习笔记:
cat > f1
会把每行输入的内容写入f1,称为单行重定向
cat > f2 << ?
多行重定向(就地文本),?为任意字符(建议用EOF,end of file),当单独输入? 时,系统才会把之前写的所有内容重定向到f2
多行重定向常用于创建文件
管道:
command1 | command2
把第一个命令的输出传给第二个命令,作为第二个命令的输入
command1 | command2 | command3...
是可以这样连续传递的
实现1加到100的第二种方式:
echo {1..100} | tr ' ' + | bc
当前一个命令不是标准输出时:
errorcmd 2>&1 | tr 'a-z' 'A-Z'
或者errorcmd |& tr 'a-z' 'A-Z'
(老版本不支持)
tee
重定向到多个文件
command | tee file
让命令结果既可以重定向到file文件里面,又可以打印出来(会覆盖已存在文件)
command | tee -a file
追加内容
因为加上tee时就有了输出,所以可以配合管道,既保存结果,又继续向下执行命令
df
查看分区的使用情况
文件的查找和压缩:
locate
查找文件
安装locate:yum install mlocate
(查找自己的mlocate数据库,且不会实时更新,所以新建的文件,locate数据库找不到,updatedb
更新locate数据库)(locate一般用于搜索相对比较固定的文件,而且不是精确搜索,而是包含搜索)
-i
不区分大小写
-n num
只看前num个
find
查找文件:
实时查找,通过遍历指定路径完成查找
特点:查找速度慢、精确查找、实时查找、可能只搜索用户具备读取和执行权限的目录
find [option]…[path][condition][action]
查找路径path默认为当前目录
查找条件condition默认为指定路径下所有文件
处理动作action默认输出到屏幕
-maxdepth num
规定find查找的最大深度
-maxdepth num1 -mindepth num2
规定find查找的最大和最小深度,如果num1=num2=k,则只搜索k那一深度的文件。
-name filename
根据文件名查找
-iname filename
忽略大小写
-inum n
按节点编号查找
-samefile name
查找和name文件相同节点编号的文件
-links n
查找链接数为n的文件
-user username
查看某个用户拥有的文件
-empty
搜索空文件或目录
组合条件:
与 -a
(默认)
或 -o
非 -not
,!
用户,组和权限:
普通用户分为:系统用户(指某些需要以用户登录的程序)和登录用户
组:相当于多个权限相同用户的集合
Windows里面用户名和组名不能同名
Linux里面用户名和组名可以同名
用户编号叫uid,组的编号叫gid
一个用户账户可以加入到多个组里面,拥有多个组的累加权限
安全上下文 context:环境
运行中的程序叫进程,进程能访问的资源权限取决于运行者的身份
组的类别:主要组(用户必须属于一个且仅一个主要组)和附加组(用户除了主要组以外所属的组,可有可无)
在Linux中,当创建一个新用户时,默认会创建一个与之同名的组,并以这个组为它的主要组
id username
查看用户所在组的信息,默认是当前用户
Linux用户和组的主要配置信息:
/etc/passwd:用户及其属性信息(名称、UID、主要组ID等)
/etc/group:组及其属性信息
/etc/shadow:用户密码及其相关属性
/etc/gshadow:组密码及其相关属性
chsh -s shell username
改变某个用户的shell,默认user是当前用户
getent passwd [username...]
默认看所有用户信息,如果加上用户名(可多个)就只看该用户信息
chage username
改变用户shadow文件中的密码策略
-d
设置lastday属性
chage -d0 username
把用户的最后一天修改日期改为0,可以让用户在下一次登录时就立刻改自己的口令
chfn
指定个人信息
/etc/login.defs
定义了加密算法,修改了加密算法只影响新用户或者新改过密码的用户
openssl rand -base64 12
生成随机口令
groupmems
用于把某个用户加入或删除到某个组,root用户可以对其他用户进行组的加入或删除,而普通用户如果想对自己进行组的加入或删除操作,需要输入组口令
groupmems group
查看组成员
gpasswd group
给某个组加组口令(具体查看帮助文档)
-a/-d user group
把用户加入到/删除出某个组里面
newgrp group
临时把某个组作为主要组,exit退出(如果自己不在这个组里面,需要输入组口令)
groups user
查看用户属于哪些组,排在第一个的就是主要组
passwd和group的文件操作:
vipw
即vi /etc/passwd
vigr
即vi /etc/group
vi类似于nano,不过vi有语法检查功能
pwck
和 grpck
用于检查文件是否有问题
用户和组的管理命令:
useradd user
添加用户(默认方式,口令为!!,被禁用状态):
-u num
指定uid为num
-o
创建和前面一个账号uid相同的账号(忽略id的唯一性检查)
-d path
指定家目录,自动创建该目录
-r
创建系统账号,默认情况不会生成家目录
-m
强制创建家目录
-M
强制不建立家目录
-s
指定shell类型
-c
添加描述
-g group
把group作为主要组,不创建同名组作为主要组
-G group
创建用户时把用户加入附加组group(可多个)
-N
创建的新用户直接加到users组作为主要组(由/etc/default/useradd文件决定默认创建用户账户的行为)
-D
查看默认设置文件/etc/default/useradd
不小心删除了某个用户user的home目录,可以新建home目录
mkdir /home/user/
,然后复制原有隐藏文件(skel默认只有隐藏文件)过去
cp -r /etc/skel/.[^.]* /home/user/
实际上,这样很麻烦,skel如果还有非隐藏文件就更麻烦,其实可以直接把skel目录复制过去改名就好了
cp -r /etc/skel/ /home/user/
但是还有更简单的方法,即把当前目录复制过去
cp -r /etc/skel/. /home/user
这样复制以后,还需要把这些文件的权限给改成原来user的
newusers passwd
格式文件 批量创建用户
chpasswd
批量改口令(格式:用户名:密码)
usermod
:
-U
解禁账号
-L
账号加锁(口令前面出现一个!即锁定状态,被禁用!!状态不能解禁(老版本可以,6以前))
-u
改uid
-g
改gid
-G groups user
修改附加组(如果原来有附加组会覆盖,加上-a则不会覆盖)
-G user的主要组 user
相当于把所有附加组删掉或者-G "" user
-l newname user
修改用户登录名uid
userdel -r user
完全删除用户(不加-r会保留用户数据)
su
:切换用户(switch user)(exit退出)
su user
非完全切换,切换以后家目录还是root,保留一些原本环境
su - user
完全切换,和重新用该账号登录一样,家目录也是user的家目录(user不写默认切换为root)
普通用户使用su需要输口令
su -user -c command
切换成user执行命令command,执行完再退回来
passwd username
:修改用户密码
echo "password" | passwd --stdin user name
使用管道自动改口令
-d
删除用户密码
-l
锁定用户
-u
解锁用户
-e
强制用户下次登录必须改口令
groupadd group
创建组:
-r
创建系统组
-g
指定gid
groupmod group
修改组:
groupdel group
删除组:只能删附加组,不能删被当成主要组的组,也不能删除组里面用户正在登录的组
文件权限:
三类用户:文件所有者、文件所在组成员、路人(other)
三种文件权限:r读(适合文本文件)(可以浏览文件列表)、w写(适合文本文件)、x执行(适合程序文件)(可以访问目录内的文件)(没有权限即显示-)
用ll查看文件:
-rw-r--r--
即第一个是文件属性,后面每三个分别对应三类用户的三种权限
(查看权限是按顺序查看,如果用户是所在组成员,后面的权限就不看了)
chmod who opt permit file
模式法设置权限:
who:u 所有者 g 所在组 o 路人 a 所有人
opt: + 增加权限 - 去掉权限 = 覆盖权限
permit: r w x
例:chmod o+w f1 ;chmod u=rw f1
(还有一个权限X,指对文件夹修改x权限,不修改文件的x权限,但如果有某个文件已经有x权限,那X还是会给那个文件加上x权限)
Linux支持只能写不能读,即-w-,可以通过>等命令,不打开文件也能写入内容
写文件和删文件不一样,可以写不代表可以删,删文件其实是在目录里面删掉文件的名字,没有这个目录/data的写权限就不能删文件(另外,如果文件目录/data给了写权限,但是文件所属目录没有给执行x权限,也不能删除文件)
chown user file
更改文件所有者
root账号,就是文件没给r和w权限,也可以进行r和w操作,但是如果文件没给x权限,就不可以进行x操作
chgrp group file
更改文件所属组
chown user./:group file
同时更改所有者和所属组
(如果输入chown user./: file
,则默认把所有者和所有组同名,但是,chown ./:group file
只会修改所属组)
chmod num file
数字法设置权限:
rwxr-xr-x file 有权限写1,没权限写0
111 101 101 然后对应转换成十进制(755)作为num即可