linux学习

你的选择是做或不做,做不一定会成功,但不做就永远不会有机会。

1、linux系统的输入与输出

管道的输入与输出
在linux中,在linux系统中,正确输出的编号为1,错误输出编号为2
输出重定向

>			##重定线正确输出
2>			##重定向错误输出
&>			##重定向所有输出

注意:重定向会覆盖原文件内容

find	/etc/	-name passwd > file		##重定向到正确输出
find	/etc/	-name passwd 2> file		##重定向到错误输出
find	/etc/	-name passwd& > file		##重定向到所有输出


输出追加

find	/etc/	-name passwd >>file		##追加正确输出到file
find	/etc/	-name passwd 2>>file		##追加错误输出到file
find	/etc/	-name passwd &>>file		##追加所有输出到file

管道的应用
“|”管道的作用是将前一条的命令的输出变成后一条命令的输入
注意:管道只允许正确输出通过,通过管道的输出将会变成输入,如果需要保存输出内容,那么要复制一份输出,命令是“tee”

find	/etc/	-name passwd | wc -l	##看到结果为2,因为错误结果不能通过管道。
find	/etc/	-name passwd 2>&1 | wc -l	##看到输出结果为总数,因为错误结果被转化为正确输出
find	/etc/	-name passwd 2>&1 | tee file |wc -l 	##保存一份到file,再统计行数

2、用户群组的管理

用户管理
1)查看当前用户
whoami
2)系统中用户的查看

id			##查看当前用户的uid
id	-u		##查看用户的uid
id	-g		##查看用户的gid
id	-G		##查看当前用户所在的所有组id
id	-n		##显示名字而不是数字


3)切换用户

su	-用户名称
su	-中“-”表示用户身份切换时同时切换当前的用户环境
su	-执行高级用户切换到低级用户时不需要密码,低级用户切换到高级用户需要密码,平级切换也需要密码

注意:每次切换到其他用户操作完成之后推出,再切换到其他用户操作。
4)系统中用户的存储方式
用户信息文件 /etc/passwd

用户名称:用户密user码:组id : 组成员

用户组信息文件 /etc/group

组名:组密码:组id:组成员

认证信息文件 /etc/shadow
用户家目录 /home/username

5)用户管理命令

用户的建立

useradd	-u id	用户名称				##指定用户的uid
useradd	-g id	用户名称				##指定用户的组id
useradd -G id	用户名称				##指定附加组id
useradd -c	"hello"	用户名称 		##指定用户的说明
useradd -d /home/lee 用户名称  		##指定用户的家目录
useradd -s /sbin/nologin 用户名称	##指定用户的默认shell


用户的删除

userdel
userdel	用户名称		##删除用户但不删除用户的配置文件
userdel	-r	童虎名称	##删除用户并且删除用户的配置文件

用户组的操作
groupadd ##建立用户组
groupadd -d id ##建立用户组并指定用户组id
groupdel ##删用户组

更改用户用户信息

usermod
usermod	-l	新名称	用户名称			##更改用户名称
usermod	-u	新uid	用户名称			##更改用户uid
usermod	-g	新gid	用户名称			##更改用户gid
usermod	-G	附加组	用户名称			##更改用户附加组
usermod	-c	“”haha“”	用户名称		##指定用户说明文字
usermod	-md	"/home/lee"	用户名称		##更改家目录
usermod	-s	/sbin/nologin	用户名称	##更改用户的shell
usermod	-L	新名称	用户名称			##冻结用户
usermod	-U	新名称	用户名称			##解锁用户


用户认证信息
记录用户信息/etc/shadow
此文件一共有9列
用户名称:用户密码:用户密码最够一次更改时间:用户密码最短有效期:最长有效期:密码警告期限:用户非活跃天数:用户到期日:用户自定义列
用户密码

passwd			用户名称		##更改用户密码
passwd	-l		用户名称		##对密码加锁
passwd	-u		用户名称		##对密码解锁
passwd	-d		用户名称		##清空用户密码


用户密码最后一次被更改的时间
passwd -e 1 用户名称 #用户登录时会被强制改密码
用户密码最短有效期
passwd -n 1 用户名称 #用户在一天之内不能修改密码
用户到期日
chage -E 2018-09-27 #用户在2018-09-27到期

这些操作都要在平级之间进行

3、文件权限

为什么需要权限管理?
计算机资源有限,我们需要合理的分配计算机资源。
Linux是一个多用户系统,对于每一个用户来说,个人隐私的保护是十分重要的

由于Linux的一切皆文件的基本思想,对于权限的管理更多的则体现在管理文件权限上。为了
方便的指派权限,在Linux中定义了文件属主,文件属组,其他人这三类人的权限。
对于计算机来说,这三类都是一个标识符。

通过 ls 命令我们可以看到文件的具体权限信息。

