====程序====
Linux中没有注册表的概念,理论上,只要拷贝所有相关文件,就可以执行程序
按照传统,一个软件通常分别拷贝到bin、etc、lib、share等文件夹中
- bin:存放可执行文件,有时候直接放在 /bin或者/usr/bin下。
- etc:存放配置文件,大部分程序的配置文件都放在 /etc(根目录下面的),方便集中修改
- lib:库文件,集中在一起方便共享给不同的软件,比起不同的软件单独存放库文件,可以节省空间
- share:程序所需要的其他资源,例如图标、文本,这部分是专用的,不需要共享,混放在一起比较混乱,所以一般都单独存放在一个文件夹里,这个文件夹一般也位于/share或者/usr/share。
====文件====
cd ~ :进入用户目录
ls -a :查看当前目录下的全部文件的列表,包括隐藏文件
ls -l :查看当前目录下所有文件的详细信息列表
共显示了七列信息,从左至右依次为:权限、文件数、归属用户、归属群组、文件大小、创建日期、文件名称
====权限====
上图中的第一列表示权限,一共有10个位置,可以分成4组
比如drwxr-xr-x,分成: d rwx r-x r-x
- 第一组
-
- d —— 文件夹
- - ——普通文件
- l —— 链接
- b —— 块设备文件
- c —— 字符设备文件
- 剩下的三组分别表示归属用户、归属群组、其他用户或群组对该文件的权限
-
- r 表示可读
- w 表示可写,只是写文件的内容,所以不包括权限
- x 表示可执行(对文件),以及可否进入(对目录)
- 以上三种权限的顺序不能颠倒
- 如果某一位为“-",则表示不具有相应的权限
==二进制表示==
使用二进制数字来描述一组权限,虽然非常直观,但是3组权限需要用9位数来表示,使用不够方便。因此我们将三组权限使用3位8进制数字来表示。它们的对应关系为:
r 100 4
w 010 2
x 001 1
r 100 4
w 010 2
x 001 1
将这三位8进制数字相加的结果,就可以表示该组权限的具体内容,例如:
7=4+2+1=rwx
5=4+1=rx
755=4+2+1 4+1 4+1=rwx r-x r-x
7=4+2+1=rwx
5=4+1=rx
755=4+2+1 4+1 4+1=rwx r-x r-x
==a/u/g/o表示==
还可以使用 a 、 u 、 g 、 o 表示归属关系,使用 = 、 + 、 - 表示权限变化,使用 r 、 w 、 x 表示权限内容
a 所有用户; u 归属用户; g 归属群组; o 其它用户
= 具有权限(等于赋值); + 增加权限; - 去除权限
r 可读权限 w 可写权限 x 可执行权限
a 所有用户; u 归属用户; g 归属群组; o 其它用户
= 具有权限(等于赋值); + 增加权限; - 去除权限
r 可读权限 w 可写权限 x 可执行权限
例如:
a+x 给所有用户增加可执行权限
go-wx 将归属群组和其它用户的可写、可执行权限去掉
u=rwx 归属用户具有可读、可写、可执行权限
a+x 给所有用户增加可执行权限
go-wx 将归属群组和其它用户的可写、可执行权限去掉
u=rwx 归属用户具有可读、可写、可执行权限
==更改权限==
chmod <权限表达式> <文件|目录>:更改文件的权限。权限的表达式可以使用三位8进制数字表示,或者使用 augo +-= rxw-s 来表示
-R 递归
-v 显示过程
-c 类似“-v”,仅显示更改部分
--reference=<参考文件或目录> 以指定文件为参考更改权限
-v 显示过程
-c 类似“-v”,仅显示更改部分
--reference=<参考文件或目录> 以指定文件为参考更改权限
例如:
chmod -R a+x path
chmod -Rv 755 path
chown <归属用户>[:归属群组] <文件|目录>:更改文件的归属用户。可以使用用户名或者UID
-R 递归
-v 显示过程
-c 类似 -v ,仅显示更改部分
--reference=<参考文件或目录> 以指定文件为参考更改权限
示例:
chown user:admin path
chown -R user:admin path
chown user path
-R 递归
-v 显示过程
-c 类似 -v ,仅显示更改部分
--reference=<参考文件或目录> 以指定文件为参考更改权限
示例:
chown user:admin path
chown -R user:admin path
chown user path
chgrp <归属群组> <文件|目录>:更改文件的归属群组。可以使用群组名或者GID
==SUID、SGID、Sticky bit:==
- 归属用户的可执行权限位使用 s ,表示SUID
- 归属群组的可执行权限位使用 s,表示SGID
- 任何用户或群组都拥有 其它用户 的权限,所以不需要以 其它用户 身份执行文件,其它用户的可执行
权限位便不会出现 s 。该权限位可能出现的属性为 t,也就是粘着位Sticky bit。
SUID、SGID、Sticky bit也可以像权限一样,使用一个八进制数表示,如下:
4 SUID
2 SGID
1 Sticky bit
通过在“chmod”命令中使用4个八进制数的表达式,如 4755 ,用第一位表示SUID、SGID、或Sticky bit,便能够为文件设置这些特殊权限。示例:
chmod -R 4755 path
4 SUID
2 SGID
1 Sticky bit
通过在“chmod”命令中使用4个八进制数的表达式,如 4755 ,用第一位表示SUID、SGID、或Sticky bit,便能够为文件设置这些特殊权限。示例:
chmod -R 4755 path
====执行命令的身份====
默认情况下,命令提示符末尾是 $ ,表示当前以普通用户身份执行命令
可以使用su(switch user)来切换其他用户
例如用 su root 切换到root(管理员)身份,会提示你输入密码,成功后就会发现$变成了#,将以管理员的身份执行命令。
ubuntu系统会随机设置系统的root密码,这样会更安全一些,这时可以执行sudo命令,输入当前用户的密码后,暂时以root用户的身份执行命令,前提是sudoer列表中包含当前用户的ID,在安装ubuntu系统时创建的用户会被默认地加入到sudoer列表中
格式:sudo 命令名 参数 对象
使用man 命令名可以在线查看Linux命令的文档。
====权限文件====
/etc/passwd:记录了root的相关信息
/etc/shadow:记录了个人的账号信息和密码等,默认的shell也可以在这里设置,总之就是包括了个人用户的信息
/etc/group:Linux所有的群组名称都记录在这里
====使用权限的场合====
- 拷贝文档、目录的时候:拷贝过去的文档、目录的权限设置没有改变,如果是拷贝给其他用户,最好就要改变一下权限,比如改变文档、目录所有者
- 设置只有一个群组内的成员才可以对文档、目录进行操作:这时就只要设置所有者、群组具有rwx的权限,而其他用户的权限为---。