随笔 - 750  文章 - 1  评论 - 107  阅读 - 34万

Linux 权限学习

Linux  一般将文件的读写权限分为三类: owner / group / others ,并且这三类各有 read / write / execute 等权限。

owner 文件拥有者

group 角色

others 其他人

特殊的是, root 不受系统权限限制

 

Linux 的用户信息记录在 /etc/passwd 文件中

个人密码存在 /etc/shadow 文件中

角色记录在 /etc/group 文件中

 

使用 ls -al 命令后,输出的内容各列意思是: 权限 、连接数 、 拥有者、角色、文件大小( bytes )、新建或修改日期(不同年份的只显示年月日,不显示 时间)、文件名

如果要显示完整的时间格式,可以使用 ls -la --full-time

文件名前面有 . 的,表示是隐藏文件, -a 可以列出隐藏文件( -la 等于 -l -a )

文件名不要带有 * ? > < ; & ! [ ] | \ / @ ' " ~ ( ) { } ^ 等符号,以免访问时出现异常。

文件开头也要避免 . - + 等字符( . 表示隐藏文件)

 在权限这一列,每行有 10 个字符,分别表示:

文件类型, d 目录  - 文件  l 链接  b 可移动设备  c 串口设备(键盘鼠标等)s 接口文件 p 数据传输文件(pipe)

 

 

文件拥有者可读, r 或者  -  , r 可读 - 无权限

文件拥有者可写,w 或者 -,这个权限不包括删除权限

文件拥有者可执行,x 或者 -

角色可读, r 或者  - 

角色可写,w 或者 -

角色可执行,x 或者 -

其他人可读, r 或者  - 

其他人可写,w 或者 -

其他人可执行,x 或者 -

 

在目录的权限设定上,与文件同样用 rwx 表示,但具体权限稍有不同:

r 可读取目录及里面文件或目录名称

w 可在目录下新建文件或目录,可删除目录下的文件或目录,可重命名目录下的文件或目录,可移动目录下的文件或目录

x 可以将此目录设置为工作目录

 

./ 表示当前目录  

../ 表示上一层目录

- 表示前一个工作目录

~ 表示当前用户的工作目录

~user 表示 user 家的工作目录

按 FHS 标准,Linux 的目录结构如下:

  可分享的(shareable) 不可分享的(unshareable)

不变的

(static)

/usr 软件放置处 /etc 配置文件
/opt 第三方软件 /boot 开机与核心文件

可变动的

(variable)

/var/mail 邮箱 /var/run 程序相关
/var/spool/news 新闻 /var/lock 程序相关

还有 / 根目录、 /bin 常用命令、 /boot 开机时使用的文件、/dev 与设备相关的文件、/etc 系统配置文件(通常可读不可写)

/lib 函式库、/media 媒体库、/mnt 挂载设备、/opt 第三方软件、/run 程序相关、/sbin 系统级命令、/srv 服务、/tmp 临时文件

/home 用户工作目录、/proc 虚拟内存目录、/sys 虚拟目录

 

使用 su root 可以切换用户身份,此时会提示输入 root 用户的密码,成功后会发现只是角色变更,但工作目录还没有切换。

使用 su - root 就可以切换身份并切换工作目录, su -  也可以(省略了 root )

使用 exit 可以退出切换的身份,回到原来的身份。

 

chgrp  改变文件的角色(change group),修改后的角色要在 /etc/group 中

chown 改变文件的拥有者,修改后的用户要在 /etc/passwd 中

chmod 改变文件的权限

命令加 -R 表示子文件夹中的权限也一起修改

 

修改 XXX 文件的角色为 users : chgrp users XXX  

如果提示:Operation not permitted ,表示不允许的操作,需要用 su 提权

 修改 XXX 文件的拥有者为 mysql : chown mysql XXX

chown 也能用来修改角色,chown users.root XXX 就是拥有者、角色一起修改的命令

如果只修改角色,chown .root XXX  /  chown :root XXX 就能达到目的(在这个命令里  .  :都可以用于分隔)

修改 XXX 文件的权限时,可以用数字或符号来修改: chmod 770 XXX

数字: r:4  w:2  x:1  ,所以 770 表示 拥有者、角色 有全部权限,其他人无权限,7 = 4 + 2 + 1

