用户和用户组
在Linux里,任何一个文件都具有User、Group以及Others3种身份的个别权限
默认情况下所有的系统上的账号与一般用户身份,还有root账户的相关信息都记录在/etc/passwd文件内
个人的密码记录在/etc/shadow文件下
Linux所有的组名都记录在/etc/group内
这三个文件可以说是Linux系统里面账号、密码、用户组信息的集中地。
Linux文件属性
列数 | 含义 |
---|---|
第一列 | 第一位 - 是文件;d 是目录 |
第二列 | 连接数 |
第三列 | 所有者 |
第四列 | 用户组 |
第五列 | 文件容量(大小默认为B) |
第六列 | 修改日期 |
第七列 | 文件名 |
改变文件属性与权限
-
chgrp:改变文件所属用户组
chgrp [-R] 用户组名称 文件或目录
chgrp users install.log
-
chown:改变文件所有者
chown [-R] 账号名称 文件或目录
chown bin install.log
-
chmod:改变文件的权限 a代表all
1. 数字类型改变文件权限
操作|对应的数字
-|-
r|4
w|2
x|1
例如:如果要将install.log的权限改成“-rwxrwxrwx”就是 4+2+1 4+2+1 4+2+1
chmod 777 install.log
例如:如果要将文件变成可执行文件,并且不要让他人修改文件的话就需要"-rwxr-xr-x"这样的权限
chmod 755 filename
例如:如果有些文件你不希望被别人看到,权限为“-rwxr-----”
chmod 740 filename
- 2. 符号类型改变文件权限
假设将文件权限修改为“-rwxr-xr-x”
chmod u=rwx ,go=rx install.log 或 u=rwx,g=rx,o=rx
假设不知道文件原本的权限,希望所有人都可以增加写入的权限
chmod [u/g/o/a]+w filename
全部人都去掉可执行的权限
chmod a-w filename
目录与文件的权限意义
-
文件的x权限
在Linux系统下,文件是否能被执行是由是否具有x这个权限来决定的,与windows下的扩展名不同。
-
目录的x权限
表示用户是否能进入该目录成为工作目录
例子:“drwxr--r-- 3 root root 4096 Jun 25 08:35 .ssh”
vbird用户不属于root用户组,vbird对此目录有r的权限,因此vbird可以查询此目录下的文件名列表但不能读取详细的文件名列表,有一堆问号?????权限不够
,但是不能切换到此目录内。因为没有x权限
目录树架构
[图片上传失败...(image-533a38-1574832893153)]
文件与目录的默认权限与隐藏权限
root想将~/.bashrc复制给wwl,又担心覆盖掉~wwl/.bashrc。并且文件是root需要将拥有者变为wwl
- cp ~/.bashrc ~wwl/bashrc
- 修改own:chown wwl:users ~wwl/bashrc
例:
在/tmp下面新建一个目录,这个目录名称为chapter7_1,并且这个目录的所有者为wwl,用户组为users,此外,任何人都可以进入该目录浏览文件,不过除了wwl以外,其他人不能修改该目录下的文件。
经分析,整个目录的权限应该是 drwxr-xr-x=755
新建目录:mkdir /tmp/chapter7_1
修改属性: chown -R wwl:users /tmp/chapter7_1
修改权限:chmod -R 755 /tmp/chapter7_1
文件默认权限umask
umask:目前用户在新建文件或者目录的时候的权限默认值:文件的默认属性是666,目录是777与umask相减
umask 输出0022** ****022:意思是user的rwx不拿掉任何权限,group和other拿掉了w
umask - S 输出u=rwx,g=rx,o=rx
修改默认权限umask:umask 002 这样文件的默认权限就是-rw-rw-r--目录:drwxrwxr-x
文件隐藏属性chattr,lsattr
chattr(change attribution设置文件的隐藏属性)
chattr [+-=] [ASacdistu] 文件或目录名称
- +:增加某一个特殊参数,其他原本存在的参数则不动
- -:删除。。。
- =:仅有后面接的参数
- a:设置a之后,这个文件将只能增加数据,而不能删除也不能修改数据,只有root才能设置这个属性。
- chattr +i attrtest【给予attrtesti的属性】
- chattr -i attrtest将i属性取消
- i:可以让一个文件“不能被删除、改名,设置连接也无法写入或添加数据。”“对系统安全性有相当大的帮助”。
lsattr(显示文件隐藏属性)
lsattr [-adR] 文件或目录
- -a:将隐藏文件的属性也展示出来
- -d:如果接的是目录,仅列出目录本身的属性而并非目录内的文件名
- -R:连同子目录的数据也一并列出来
查看文件类型:file【文件的类型是由文件的内容决定的不是由后缀决定】
想知道某个文件的基本数据,例如是属于ASCII或者是data文件,或者是binary
file ~/.bashrc
命令与文件的查询
脚本文件名的查询
which 【-a】 command which ifconfig 输出:/sbin/ifconfig
-
文件名的查找
- whereis(寻找特定文件) whereis [-bmsu] 文件或目录名 whereis passwd
locate: locate [-i忽略大小写的差异r后面可接正则表达式的显示方式] keyword
find [PATH] [option] [action]
mkdir src
find /usr/src -name "*.c" -exec cp {} /src \;
ll src
find /usr/src/ -name "*.c" -exec wc -l {} \;
-exec后面就是动作;wc(wordCount) -l是一个用来统计行数的命令;
{}匹配一次每次find匹配的结果,每次将一行文件名放入{}中;
\; ---将;转义,代表命令的结束。
要执行find出来的所有文件的统计行数的命令
-
统计find到多少条命令
- 第一种方式(生成中间文件)find /usr/src/ -name "*.c" >> count ;wc -l count ; rm count <== >> count 是将标准输出以追加重定向的方式添加到count文件中
- 第二种方式(使用管道) find /usr/src/ -name "*.c" | wc -l
-
与用户有关的参数
- user name:name 用户账户名称
- group name:name 用户组名
- nouser:寻找文件的所有者不存在/etc/passwd的人
- nogroup:不存在于/etc/group的文件
- 示例:查找/home下面属于wwl的文件(用这个命令将所有属于某个用户的文件找出来)
- find /home -user wwl
- 示例:查找系统中不属于任何人的文件 find / -nouser
-
与文件权限及名称有关的参数
- -name filename:查找文件名为filename的文件find -name passwd
- -size [+-] SIZE:查找比SIZE还要大[+]或小[-]的文件。c:代表byte;k:代表1KB
- -type TYPE:类型主要有一般文件(f)、设备文件(b/c)、目录(d)、连接文件(l)、socket(s)
- find /var -type s - 【find . -type f -name "1"】
- -perm mode:查找文件权限刚好 等于 mode的文件
- -perm +mode
- -perm -mode
文件的特殊权限:SUID,SGID,SBIT
s与t都是代替x的,就是文件的拥有者暂时具有root权限,暂时有权限给其他人设置。
4为SUID(SetUID,SUID不是用在目录上,用于设置文件)
2为SGID(SetGID)
1为SBIT(SBIT不是用于文件上 。Sticky Bit用于设置目录)
SetUID: 假设要将一个文件权限修改为-rwsr-xr-x时,由于s在用户权利中,所以是SUID
这样修改:chmod 4755 filename来修改
chmod 7777 filename,最后权限是-rws
rws
rwt