Linux用户权限
基本权限UGO(user group other)
Linux 文件的 ugo 权限把对文件的访问者划分为三个类别:文件的所有者、组和其他人。所谓的 ugo 就是指 user(也称为 owner)、group 和 other 三个单词的首字母组合。
管理员面前的权限
管理员面前的权限是由超管决定某个计算机用户,可不可以访问某个文件(文件包含:图片文件 视频文件 普通文件)
- 设置权限的两个基本元素
1.权限对象
2.权限类型
- 权限的三类对象
属主:u
属组:g
其他人:o
特殊对象:所有人a(U+G+O),a(all)意思是全部、所有,表示一种简要打法
- 权限的三种类型
读取:r = 4
写入: w = 2
执行:x = 1
- 设置权限
更改权限
使用符号
使用符号:u用户 g组 o其他 r读 w写 x执行
语法:chmod 对象(u/g/o/a)赋值符(+/-/=)权限类型(r/w/x) 文件/目录
授权指令 对象加减权限 文件或者目录
chmod:change代表改变 mod代表设置
-R代表给文件夹进行授权,授权时这个文件夹和文件夹中的所有文件或者文件夹都有该权限
一定要在/tmp/下进行!
cd /tmp/
touch file1
ls -l file1
查看文件的属性
-rw-r--r-- 1 root root 0 10月 26 22:29 file1
类型和权限(9个符号) 链接 属主 属组 大小(字节) 创建时间 文件名称
属主 属组 其他人
u g o
用等号“=”表示覆盖权限
chmod a=rx file
a代表all全部(ugo),=表示覆盖
cd /tmp
touch file1.txt
chmod a=rx file1.txt
ls -l file1.txt
实例1:给file1.txt授予:属主读的权限,没有写和执行的权限
chmod u=r file1.txt
实例2:给file1.txt授予:属组读,写和执行的权限
chmod g=r file1.txt
实例3:给file1.txt授予:其他人,没有读写和执行的权限
chmod o=--- file1.txt或者chmod o= file1.txt或者chmod o-rwx file1.txt
- 查看文件夹的属性
ls -l -d /tmp/
- 编写程序
cd /tmp/
touch file1.txt
ls -l /tmp/file1.txt
vi ./file1.txt
file1.txt的内容
对文件增加执行的权限
chmod u+x file1.txt
ls -l /tmp/file1.txt
让文件进行执行
./file1.txt
所有人都有读写执行的权限chmod a=rwx file1.txt
所有人清除读写执行的权限chmod a=- file1.txt
用户和组有读写权限而其他人只有读的权限chmod ug=rw,o=r file1.txt
使用数字进行授权
使用数字授权和使用符号进行授权是一样的
chmod 000 file1.txt
chmod 671 file1.txt
实例1:通过chmod数字进行授权,用户进行读写执行,组读写,其他人无
chmod 760 file1.txt
实例2:通过chmod数字进行授权,用户进行读写执行,组进行读写执行,其他人读写执行
chmod 777 file1.txt
实例3:通过chmod数字进行授权,用户无权限,组无权限,其他人读写执行
chmod 007 file1.txt
更改属主、属组
- chown命令(change owner)
改变主人
chown:设置一个文件属于谁,属主
语法:chown 用户名.组名 文件
useradd user01
groupadd hr
chown user01.hr /tmp/file1
ls -l /tmp/file1
chown root /tmp/file1
ls -l /tmp/file1
chown .user01 /tmp/file1
- chgrp命令
chgrp:设置一个文件属于哪一个组,属组
语法:chgrp 组名 文件
chgrp hr /tmp/file1
ls -l ./file1
1.每一个用户都会有一个自己的基本组
user01的用户,会有一个user01组
2.文件有两个属性,属主:主人,属组:组员。针对一个文件进行授权
问题:改file1的属性的时候,file2会受影响吗?
file2不会受到影响,影响的只是file1
ls -l file1
chmod chown chgrp对文件授权的同时,也可以对文件夹进行授权。
对文件夹进行设置的时候,文件夹中的文件不会改变。
实验证明:
cd /tmp
mkdir /tmp/dir1
cd ./dir1
mkdir /tmp/dir1/dir000
touch ./file1.txt
ls -l .
cd ..
chown user01.hr /tmp/dir1
ls -l dir1
由此可见:对文件夹操作时,文件夹中的文件和文件夹的属性是不会发生改变的
如果想要改文件夹属性的同时连同它下的文件和文件夹一起改掉属性,则需要一个选项-R,-R(Recursion)表示递归使目录下的所有文件和目录统一设置
chown -R user01.hr /tmp/dir1
ls -l /tmp/dir1
- 案例
针对hr部门的访问目录设置权限,要求如下
1.root用户和hr组的员工可以进行读写执行
2.其他用户没有任何的权限
groupadd hr
useradd hr01
useradd hr01 -G hr//将hr01的附加组设置为hr
useradd hr01 -G hr//将hr02的附加组设置为hr
mkdir /home/hr
ls -l -d /home/hr
chown root.hr /home/hr
ls -dl /home/hr
chmod 770 /home/hr
ls -ld /home/hr
基本权限ACL
ACL(access control list访问 控制 列表),限制用户对文件的访问
ACL是UGO的补充或者说是UGO的加强版。
- ACL文件权限管理
设置不同的用户,不同的基本权限(r,w,x),对象数量不同
语法:命令 设置 用户或者组:用户名:权限 文件对象
setfacl -m 设置文件访控 -设置 对象:对象名称:权限
setfacl -m g:hr:rwx /home/file1
查看文件有哪些ACL权限
getfacl 路径和文件名称
查看文件test.txt有哪些ACL权限getfacl /home/test.txt
出现的是属主,属组,其他人
设置用户alice,jack权限
前提是创建alice和jack用户
useradd alice
useradd jack
setfacl -m u:alice:rw /home/test.txt
setfacl -m u:jack:- /home/test.txt
getfacl /home/test.txt
命令setfacl -m o::rw /home/test.txt
中加o是什么意思?
o代表其他人setfacl -m o::rw /home/test.txt
- 查看/删除命令
删除文件的权限
setfacl -x u:用户 路径和文件名称
getfacl /home/test.txt
setfacl -x u:alice /home/test.txt
setfacl -x u:jack /home/test.txt
清除文件的权限:
setfacl -b 路径和文件
移除掉所有的扩展的ACL权限
setfacl -b /home/test.txt
修改文件的权限chmod
修改文件和属主chown
修改文件的权限plus版setfacl
输出的信息反复出现才是难点。
- 观察这个命令
watch -n秒数 '详细命令'
watch -n1 'ls -l /tmp/file.txt'
- 练习:
1.修改主人有读写执行的权限
chmod u+x /tmp/file
2.改属组的权限为读和写
chmod g+w /tmp/file
chmod g+r /tmp/file
chmod g=rw /tmp/file
3.设置其他人没有权限
chmod o-r /tmp/file
上述要求的组合命令:
chmod 760 /tmp/file
4.改变主人是user01
useradd user01
chown user01 /tmp/file
5.改变文件的属组hr
groupadd hr
chown .hr /tmp/file
6.修改文件的setfacl权限
setfacl -m u:user01:r /tmp/file
setfacl -m g:hr:rwx /tmp/file
7.将文件还原
setfacl -b /tmp/file
特殊权限
系统创建文件的权限一般是644。
系统创建目录的权限一般是755。
特殊位suid
suid是权限的当中的特殊位。suid是针对文件所设置的一个特别的权限,使调用文件的用户,临时具备属主的能力。
cd /usr
ls -l /usr/bin/cat
chmod u+s /usr/bin/cat
ls -l /usr/bin/cat
文件属性chattr
有一个文件很重要,万一被删除怎么办?
i(immutable)在文件上启用这个属性,我们不可以更改、重命名或者删除这个文件。
chattr 选项 文件路径和文件名称
案例:
watch -n1 'lsattr file100'
touch file100
chattr +i file100
rm -rf file100//无法删除
mv file100 file111//无法重命名
//在chattr中加上i选项,就可以保证不被人修改
a,将文件锁住,让用户在文件中只可以进行追加
touch /home/file100
watch -n1 'lsattr /home/file100'
chattr +a file100
vim file100
echo 111 >> file100//将111追加到file100文件,>>代表追加字符
cat file100//查看当前目录下的file100
vim file100//再次查看文件
注意:超管也会受影响。
chattr选项 | 实现效果 |
---|---|
i | 在文件上启用这个属性,我们不可以更改、重命名或者删除这个文件 |
a | 将文件锁住,让用户在文件中只可以进行追加 |
c | 一个文件加上这个c属性,在存储的时候会进行压缩 |
进程掩码umask
为什么系统创建文件的权限是644?为什么系统创建的文件夹的权限是755?
这是由于进程掩码umask。
新建文件、目录的默认权限会受到umask的影响,umask表示要减掉的权限
- 观看系统默认的权限
umask
0022//会返回一串数字,代表的是进程掩码
watch -n1 'ls -l /home/file1'
touch /home/file1
chmod u+s file1
chmod u-s file1
观察这个结果可以看出,在u+s后屏幕中会有一个S出现,这是由于这个文件还没有执行权限(x)。如果有执行权限,这里将会是s
chmod 4777 file1
chmod 2777 file1
chmod 1777 file1
观察屏幕中的变化会发现变化的是特殊位,4777表示的是suid
umask影响着系统的默认权限,通过umask可以看到系统的掩码。
创建文件夹的时候是用0777-0022 = 0755,所以系统创建文件夹的权限是755。
创建文件的时,系统为了保护自己,所以在创建的文件上,去掉了所有的执行。权限是0777-0022-0111 = 0644,所以系统创建的文件的权限是644。
使用命令查看是不是755和644
mkdir dir
touch file
ls -l -d {dir,file}
- 通过umask设置进程掩码
umask 0000