7 可读可写可执行

6 可读可写

5 可读可执行

4 可读

3 可写可执行

2 可写

1 可执行

0 无权限

符号: u g o a + - = r w x

chmod u=rwx,g+rw,o-x XXX 这行命令表示,对 XXX 文件修改权限为:

拥有者设定为可读可写可执行权限

角色加上可读可写权限

其他人移除可执行权限

 

  改变工作目录: cd 工作目录

  复制文件: cp 来源文件 目标文件( -a 连同权限、修改时间等属性一起复制 )

  移动文件: mv 来源文件 目标文件

  删除文件: rm 目标文件

  显示当前目录: pwd ( -P 参数会显示实际路径 )

  新建一个目录: mkdir ( -m 711 会同时设置权限 -p 如果上层目录不存在,则创建它)

  删除一个空的目录:rmdir (-p 如果上层目录是空的,也删除它)

Linux 支持环境变量  echo $PATH 可以输出当前设定的环境变量,环境变量可以修改

ls 命令是最常用的命令,它支持的参数列举如下:

-a   全部文件,包括 .  .. 隐藏文件

-A   全部文件,包括 隐藏文件

-d   只列出文件夹

-f    直接列出,不按文件名排序

-F   在文件名前添加类型,* 表示可执行 / 表示目录 = 表示 Socket | 表示FIFO文件

-h   将文件大小以 KB、GB 换算后显示

-i    列出 index 

-l    详细输出(不加 -l 时只输出文件名,加了会输出 权限、用户、角色、修改时间 等信息)

-n   列出 UID 与 GID 而非用户、角色名称

-r    反向排序

-R   展开子目录下的文件列表

-S   按文件大小进行排序

-t    按时间排序

 

--color=never    不加颜色区分

--color=always  加上颜色区分

--color=auto      加上预设的颜色区分

--full-time          输出完整的时间格式

--time={ atime , ctime }  输出 access 时间或权限变更时间 ctime 而非内容变更时间 

 

basename 路径    返回路径最后的文件名

dirname    路径     返回路径最后的文件夹名

 

cat  \ more \ less 查阅文件

head 显示头几行

tail \  tac  显示最后几行

nl  显示行号

od  以二进制方式显示 ( od -t xCc XXX 可以输出 hex 样式的内容)

如果想输出一个字符串的 Ascii ,可以输入命令: echo 字符串 | od -t dCc

 

文件有三个时间:modification time 、status time、access time

内容变更时,mtime(modification time)会随之变化

权限与属性变更时,ctime (status time)会随之变化

文件内容被读取时,atime(access time)会随之变化

可以多个命令用 ; 连接后一次执行: date; ls -l XXX ; ls -l --time=atime XXX ; \

  ls -l --time=ctime XXX

上面这个命令里,尾部的 \ 表示换行接着输入。这个命令是由四个命令组合到一起的。

 

touch -a -c -d -m -t 修改文件时间,这个指令通常还会被用来建立一个空的文件

umask 可以看到系统的预设权限( 0022 ,表示新的文件或目录会去掉角色可写权限、其他人可写权限),加 -S 会以符号显示

通常,新建文件时,默认权限是 666,新建目录时,默认权限是 777

所以新建文件的权限最终是 -rw-r--r-- ( -rw-rw-rw - -----w--w-)

新建目录的权限最终是 drwxr-xr-x ( drwxrwxrwx - -----w--w-)

 

在新建文件或目录前,可以先修改预设权限  umask 002  表示把预设权限改成 新的文件或目录 去掉 其他人可写权限

除此之外,还有 chattr 和 lsattr  用于修改文件的隐藏权限

 

 

 

 此文章中的内容来自:《鸟哥的Linux私房菜-基础篇》第四版

posted on   z5337  阅读(107)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 【自荐】一款简洁、开源的在线白板工具 Drawnix
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
· Docker 太简单,K8s 太复杂?w7panel 让容器管理更轻松!
历史上的今天:
2017-07-17 [C#]反射相关
< 2025年3月 >
23 24 25 26 27 28 1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31 1 2 3 4 5

点击右上角即可分享
微信分享提示