drwxrwxr-x 2 wa wa 2020 Sep 27 15:29 .
drwxrwxr-x 5 wa wa 2020 Sep 227 16:38 …
-rw-rw-r-- 1 wa wa 0 Jun 5 02:29 file

将文件的具体权限可以分成八个内容来看

d	|	rwxrwxr-x| 2	| wa	| wa|	  2020|	 Sep2715:29 |	file
[1]		[2]			[3]	  [4]	  [5]	[6]			[7]			[8]

[1]文件的类型

-  ##空文本	
d  ##目录
l  ##软连接
s  ##socket套接字
b  ##block块设备
c  ##字符设备

[2]文件权限信息
rwx |rwx |r-x
文件权限信息一共有9位,每3位一组,分别表示属主,属组,其他人的权限信息

权限:r w x

对于文件:
r:可读,可以使用cat等命令查看文件内容
w:可写,可以进行编辑修改,或删除操作
x:可执行,可以在命令提示符下当做命令提交给内核运行

对于目录:
r:可以对此目录执行ls命令,列出内部所有文件
w:可以在此目录下创建文件
x:可以使用cd命令切换进此目录,也可以使用ls -l命令查看内部文件的详细信息
对于目录来说,一般会有执行权限,而对于文件来说,一般默认没有执行权限。
[3]
对文件:文件硬链接个数
对目录:目录中子目录的个数(不是文件)
[4]
文件所属人
[5]
文件所属组
[6]
对文件:文件的大小
对目录:目录中子文件元数据的大小
[7]
文件内容被修改时间
[8]
文件名称
修改文件的所有人和所grouwe有组

chown		username	file|dir
chown		user.group	file|dir
chown	-R  user.grocat 

chgrp		group		file|dir
charg	-R	group		dir

修改文件的权限的方式

chmod	<u|g|o><+|-|=><r|w|x>		file|dir

有一种比较方便的修改方法,直接加二进制数字。

|r |w |x
4   2   1
chomd    542   file    ##意思就是 u(r-x) g(r--) o(-x-)

特殊权限

系统默认的权限设定
从系统的角度出发,权利开放的越大,安全性就越小,再linux系统中一切皆文件,病毒都是二进制的文件,一不小心给文件一个执行的权利就中病毒了,所以说系统开放的权利越小系统就越安全,因此系统再设定文件或者目录的时候就会默认的去掉一些权限。

设定方法
umask ##通常情况下umask的字为0022
但是也可以临时设定,临时设定的只在当前的shell中生效
修改umask 033

永久的设定方法
vim /etc/bashrc ##shell
70 if [ $UID -gt 199 ] && [ “id -gn” = “id -un” ]; then
71 umask 002 ##普通用户umask
72 else
73 umask 077 ##超级用户umask
74 fi

vim /etc/profile ##系统
59 if [ $UID -gt 199 ] && [ “id -gn” = “id -un” ]; then
60 umask 002 ##普通用户umask
61 else
62 umask 077 ##超级用户umask
63 fi

以上两个文件umask设定值必须保持一致
让设定立即生效
source /etc/bashrc
source /etc/profile

设定acl列表
setfacl -m <u|g>:<username|groupname>:权限 文件|目录
-m #设定
u #用户
g #组

查看 acl列表
getfacl +dir|file

acl开启后

getfacl			##查看acl的文件权限
user:rw-		##文件所有人的权限
user:用户名称:rwx		##指定用户的权限
group::r--		##文件所有组的权限
mask::rwx		##能赋予用户的最大权利阈值
other::r--		##其他人的权限

1.mask 权限掩码

mask用来标实能够赋予用户最大权限
当用chmod改变文件普通权限时可能会被破坏
恢复mask值:
setfacl -m m:rwx 文件名称

acl 默认权限

当我们需求某个目录对于annie可写,并且目录中新建的子目录对annie也可写
就要设定默认默认权限

注意: 默认权限只对目录中新建立的文件或者目录生效,对已经建立的文件无效,
对于目录本身也无效
setfacl -m d:u:annie:rwx /mnt/haha

特殊权限
  1. sticky ##粘制位
    作用:
    只针对,目录生效,当一个目录上有sticky权限时在这个目录中的文件只能被文件的所有者删除。
    设定方式
chmod		o+t		dir
chmod		1xxx	dir
  1. sgid ##强制位
    作用:

              对文件:只针对二进制可执行文件,当文件上有sfid时,任何人执行此文件产生的进程都属于文件的组

                    对目录:当目录上有sgid时,任何人所建立的文件都属于目录的所有组

设定方式
chmod		g+s		file|dir
chmod		2xxxx	file|dir
  1. suid ##冒险位作用:
    只针对二进制可执行文件
    当文件上有suid时任何人执行这个文件中的程序产生的进程收属于问文件的所以人
    设定方式
chmod		u+s		file
chmod 		4xxxx	file