linux的入门篇
文章目录
一,权限使用对象
- 文件的权限主要针对三类对象定义:
- owner :所属主-u
- group:所属组-g
- other :其他用户-o
- 每个文件针对访问者都定义了三种权限:
权限 | 对应的操作对象 | 权限说明 |
---|---|---|
read | 文件 | 可读,可以使用类似cat等命令查看文件内容 |
write | 文件 | 可写,可以编辑或删除此文件 |
x eXacutalbe | 文件 | 可执行,eXacutalbe,可以在命令提示i符下当作命令提交给内核运行 |
r | 目录 | 可以对此目录执行ls以列出内部的所有文件 |
W | 目录 | 可以在此目录中创建文件,也可删除此目录中的文件 |
x | 目录 | 可以使用cd切换进此目录,也可以使用ls-l查看内部文件的详细信息 |
二,权限管理命令
1,修改权限的命令-chmod
修改三类用户丶权限:
//语法 chmod mode file, …
//修改某类用户或某些类用户权限;
//用户类别(u(所有者0,g(同组),o(其他),a(所有)0)
chmod 用户类别=mode file, …
chmod用户类=MODE,用户类别=MODE,file,…
修改某类的用户某位或某些位权限:
//u,g,o,a
//chmod 用户类别+|-mode file
//chmod 用户类别+|-MODE,用户类别+|-MODE file,…
//chmod +|-MODE file,…
![在这里插入图片描述](https://img-blog.csdnimg.cn/20201020161617704.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L0xCSjE5MjI0,size_16,color_FFFFFF,t_70#pic_center
2,修改文件所属主和属组的命令-chown–只有管理员可以使用(change owner 更改所有者)
//chown username file
-R//修改目录及其内部文件的属主。
Chown username:groupname file
Chown username.groupname file
-
2.1,命令示例。
[root@Eryuege work]# ll 总用量 4 -rw-rw-r--. 1 jjyy jjyy 15 10月 20 11:38 abc [root@Eryuege work]# chown jerry abc [root@Eryuege work]# ls abc [root@Eryuege work]# ll 总用量 4 -rw-rw-r--. 1 jerry jjyy 15 10月 20 11:38 abc [root@Eryuege work]# chown .jerry abc [root@Eryuege work]# ll 总用量 4 -rw-rw-r--. 1 jerry jerry 15 10月 20 11:38 abc [root@Eryuege work]# chown jjyy.jjyy abc [root@Eryuege work]# ll 总用量 4 -rw-rw-r--. 1 jjyy jjyy 15 10月 20 11:38 abc.
三,遮罩码(umask)
3.1文件创建完后默认权限时644;
目录创建完后时755;
遮罩码是用来隐藏一些权限的。
文件的权限是666-umask
目录的权限是777-umask
Umask 0022 第一个0为特殊权限。
666-644等于022
777-755等于022
3.2,文件默认是不能有执行权限的,如果算得的结果有执行权限则将权限整体加1.
配置案例:
[root@Eryuege work]# umask 001
[root@Eryuege work]# umask
0001
[root@Eryuege work]# ll
总用量 4
drwxrwxrw-. 2 root root 6 10月 20 11:50 a
-rw-rw-r--. 1 jjyy jjyy 15 10月 20 11:38 abc
注:遮罩码只能影响设置之后的文件的权限;
四,Linux安全上下文与特殊权限
1,Linux安全上下文。
- 先查看所属主的权限,其次是所属组,组后查看其他用户的权限。
前提:进程有属主和属组:文件有属主和属组
a,任何一个可执行程序文件能不能启动位进程,取决于发起者对程序文件是否拥有可执行权限;
b,启动为进程后,其进程的属主为发起者,属组为发起者所属的组
c,进程访问文件时的权限取决于进程的发起者
----------进程的发起者时文件的属主时,则应用文件属主权限
----------进程的发起者时文件的属组时,则应用文件属组权限
----------应用文件"其他权限"
2,特殊权限:
-
linux默认权限是根据linux安全上下文的方式来控制的,而特殊权限的存在打破了linux安全上下文的规则。
Umask 0022 (第一个就是特殊权限)设置权限案例:chmod 4644 abc -
对象是程序
1,SUID(4) //运行程序时,这个程序启动的进程的属主是程序文件自身的属主,而不是启动者为属主
chmod u+s file
chmod u-s file
//如果file本身原来就有执行权限,则SUID显示为s,否则显示为S
[root@Eryuege tmp]# chmod 4755 /usr/bin/vi -
对象时目录
2,SGID(2) //运行程序时,这个程序启动的进程的属组是程序文件自身的属组,而不是启动者所属的基本组
//默认情况下,用户创建文件时,其属组为此用户所属的基本组;
//一旦某目录被设定了SGID,则对此目录有写权限的用户在此目录中创建的文件或目录,其所属的组
//为此设定了SGID的目录的属组
chmod g+s DIR
chmod g-s DIR
//如果file本身原来就有执行权限,则SGID显示为s,否则显示为S
[root@Eryuege test]# chmod 2755 work/
[root@Eryuege test]# ll
总用量 8
-rw-r–r--. 1 root root 5530 10月 18 18:26 man_db.conf
drwxr-sr-x. 2 jjyy she 32 10月 20 13:42 work -
对象是公共目录
3,Sticky(1) //在一个公共目录,每个人都能创建文件,删除自己的文件,但是不能删除别人创建的文件
chmod o+t DIR
chmod o-t DIR
//如果DIR本身原来就有执行权限,则Sticky显示为t,否则显示为T
[root@Eryuege test]# chmod 1775 work/
[root@Eryuege test]# ll
总用量 8
-rw-r–r--. 1 root root 5530 10月 18 18:26 man_db.conf
drwxrwsr-t. 2 jjyy she 32 10月 20 13:42 work -
4775 // 有SUID,文件权限为755
-
2755 //有SGID ,文件权限为755
-
1755 //有Sticky ,文件权限为755
-
//4,2,1分别表示SUID,SGID,Sticky
五,文件访问控制列表facl(Filesystem Access Control List)
- 利用文件扩展保存额外的访问控制权限。
- 语法:setfacl [-bkndRLP][option] file…
-m: //设定
u:UID:perm
g:GID:perm
//setfacl -m u:test:rw file 设置用户 用户名 用户权限,针对的文件
//setfacl -m g:test:rw file 设置组 用户组:组权限 针对的文件
-d:默认继承权限
//如果要为某个目录设定默认的访问控制列表,只需要设定时在u或g前面加上d即可。 如:
//setfacl -m d:u:test:rw file,此时在此目录中创建的文件均继承此访问控制列表所设置的权限
-x://取消
u:UID
g:GID
//setfacl -x u:test file
//setfacl -x g:test fil
-b:Remove all 清空所有设置的权限
- 查看文件的所属主所属组。
语法:getfacl 【aceESRLPtpndvh】file …
六,sudo权限委派
1,sudo可以实现某个用户能够以另外某个用户的身份通过那些主机执行什么命令
- sudo的配置文件:/etcsudoers
- Visudo 通过此此命令进行sudo的配置,每一行就是sudo条目,格式如下:
who | which_host=(runas | command |
---|---|---|
root | ALL=(ALL | ALL |
she | ALL=(ALL | /usr.sbin.useradd, /user/sbin/userdel |
jjy | ALL=(ALL | NOPASSWD: /usr/sbin/useradd |
字段 | 含义 |
---|---|
whi | User_Alias,表示运行命令者的身份 |
which_host | Host_Alias, 通过哪些主机 |
runas | Runas_Alias,以哪个用户的身份 |
command | Cmnd_Alias, 运行哪些命令 |
2,别名必须全部而且只能使用大写英文字幕的组合,可以使用感叹号取反
- 解耦:搭积木的形式来理解别名的使用方法,将一个命令或文件定义为一个别名,通过别名来运行
别名分类:
用户别名:
User_Alias NETWORKADMIN =
用户的用户名
组名,使用%引导
还可以其它已经定义的用户别名
主机别名:
Host_Alias =
主机名
IP地址
网络地址
其它主机别名
Runas别名:
Runas_Alias =
用户名
%组名 如%root root组的别名。
其它的Runas别名
命令别名:
Cmnd_Alias =
命令路径
目录(此目录内的所有命令)
其它已定义的命令别名
- ** sudo命令语法:sudo [option COMMAND
option | 描述 |
---|---|
-V | 显示版本编号 |
-h | 显示版本编号及指令的使用方式说明 |
-l | 列出当前用户可以使用的所有sudo类命令 |
-v | 因为sudo在第一次执行时或是N(N=5后会文密码,这个参数时重新做一次确认,如果超过N分钟,也会问密码 |
-k | 让认证信息失效,如果不指定-k,默认认证信息在5分钟后失效 |
-b | 将要执行的指令放在后台执行 |
-u | USERNAME 以指定的用户名执行命令,默认为root |
七,管理命令
- w //显示当前登陆到系统的用户有那些,以及期正在做什么
- sleep 睡眠,写脚本时为纺织上一个命令没执行完,下一条命令九开始执行时可以加上sleep #\ 表示停顿#秒后在执行后面的命令
SUFFIX:
s:秒,默认
m:分
h:小时
d::天
-
last //显示/var/log/wtmp文件,显示用户登陆历史及系统重启历史
-n # //显示最忌#次的相关信息.
-
lastb 显示/var/log/btmp文件,显示用户错误的登陆尝试
-n # //显示最近#次的相关信息
-
lastlog 显示每个用户最近一次成功登陆信息
-u username://显示特定用最近的登陆信息
— basename: //显示路径名
如[root@Eryuege ~]# dirname /usr/local/a/b/c
/usr/local/a/b
[root@Eryuege ~]# basename /usr/local/a/b/c
c
八,命令练习
-
1、新建一个没有家目录的用户openstack
useradd -M openstack
-
2、复制/etc/skel为/home/openstack
cp -r /etc/skel /home/openstack
- 3、改变/home/openstack及其内部文件的属主属组均为openstack
chown openstack.openstack openstack/
- 4、设置/home/openstack及其内部的文件,属组和其它用户没有任何访问权限
chmod 700 openstack/