一, chmod
chmod 命令用于修改文件或者文件夹的权限,
之前学习过
ls -l
如图, 第一位 - 之前已经学习过, 代指这是一个文本
之后的 rw-r--r-- 是文件的权限
前三位 rw - 是文件所有者的权限
中间三位 r-- 是文件所属组的权限
后三位 r-- 是其他用户的权限
文件的权限有三种:
r(Read, 读取): 对文件而言, 具有读取文件内容的权限; 对目录来说, 具有浏览目录的权限.
w(Write, 写入): 对文件而言, 具有新增, 修改, 删除文件内容的权限; 对目录来说, 具有新建, 删除, 修改, 移动目录内文件的权限.
x(eXecute, 执行): 对文件而言, 具有执行文件的权限; 对目录来说该用户具有进入目录的权限.
权限拥有权限值, r=4 ,w=2 ,x=1,
上图中 rw-r--r-- 就可以用 644 表示
将此文件的权限修改为 700
chmod 700 /tmp/chen1/123.txt
然后
ls -l /tmp/chen1/
可以发现 123.txt 的权限变成了 rwx------
也可以使用
chmod g+r,o+w /tmp/chen1/123.txt
此时文件权限变为 rwxr---w- 即 742
g 就是 group 用户组
o 就是 other 其他用户,
还有个 u 是指文件所有者, 这种方法可以明确的修改文件的权限, 比起用权限值修改略麻烦;
接下来修改文件夹的权限
ls -ld /tmp/chen1/
文件权限为 rwxr-xr-x 755
chmod 700 /tmp/chen1/
ls -l /tmp/chen1/
可以发现 123.txt 文件权限并没有改变, 也就是说 chmod 命令只是修改了文件夹本身的权限, 并没有修改文件夹内部文件的权限
如果要修改文件夹和文件夹内部文件的权限, 则使用下面的命令
chmod -R 741 /tmp/chen1/
可以发现文件夹 / tmp/chen1 / 与文件 / tmp/chen1/123.txt 的权限都变为了 741;
二, chown
change owner 修改文件所属用户
cat /etc/passwd
可以看到最后两个是我之前增加的用户 chen1 和 user1
接着我来修改文件 / tmp/chen1/123.txt 的用户
ls -l /tmp/chen1/123.txt
可以看到文件的用户和用户组都是 root
修改所属用户
chown chen1 /tmp/chen1/123.txt
查看
ls -l /tmp/chen1/123.txt
修改所属组
chgrp user1 /tmp/chen1/123.txt
查看
ls -l /tmp/chen1/123.txt
也可以使用
chown user1:chen1 /tmp/chen1/123.txt
同时修改用户组和用户, 用冒号分隔即可,
ls -l /tmp/chen1/123.txt
单独修改用户组也可以
chown :user1 /tmp/chen1/123.txt
三, umask
umask 用来改变新建文件和新建文件夹的默认权限
文件夹默认所有的权限值 777, 文件 666
umask 默认为 0022
umask 第一位的 0 可以先省略
所以新建文件夹默认权限为 777-022 = 755
新建文本默认权限为 666-002=644 ;
如果将 umask 修改为 0003
umask 0003
则新创建的文件夹权限变为 777-003=774
而新建文本权限为 664 而并不是 663
这是因为, 文本所有权限为 664(rw-rw-rw-) 003 (-------wx)
由于 664 权限中已经没有 x 权限, 所以现在权限为 (rw-rw-rw-)- (-------wx) =(rw-rw-r--)
四, chattr
特殊权限
使用
man chattr 可以查看具体用法
chattr +i /tmp/chen1/123.txt
则文件 / tmp/chen1/123.txt 无法修改, 删除
使用
lsattr /tmp/chen1/123.txt
可以看到有 i 权限
chattr -i /tmp/chen1/123.txt
就可以删除 i 权限;
chattr +a /tmp/chen1/123.txt
则文件 / tmp/chen1/123.txt 只可以追加, 无法进行删除等其他操作
chattr -a /tmp/chen1/123.txt
删除 a 权限;
当文件夹拥有 i 权限或者 a 权限时, 可以修改文件夹内已经存在的文件的内容, 但是不可以删除文件, 当拥有 a 权限时, 文件夹内还可以新增文件;
lsattr -R /tmp/chen1/
可以查看文件内所有子文件及文件夹的隐藏权限.
Linux 学习笔记 (八) 文件和目录权限 chmod, 更改所有者和所属组 chown,umask, 隐藏权限
来源: http://www.bubuko.com/infodetail-2481566.html