电影网站制作模版,新手如何做网站推广,想要黑掉一个网站 要怎么做,用邮箱找回智慧团建密码文章目录 前言一、用户与用户组1.用户#xff08;文件拥有者#xff09;2.用户组3.其他人 二、Linux用户身份与用户组记录文件1. /etc/passwd2. /etc/shadow3. /etc/group 三、文件属性与权限1. 查看文件属性的方法#xff08;ls#xff09;2.文件属性详细介绍2.1 权限2.2 … 文章目录 前言一、用户与用户组1.用户文件拥有者2.用户组3.其他人 二、Linux用户身份与用户组记录文件1. /etc/passwd2. /etc/shadow3. /etc/group 三、文件属性与权限1. 查看文件属性的方法ls2.文件属性详细介绍2.1 权限2.2 链接2.3 文件或目录的拥有者2.4 文件或目录所属用户组2.5 文件的容量大小2.6 文件的创建日期或是最近的修改日期2.7 文件名 3. 修改文件属性和权限3.1 修改文件所属用户组chgrp3.2 修改文件拥有者chown3.3 修改文件权限chmod 前言
前面介绍了Ubuntu系统的目录结构以及路径相对路径和绝对路径但是我们知道服务器的Ubuntu经常是多个人同时使用因此在Ubuntu系统中同一个的文件相对于不同的用户往往有不同的权限。下面讲简单介绍一下Linux服务器的用户与用户组的概念然后介绍文件的属性和权限。
一、用户与用户组
在Linux系统中每个文件都有相当多的属性与权限其中最重要的概念就是文件的拥有者了。在介绍文件的属性和权限之前必须要介绍用户、用户组以及其他人的概念因为文件的属性和权限就是相对于这三个身份的人来设置的。
1.用户文件拥有者
由于Linux是个多人多任务的系统因此可能常常会有多人同时使用这台主机来进行工作的情况发生为了考虑每个人的隐私以及每个人喜好的工作环境因此文件拥有者的身份就相当重要了。 比如你有一些保密的文件存储在你自己的家目录下。你不想让其他人看到文件的内容这时你就可以设置只有文件拥有者才能看和修改这个文件的内容那么其他人就无法查看文件的内容因为权限不够。
2.用户组
可以想象成用户组的概念类似于你的家人一样组内的其他人就是你的家人你们可以同时生活在家中比如共同使用客厅和厕所等等然后呢你自己的卧室家人也可以进来但是如果你不想让除了自己的其他人进入你的卧室你也可以给自己的卧室上锁这样就只有你能进入而其他人就进不来。用户组的概念还有就是区别于其他人你可以将其他人想象成家人之外的人。
用户组最有用的功能之一就是当你在团队进行协同工作的时候。比如有两个团队a和b在使用同一台Linux服务器a组中有组员1、2、3b组中有组员4、5、6。两组处于竞争关系上司命令两组都要完成一个项目文件完成的差的将被裁员。在写项目文件的时候由于组内人员是一个团队因此必须要组内人员都能查看并且修改项目文件但是不能让另一个组的人访问并修改自己的项目文件。这时就可以设置项目文件的权限通过设置的自己的文件只有自己的组内人员具有查看和修改的权限即可。这就是用户组的使用方式a组和b组就是一个用户组可以在组内设置自己的权限。 比如项目经理需要同时查看两组的进度那么项目经理就需要同时拥有访问组a和组b的文件的权限这时可以设置项目经理这个用户既属于组a也属于组b即可。因为在Linux中每个账户都可以有多个用户组的支持。
可能读者又有疑惑了怎么知道哪些人是一个组哪些人不是一个组呢这个问题我们放到后面的用户管理章节再介绍在这里我们着重讲的是文件的权限概念因此我们目前只需要了解Linux系统中的用户、用户组和其他人的概念并知道文件的权限都是相对于这三个身份的人设置的即可。
3.其他人
前面已经提到了其他人就是用户组外的人可以另外设置一层权限来毙掉用户组外的人访问文件的权限。在上面介绍的组a和组b中组a的所有人相对于组b来说都是其他人。反之亦然。
上面已经介绍了三种身份的用户但是还有一个特殊的人物需要介绍一下它就是“万能的天神”root账户。root在Linux中具有至高无上的权限它可以操作任何系统中的文件。因为使用root用户的时候需要当心。
二、Linux用户身份与用户组记录文件
1. /etc/passwd
默认情况下所有的系统上的账号与一般身份的用户还有天神root用户的相关信息全部都记录在/etc/passwd这个文件中。
2. /etc/shadow
系统所有用户的个人密码都记录在/etc/shadow文件中但是文件中的密码都是加密的我们打开后并不能看到真正的密码。
3. /etc/group
系统中所有的组名以及id都记录在/etc/group这个文件中。
三、文件属性与权限
1. 查看文件属性的方法ls
通过ls可以查看目录中的文件仅仅输入ls后面不加目录的时候输出的是当前所在目录的文件加上目录之后则是输出的所加的目录下的文件内容。详细的使用方法如下所示经常使用的两个参数是 -a 和-l。-a可以列出目录下的所有文件包括隐藏的文件-l则是列出文件的详细信息包括文件的属性、权限等等信息。如果同时使用 -a 和-l则是使用-al这样就可以同时显示两个参数的内容了ls -al 这个命令也可以简写为 ll。
[rootwww ~]# ls [-aAdfFhilnrRSt] 目录名称
[rootwww ~]# ls [--color{never,auto,always}] 目录名称
[rootwww ~]# ls [--full-time] 目录名称
选项与参数
-a 全部的文件连同隐藏档( 开头为 . 的文件) 一起列出来(常用)
-A 全部的文件连同隐藏档但不包括 . 与 .. 这两个目录
-d 仅列出目录本身而不是列出目录内的文件数据(常用)
-f 直接列出结果而不进行排序 (ls 默认会以档名排序)
-F 根据文件、目录等资讯给予附加数据结构例如*:代表可运行档 /:代表目录 :代表 socket 文件 |:代表 FIFO 文件
-h 将文件容量以人类较易读的方式(例如 GB, KB 等等)列出来
-i 列出 inode 号码inode 的意义下一章将会介绍
-l 长数据串列出包含文件的属性与权限等等数据(常用)
-n 列出 UID 与 GID 而非使用者与群组的名称 (UID与GID会在帐号管理提到)
-r 将排序结果反向输出例如原本档名由小到大反向则为由大到小
-R 连同子目录内容一起列出来等於该目录下的所有文件都会显示出来
-S 以文件容量大小排序而不是用档名排序
-t 依时间排序而不是用档名。
--colornever 不要依据文件特性给予颜色显示
--coloralways 显示颜色
--colorauto 让系统自行依据配置来判断是否给予颜色
--full-time 以完整时间模式 (包含年、月、日、时、分) 输出
--time{atime,ctime} 输出 access 时间或改变权限属性时间 (ctime) 而非内容变更时间 (modification time)2.文件属性详细介绍
在这里以鸟哥的Linux私房菜中的代码段为例来介绍文件的属性。在书中作者是使用 su - 切换身份成为root后 使用“ ls -al ”看看会看到下面的内容
[dmtsaistudy ~]$ su - # 先来切换一下身份看看
Password:
Last login: Tue Jun 2 19:32:31 CST 2015 on tty2
[rootstudy ~]# ls -al
total 48
dr-xr-x---. 5 root root 4096 May 29 16:08 .
dr-xr-xr-x. 17 root root 4096 May 4 17:56 ..
-rw-------. 1 root root 1816 May 4 17:57 anaconda-ks.cfg
-rw-------. 1 root root 927 Jun 2 11:27 .bash_history
-rw-r--r--. 1 root root 18 Dec 29 2013 .bash_logout
-rw-r--r--. 1 root root 176 Dec 29 2013 .bash_profile
-rw-r--r--. 1 root root 176 Dec 29 2013 .bashrc
drwxr-xr-x. 3 root root 17 May 6 00:14 .config lt;范例说明处
drwx------. 3 root root 24 May 4 17:59 .dbus
-rw-r--r--. 1 root root 1864 May 4 18:01 initial-setup-ks.cfg lt;范例说明处
[ 1 ][ 2 ][ 3 ][ 4 ][ 5 ][ 6 ] [ 7 ]
[ 权限 ][链接][拥有者][群组][文件大小][ 修改日期 ] [ 文件名 ]在这里要介绍的就是列出的7列内容分别是1:权限 2链接 3文件拥有者 4文件所属群组 5文件大小 6修改日期 7文件名下面讲对这些内容进行详细的介绍。
2.1 权限
权限的介绍以下图为例权限这一栏一共有10个字符。 第一个字符代表的是这个文件的类型例如目录、文件、链接文件等等
当为[ d ]则是目录当为[ - ]则是文件当为[ l ]则是链接文件link file当为[ b ]则是设备文件里面的可供储存的周边设备可随机存取的设备当为[ c ]则是设备文件里面的串行端口设备例如键盘、鼠标一次性读取设备
接下来的字符中以三个为一组且均为[rwx]的三个参数的组合。其中[r]代表可读read、[w]代表可写write、[x]代表可执行execute。要注意的是这三个权限的为止不会改变如果没有某个权限则是用-来代替。
第一组为文件拥有者可具备的权限第二组为加入此用户组的账号的权限第三组为非本人且没有加入本用户组的其他账户的权限
2.2 链接
链接表示有多少文件名链接到此节点inode。每个文件都会将它的权限与属性记录到文件系统inode中不过我们使用的目录树却是使用文件名来记录因此每个文件名就会链接到一个inode这个属性记录的就是有多少不同的文件名链接到相同的一个inode号码。
2.3 文件或目录的拥有者
表示这个文件属于的那个用户。
2.4 文件或目录所属用户组
表示文件所属的用户组。注意这个用户组可以与文件拥有者没有关系。
2.5 文件的容量大小
容量的默认单位为Bytes
2.6 文件的创建日期或是最近的修改日期
这一栏的内容分别为日期月/日。如果这个文件修改的时间距离现在太久那么时间部分会仅显示年份。如下面所示。
[rootstudy ~]# ll /etc/services /root/initial-setup-ks.cfg
-rw-r--r--. 1 root root 670293 Jun 7 2013 /etc/services
-rw-r--r--. 1 root root 1864 May 4 18:01 /root/initial-setup-ks.cfg
# 如上所示/etc/services 为 2013 年所修改过的文件离现在太远之故所以只显示年份
# 至于 /root/initial-setup-ks.cfg 是今年 2015 所创建的所以就显示完整的时间了。2.7 文件名
如果文件名之前多了一个点.则代表这个文件为隐藏文件。
3. 修改文件属性和权限
在这一节我们将介绍几个常用于用户组、拥有者、各种身份的权限修改的命令。
chgrp:修改文件所属用户组
chown:修改文件拥有者
chmod:修改文件的权限SUID,SGID,SBIT等特性这三个命令都需要root权限才能执行因此可以直接使用su -来切换成root用户也可以使用sudo命令来启用root权限但是这需要登陆的账号具有sudo权限才行。要给用户添加权限一般是需要在/etc/sudoers添加和root那行一致的内容保存退出才可。
3.1 修改文件所属用户组chgrp
chgrp就是change group的缩写。修改命令的格式如下
chgrp [-R] 所属组 文件名目录名-R: 进行递归recursive修改亦即连同子目录下的所有文件、目录都更新为属于这个用户组常常用在修改某一目录内所有文件的情况下
下面以鸟哥的Linux的私房菜中的内容为例详细看下使用方法其中登录的是root账号修改了initial-setup-ks.cfg文件的所属用户用户组为users。
[rootstudy ~]# chgrp users initial-setup-ks.cfg
[rootstudy ~]# ls -l
-rw-r--r--. 1 root users 1864 May 4 18:01 initial-setup-ks.cfg
[rootstudy ~]# chgrp testing initial-setup-ks.cfg
chgrp: invalid group: testing lt; 发生错误讯息啰找不到这个群组名修改文件的所属组必须为已有的用户组上面的当改文件的所属组为testing时由于Linux中没有这个组所以就会报错。
3.2 修改文件拥有者chown
chown就是change owner的缩写使用者必须是已经存在系统中的账号也就是在/etc/passwd这个文件中有记录的使用者名称才可以。chown的用途还挺多的他还可以顺便直接修改群组的名称修改命令的格式如下
chown [-R] 帐号名称 文件或目录
chown [-R] 帐号名称:群组名称 文件或目录-R: 进行递归recursive修改亦即连同子目录下的所有文件、目录都更新为属于这个用户组常常用在修改某一目录内所有文件的情况下
范例
范例将 initial-setup-ks.cfg 的拥有者改为bin这个帐号
[rootstudy ~]# chown bin initial-setup-ks.cfg
[rootstudy ~]# ls -l
-rw-r--r--. 1 bin users 1864 May 4 18:01 initial-setup-ks.cfg范例将 initial-setup-ks.cfg 的拥有者与群组改回为root
[rootstudy ~]# chown root:root initial-setup-ks.cfg
[rootstudy ~]# ls -l
-rw-r--r--. 1 root root 1864 May 4 18:01 initial-setup-ks.cfg3.3 修改文件权限chmod
权限的设置方法有两种分别是使用数字或者是符号来进行权限的变更。我觉得数字修改权限更方便所以在这我只讲数字更改文件权限的方法。 Linux文件的基本权限就有9个分别是拥有者owner、所属群组group、其他人others三种身份各自自己的读read、写write、执行execute权限。使用数字修改文件的权限每个权限都可以由一个数字来代替如下
r: 4
w: 2
x: 1每种身份拥有者owner、所属群组group、其他人others的各自的三个权限读read、写write、执行execute需要累加例如文件的权限为:[-rwxrwx---]该文件的权限数字为770计算如下
owner rwx 421 7
group rwx 421 7
others --- 000 0修改文件权限的命令为
chmod [-R] xxx 文件或目录
#xxx就是各个身份的权限数字-R: 进行递归recursive修改亦即连同子目录下的所有文件、目录都更新为属于这个用户组常常用在修改某一目录内所有文件的情况下
举例来说如果要将.bashrc这个文件所有的权限都设置启用那么就需要设置数字权限777
范例
[rootstudy ~]# ls -al .bashrc
-rw-r--r--. 1 root root 176 Dec 29 2013 .bashrc
[rootstudy ~]# chmod 777 .bashrc
[rootstudy ~]# ls -al .bashrc
-rwxrwxrwx. 1 root root 176 Dec 29 2013 .bashrc