1文件基本权限
1.1基本权限修改
1.1.1认识
-rw-r--r-- 文件权限只有9位,文件类型不是文件权限
文件类型(1位)+属主权限(3位)+属组权限(3位)+其他用户权限(3位)
-文件类型:d(directory目录文件)、
-(普通文件)、
l(link符号链接文件)、
b(block块设备文件)、
c(char字符设备文件)、
p(pipe管道文件)、
s(socket管道文件)。
rw-属主权限u:文件所有者权限,可认为是文件创建者权限
r--属组权限g:文件所有者所在组权限,可认为是同组用户权限
r--其他用户权限o:非同组用户权限
1.1.2修改
chmod [选项] 模式 文件名
选项
-R 递归,若当前为目录,则目录下的子文件都是该修改权限
模式
[ugoa][+ | - | =][rwx]
[mode=421]
- [ugoa]
u 表示“用户(user)”,即文件或目录的所有者。
g 表示“同组(group)用户”,即与文件属主有相同组ID的所有用户。
o 表示“其他(others)用户”。
a 表示“所有(all)用户”。它是系统默认值。
- [+ | - | =]操作符号可以是:
+ 添加某个权限。
- 取消某个权限。
= 赋予给定权限并取消其他所有权限(如果有的话)。
- [rwx]权限:r:4,w:2,x:1,其顺序是(u)(g)(o),是用二进制表示的,权限从大到小777 644 755 而467一般不存在。
- [mode=421]如果想让某个文件的属主有“读/写”二种限,需要把4(可读)+2(可写)=6(读/写)。
7:rwx、全部权限
6:rw-、读与写
5:r-x、
4:r--、只读
3:-wx、
2:-w-、只写
1:--x、执行或切换权限
0:---
ll filename //查看文件权限
1.2权限的作用
1.2.1权限对文件的作用
- r:读取文件内容(cat more head tail)
Linux有三个查看文件的命令,若希望在查看文件内容过程中可以用光标上下移动来查看文件内容,应使用命令
cat命令:
- 一次显示整个文件 -----cat filename
2.创建新文件,不能 编辑已有文件 -----cat > filename
3.将几个文件合并为一个文件 -----cat file1 file2 > file
more命令:分屏显示文件内容,每次只显示一屏,只允许向前浏览。
less命令:与more相似,并且支持向前,向后浏览。
Head命令:tail -n 文件名——只显示文件头几行内容。
Tail命令:head -n 文件名——只显示文件尾部几行内容。
- W:编辑、新增、修改文件内容(vi echo)不包括删除文件
touch filename //新建空文件
ll filename //查看文件权限
Echo content>> filename //向文件末尾追加内容
对文件有写权限表示可以编辑、新增、修改、删除文件的内容,文件是存放在上一级目录的内容,只有上一级目录具有写权限,该文件才能被删除。只能修改下一级内容
- X:可执行,可以运行文件
1.2.2权限对目录的作用
- r:可以查询目录下文件名(ls)
- W:具有修改目录结构的权限。如新建文件和目录,删除此目录下文件和目录,重命名此目录下文件和目录,剪切(touch rm mv cp)
#mkdir //创建目录
#rmdir //删除目录
#cp //文件复制
-r 递归处理,将指定目录下的文件与子目录一并处理
-v 或 --verbose 显示执行过程
-f 或 --force 强行复制文件或目录, 不论目的文件或目录是否已经存在
mv//文件移动
#rm [选项] dirs //删除文件或目录
选项:
-d:直接把欲删除的目录的硬连接数据删除成0,删除该目录;
-f:强制删除文件或目录,不询问用户;
-i:删除已有文件或目录之前先询问用户;
-r或-R:递归处理,将指定目录下的所有文件与子目录一并处理;
--preserve-root:不对根目录进行递归操作;
v:显示指令的详细执行过程。
- X:可以进入目录(cd)
注意:对文件来说最高权限是执行,对目录来说最高权限是写,目录的合法权限0 5(rx) 7(rwx)
1.3其他权限命令
chown://给文件赋予拥有权的。
当需要给其他用户赋予7权限,只需要改变拥有者
chown 拥有者 文件名
chown test filepath //改变所有者,修改file1的拥有者为test
chown root:root filepath //同时改变所有者,所属组,修改file1的拥有者为test
Chgrp 组名 文件名
chgrp user filepath //改变所属组,修改file1的拥有组为user,
分配权限的核心原则是,在尽量小的权限范围内满足要求
2文件默认权限
文件默认权限是指建立文件后存在的权限,
文件不能建立为执行文件,必须手工赋予执行权限,所以文价默认权限最大为666,建立文件之后的默认权限,为666减去umask的值,
目录的默认权限最大为777,建立文件之后的默认权限,为777减去umask的值。
默认权限需要换算成字母再相减,。
umask:查看默认权限
0022:
第一位0:文件的特殊权限
022:文件默认权限
修改umask值
临时修改——umask 0002
永久修改——vi /etc/profile
usermod(选项)(参数):
参数若为两个,顺序一般为 usermod (选项) 目标参数 原始参数
-c<备注>:修改用户帐号的备注文字;
-d<登入目录>:修改用户登入时的目录;
-e<有效期限>:修改帐号的有效期限;
-f<缓冲天数>:修改在密码过期后多少天即关闭该帐号;
-g<群组>:修改用户所属的群组;
-G<群组>;修改用户所属的附加群组;
-l<帐号名称>:修改用户帐号名称;
-L:锁定用户密码,使密码无效;
-s:修改用户登入后所使用的shell;
-u:修改用户ID;
-U:解除密码锁定。
usermod -l viv vivek //vivek希望将他的login ID从vivek改为viv,
3 文件的特殊权限
3.1ACL权限
3.1.1ACL权限简介与开启
解决问题:属主权限、属组权限、其他用户权限过于简单,导致其他权限无法开启给某个用户,解决用户身份不足
#dumpe2fs -h /dev/sda5
//dumpe2fs命令是查询指定分区详细文件系统信息的命令,是否支持ACL
//选项-h 表示仅显示超级块中的信息,而不显示磁盘块组的详细信息
3.1.2 临时开启分区ACL权限
#mount -o remount,acl /
//重新挂载根分区,并挂载加入acl权限
3.1.3 永久开启分区ACL权限
#vi /etc/fstab
//写配置文件,加入acl
//UUID=c2ca6f57-b15c-43ea-bca0-f239083d8bd2 / ext4 defaults, acl 1 1
#mount -o remount /
//重新挂载文件系统或重新启动系统,使修改生效
3.1.4查看ACL权限
#getfacl 文件名
3.1.5设定ACL权限
#setfacl 选项 文件名
选项:
-m:设定ACL权限
-x:删除指定的ACL权限
-b:删除所有的ACL权限
-d:设定默认的ACL权限
-k:删除默认的ACL权限
-r:递归设定ACL权限
操作:
#useradd tony //添加用户
#groupadd stu //添加组
#mkdir /av //创建目录
#chown tony:stu /av
#chmod 770 /av
#useradd lw
#setfacl -m u:lw:rx /av //给用户stfuyu 分配r-x权限,使用“u:用户名:权限”格式
#groupadd tgroup
#gSetfacl -m g:tgroup:rwx /av //给组tgroup分配 rwx权限,使用“g:组名:权限”格式
ll //查看文件权限
#getfacl /av //查看某个文件的具体权限
输出结果:file:av
Owner:tony
Group:stu
User::rwx
User:lw:r-x //为lw赋予了权限
Group::rwx
Mask::rwx
Other::--
3.1.6 ACL最大有效权限
Mask是用来指定最大有效权限的,如果我给用户赋予了ACL权限,是需要和mask的权限相与操作才能得到用户的真正权限。
上述getfacl 输出结果中mask,就是最大有效权限
一般mask权限是最大的,但也可以修改
#setfacl -m m:rx /av //给mask分配 rx权限,使用“m:权限”格式
3.1.7删除ACL权限
#setfacl -x u:用户名 文件名 //删除指定用户的ACL权限
#setfacl -x g:组名 文件名 //删除指定用户组的ACL权限
#setfacl -b 文件名 //删除文件的所有ACL权限
3.1.8递归ACL权限
递归是父目录在设定ACL权限时,所有的已经存在的子文件和子目录也会拥有相同的ACL权限。注意在ACL权限之后建立的新文件不再具有父目录所设定的ACL权限
#setfacl -m u:用户名 -R 目录名
当使用递归时,给目录赋予执行权限,目录下的文件也会具有执行权限,造成权限溢出。
3.1.9默认ACL权限
默认ACL权限的作用是给父目录设定了默认ACL权限,那么父目录所有新建的子文件都会继承父目录的ACL权限
#setfacl -m d:u:用户名:权限 目录名
4 sudo权限
4.1作用
把本来只能超级用户执行的命令赋予普通用户执行
sudo的操作对象是系统命令
4.2 sudo使用
命令: #vi sudo //实际修改的是/etc/sudoers文件
文件内容中:
Root ALL=(ALL) ALL
用户名 被管理主机的地址=(可使用的身份) 授权命令(绝对路径)
%wheel ALL=(ALL) ALL
组名 被管理主机的地址=(可使用的身份) 授权命令(绝对路径)
可使用的身份可以省略,省略后默认是root权限
授权的命令越详细,普通用户所获得的权限越具体越小,授权的命令越简单,普通用户所获得的权限越大。
5 文件特殊权限
注意:特殊权限尽量少修改
5.1 SetUID
5.1.1 SetUID针对文件的作用
- 只有可执行的二进制程序才能设定SUID权限
- 命令执行者要对该程序拥有x(执行)权限
- 命令执行者在执行该程序时后的该程序文件属主的身份(在执行程序的过程中灵魂附体为文件的属主)
- SetUID权限只在该程序执行过程中有效,也就是说身份改变只在程序执行过程中有效
5.1.2举例
passwd命令拥有SetUID权限,所以普通用户可以修改自己的密码
ll /usr/bin/passwd
-rwsr-xr-x. 1 root root 25980 2月 22 2012 /usr/bin/passwd
cat命令没有SetUID权限,所以普通用户不能查看/etc/shadow文件内容
ll /bin/cat
-rwxr-xr-x. 1 root root 47976 6月 22 2012 /bin/cat
5.1.3 设定SUID的方法
4代表SUID
#chmod 4755 文件名
#chmod u+s 文件名
5.1.4 取消SUID的方法
#chmod 0755 文件名
#chmod u-s 文件名
5.1.5 危险的SetUID
- 关键目录应严格控制写权限。比如“/”、“/usr”等
- 用户的密码设置要严格遵守密码三原则
- 对系统中默认应该具有SetUID权限的文件作一列表,定时检测有没有这之外的文件被设置了SetUID权限。
5.2 SetGID
5.2.1 SetGID针对文件的作用
- 只有可执行的二进制文件才能设置SGID权限
- 命令执行者要对该程序拥有x(执行)权限
- 命令执行者在执行该程序时,组身份升级为该程序文件的属组
- SetGID权限只在该程序执行过程中有效,也就是说组身份改变只在程序执行过程中有效
5.2.2 SetGID针对目录的作用
- 普通用户对此目录拥有r和X权限,才能进入此目录
- 普通用户在此目录中的有效组会变成此目录的属组
- 若普通用户对此目录拥有W权限,新建的文件的默认属组是这个目录的属组。
5.2.3 设定SGID的方法
2代表SGID
#chmod 2755 文件名
#chmod g+s 文件名
5.2.4 取消SGID的方法
#chmod 0755 文件名
#chmod g-s 文件名
5.3 Sticky BIT
5.2.1 SBIT粘着位针对目录的作用
- 普通用户对此目录拥有W、R和X权限,最高权限7,即普通用户可以在此目录拥有写入权限。
- 如果没有粘着位,因为普通用户拥有W权限,所以可以删除此目录下所有文件,包括其他用户建立的文件。一旦赋予了粘着位,除了root可以删除所有文件,普通用户就算拥有W权限,也只能删除自己建立的文件,但是不能删除其他用户建立的文件。
5.3.2 设定 SBIT粘着位的方法
1代表 SBIT粘着位
#chmod 1755 目录名
#chmod g+t 目录名
5.3.3 取消 SBIT粘着位的方法
#chmod 0755 目录名
#chmod 0-t 目录名
6 不可改变位权限
6.1 Chattr命令格式
#chattr [ + - = ] [选项] 文件或目录名
+:增加权限
-:删除权限
=:赋予权限
选项
i(insert):
如果对文件设置i属性,那么不允许对文件进行删除、改名,也不能添加和修改数据(实际上文件被锁定);
如果对目录设置i属性,那么只能修改目录下文件数据,但不允许建立和删除文件。
a(append):
如果对文件设置a属性,那么只能对文件添加数据(只能用输出重定向echo命令,不可以用vi编辑文件),不能删除和修改数据;
如果对目录设置a属性,那么只能建立和修改目录下文件,但不允许删除文件。
6.2查看文件系统属性
#lsattr [选项] 文件名
选项
-a:显示所有文件和目录
-d:若目标是目录,仅列出目录本身属性名而不是子文件的
其他
Pam 密码验证
selinux
用户管理
用户和用户组
用户和用户组配置文件
超级用户的组编号是0
用户组基本管理命令
添加用户组groupadd sexy
修改用户组的名字为market
为market用户组设定编号668
添加一个名为boss的用户组,并设定编号888
删除market用户组
用户基本管理命令
添加一个用户组
向用户组添加用户
选项:
-p 设定帐号的密码
-g 指定用户组,没有指定用户组会自动创建一个和用户名相同的用户组
-d 指定用户的主目录
-m 自动建立用户的主目录
-M 不要自动建立用户的主目录
修改用户
选项:
-c 添加注释
-1 修改用户名
-d 指定用户的主目录
-g修改用户所属的而用户组为sexy,主要组
删除用户(-r 删除用户账号及账号下文件)
禁止普通用户登录(文件nologin的内容无关)
用户密码
-1 锁定账号
-d 使用户密码无效,实现无密码登录
-u 解锁账号
如何锁定一个Linux用户账号?
答: (1)usermod -L user1
- 或者更改登陆shell,usermod -s /sbin/nologin user1
- passwd-L user1
- 或者在/etc/passwd文件中,将含有该用户的文件行注释掉(使用 * )
主要组与附属组
将cls添加到boss用户组,boss作为附属组(-a)
将cls从boss用户组去掉(-d)
添加主要组group1.添加附属组group2,用逗号隔开添加多个附属组
切换用户组
默认创建的文件属于主要组,需要切换到附属组才能创建属于附属组的文件
首先用户要登录虚拟机,然后使用
#newgrp 附属组名——//命令切换到附属组
普通用户切换到别的附属组时,有些附属组需要用户输入组密码
超级用户不需要密码
为用户组设置组密码
切换用户
如果su后面不加内容表示切换到root用户,需要root用户密码。普通用户切换到其他普通用户需要密码,root用户切换到其他普通用户不需要密码
其他命令