目录或文件的权限
目录和文件拥有:读(r)、写(w)、执行(x)的权限
使用 ll 或 ls -l命令来查看其权限
[root@mail ~]# ll
total 20
-rwxr--r--. 1 root root 152 Jan 26 17:20 s1.sh
[root@mail ~]# ls -l
total 20
-rwxr--r--. 1 root root 152 Jan 26 17:20 s1.sh
权限对文件的作用
r (权限值4):读取文件内容(cat、more、head、tail)
w(权限值2):编辑、新增、修改文件内容(vi、echo),但不包含删除文件
x(权限值1 ):可执行
对文件来讲:最高权限是执行权限(x),所以文件要少赋予执行权限。
权限对目录的作用
r:可以查询目录下文件名(ls)。
w: 具有修改目录结构的权限。如新建文件和目录,删除此目录下文件和目录,重命名此目录下文件和目录,剪切此目录下文件或目录。(touch、rm、mv、cp)。
x:可以进入目录(cd)。
对目录来讲:最高权限是写权限(w),所以目录要少赋予写权限。
注:0没有任何权限,5(rx)可以查看和进入,7(rwx)拥有最高权限;1、4、6权限对目录没有意义。
一、chgrp 更改文件(目录)的属组
[root@mail ~]# ll
total 1
-rwxr--r--. 1 root root 152 Jan 26 17:20 s1.sh
[root@mail ~]# chgrp user1 s1.sh
[root@mail ~]# ll
total 1
-rwxr--r--. 1 root user1 152 Jan 26 17:20 s1.sh
二、chown 更改文件(目录)属组、属主
让其他人拥有最高权限的最佳做法是使用chown更改文件的所有者
1.同时更改文件的属组和属主
[root@mail ~]# ll
total 20
-rwxr--r--. 1 root root 152 Jan 26 17:20 s1.sh
-rwxr--r--. 1 root root 972 Jan 26 17:17 s2.sh
-rwxr--r--. 1 root root 226 Jan 26 17:57 s3.sh
-rwxr--r--. 1 root root 391 Jan 26 17:38 s4.sh
-rwxr--r--. 1 root root 254 Jan 26 17:46 s5.sh
[root@mail ~]# chown user1:user1 s2.sh
[root@mail ~]# ll
total 20
-rwxr--r--. 1 root root 152 Jan 26 17:20 s1.sh
-rwxr--r--. 1 user1 user1 972 Jan 26 17:17 s2.sh
-rwxr--r--. 1 root root 226 Jan 26 17:57 s3.sh
-rwxr--r--. 1 root root 391 Jan 26 17:38 s4.sh
-rwxr--r--. 1 root root 254 Jan 26 17:46 s5.sh
2.更改文件的属主
[root@mail ~]# ll
total 20
-rwxr--r--. 1 root root 152 Jan 26 17:20 s1.sh
-rwxr--r--. 1 root root 972 Jan 26 17:17 s2.sh
-rwxr--r--. 1 root root 226 Jan 26 17:57 s3.sh
-rwxr--r--. 1 root root 391 Jan 26 17:38 s4.sh
-rwxr--r--. 1 root root 254 Jan 26 17:46 s5.sh
[root@mail ~]# chown user1 s3.sh
[root@mail ~]# ll
total 20
-rwxr--r--. 1 root root 152 Jan 26 17:20 s1.sh
-rwxr--r--. 1 root root 972 Jan 26 17:17 s2.sh
-rwxr--r--. 1 user1 root 226 Jan 26 17:57 s3.sh
-rwxr--r--. 1 root root 391 Jan 26 17:38 s4.sh
-rwxr--r--. 1 root root 254 Jan 26 17:46 s5.sh
3.更改文件的属组
[root@mail ~]# ll
total 20
-rwxr--r--. 1 root root 152 Jan 26 17:20 s1.sh
-rwxr--r--. 1 root root 972 Jan 26 17:17 s2.sh
-rwxr--r--. 1 user1 root 226 Jan 26 17:57 s3.sh
-rwxr--r--. 1 root root 391 Jan 26 17:38 s4.sh
-rwxr--r--. 1 root root 254 Jan 26 17:46 s5.sh
[root@mail ~]# chown :user1 s3.sh
[root@mail ~]# ll
total 20
-rwxr--r--. 1 root root 152 Jan 26 17:20 s1.sh
-rwxr--r--. 1 root root 972 Jan 26 17:17 s2.sh
-rwxr--r--. 1 user1 user1 226 Jan 26 17:57 s3.sh
-rwxr--r--. 1 root root 391 Jan 26 17:38 s4.sh
-rwxr--r--. 1 root root 254 Jan 26 17:46 s5.sh
三、chomd 更改文件(目录)权限
使用 [ u、g、o、a ] [+、-、=]来设置文件或目录的权限[r、w、x]
u:user 所有者
g:group 所属组
o:other 其他
a:all 所有用户,包括所有者、所属组、其他
+:增加权限
-:减少权限
=:设置权限
1.使用权限字符设置
(1)chmod g 设置组的权限
[root@mail ~]# ll
total 20
-rwxr--r--. 1 root root 152 Jan 26 17:20 s1.sh
[root@mail ~]# chmod g=rwx s1.sh
[root@mail ~]# ll
total 20
-rwxrwxr--. 1 root root 152 Jan 26 17:20 s1.sh
(2)chmod u 设置主的权限
[root@mail ~]# ll
total 20
-rwxr--r--. 1 root root 152 Jan 26 17:20 s1.sh
[root@mail ~]# chmod u=r-- s1.sh
[root@mail ~]# ll
total 20
-r--r--r--. 1 root root 152 Jan 26 17:20 s1.sh
(3)chmod o 设置其他用户的权限
[root@mail ~]# ll
total 20
-rwxr--r--. 1 root root 152 Jan 26 17:20 s1.sh
[root@mail ~]# chmod o+x s1.sh
[root@mail ~]# ll
total 20
-rwxr--r-x. 1 root root 152 Jan 26 17:20 s1.sh
2.使用权限值设置
[root@mail ~]# ll
total 20
-rwxr--r-x. 1 root root 152 Jan 26 17:20 s1.sh
[root@mail ~]# chmod 777 s1.sh
[root@mail ~]# ll
total 20
-rwxrwxrwx. 1 root root 152 Jan 26 17:20 s1.sh
四、aclacl 更改文件(目录)权限
- setfacl:设置文件(目录)权限
(1)setfacl -m u 设置用户的权限
#指定某用户的权限
[root@mail ~]# setfacl -m u:root:rw s1.sh
(2) setfacl -m g 设置组的权限
#指定某组的权限
[root@mail ~]# setfacl -m u:root:rw s1.sh
(3)setfacl -m o 设置其他用户的权限
[root@mail ~]# setfacl -m o:rw s1.sh
- getfacl:查看文件(目录)权限
[root@mail ~]# getfacl s1.sh
# file: s1.sh
# owner: root
# group: root
user::rwx
group::rwx
other::rwx
- 删除acl
[root@mail ~]# setfacl -b s1.sh
五、特殊权限
- SUID
suid s(有x) S 4 用户对应的权限位(用户对应的3位上)
suid小结:是针对命令和二进制程序的
- 用户或属主对应的前三位权限的x位上如果有s就表示suid权限,
当x位上没有小写x执行权限的时候,suid的权限显示的就是大S。 - suid的作用是让普通用户可以以root(或其他)的用户角色运行只有root(或其他)账号才能运行的程序或命令,或程序命令对应本来没有权限操作的文件等。
- suid和su及sudo的区别:suid为某一个命令设置特殊权限(使用者为所有人)
-
SGID
sgid s(有x) S 2 用户组对应的权限位(用户组对应的3位上)
sgid小结:sgid是针对用户组权限位的- 对于文件来说,sgid的功能如下:
- sgid仅对二进制程序有效
- 二进制命令或程序需要有可执行权限x
- 执行命令的任意用户可以获得该命令程序执行期间所属组的权限
- 对于目录来说,sgid的功能如下:
- linux里默认情况所以用户创建文件,默认用户和组都是自身
- sgid可以让用户在此目录下创建的文件和目录具有和此目录相同的用户组设置
- 对于文件来说,sgid的功能如下:
-
SBIT
sticky t(有x) T 1 其他用户对应的权限位
三种特殊权限的设置方法:
suid:chmod 4755 file 或者chmod u+s file
sgid:chmod 2755 file 或者 chmod g+s file
sticky:chmod 1777 file 或者 chmod o+t file
六、sudo 临时提权,可以暂时拥有管理员权限
[root@mail ~]# su - user1
Last login: Mon Dec 3 18:49:23 CST 2018 on pts/0
[user1@mail ~]$ sudo user1