使用ll (ls -l )查看该目录的内容列表,如:d rwx r-x r-x ,代表的就是这个目录或文件的权限。简单来讲,r表示可读、w表示可写、x表示可执行。
第一列表示这个文件的类型
d: 表示这个文件为目录
-: 表示这个文件为文件
l: 表示这个文件为连接文件
b: 表示设备文件里面的可供存储的借口设备
c: 表示设备里面的串行端口设备
第一组rwx表示文件所有者权限。
第二组rwx表示同用户组权限,与文件所有者处于同一用户组拥有的权限。
第三组rwx表示其他人权限,不是文件所有者也不在同意用户组,则为其他人。
查看文件的权限
# ls -l install.log
使用 crontab 命令
– 编辑:crontab -e -u 用户名
– 查看:crontab -l -u 用户名
– 清除:crontab -r -u 用户名
# ls -l /etc/passwd
-rw-r–r--. 1 root root 2044 10月 30 19:08 /etc/passwd
权限位 硬连接数 属主 属组 大小 最后修改时间 文件/目录名称
# -rw-r--r--表示权限位
后面9个项分3个分别表示所有者(rw-),所属组(r–),其他用户(r–)的权限
以“-”开头: 文件 例如:-rw-r–r--. 1 root root 2044 10月 30 19:08 /etc/passwd
以“l”开头: 快捷方式
以“d”开头: 目录 例如:drwxr-xr-x. 2 root root 6 10月 30 19:45 /nsd01
使用 chmod 命令 修改权限
– chmod [-R] 归属关系±=权限类别 文档…
[-R] 递归赋予权限
# chmod u-x /nsd01 #所属主去掉x权限下
# chmod g+w /nsd01 #所属组添加w权限
# chmod o=rwx /nsd01 #其他用户全都改为rwx权限
设置文档归属:
使用 chown 命令
– chown [-R] 属主 文档…
– chown [-R] :属组 文档…
– chown [-R] 属主:属组 文档…
# useradd dc #添加用户dc
# mkdir /nsd05 #创建目录nsd05
# ls -ld /nsd05 #查看目录的详细属性
# groupadd tedu #创建组tedu
# chown dc:tedu /nsd05 #将dc用户设置属主,tedu组为属组
# ls -ld /nsd05
# chown student /nsd05 #设置student为属主
# chown :root /nsd05/ #设置root为属组
5.实例:
实例1.
公司技术部有一台Linux开发服务器,根据部门内项目组的构成情况,需要建立相应的用户账号,并对开发数据相关目录配置访问权限。
1.文件夹/tech/nsdhome、/tech/jsdhome,分别归属于nsd组、jsd组,禁止其他用户进入。
2.创建部门公共目录/public,技术部的所有员工(tech组)对其拥有可读、可写、可执行,其他用户禁止访问此目录。
[root@localhost /]# mkdir -p /tech/nsdhome
[root@localhost /]# mkdir -p /tech/jsdhome
[root@localhost /]# mkdir /public
[root@localhost /]# groupadd nsd
[root@localhost /]# groupadd jsd
[root@localhost /]# groupadd tech
[root@localhost /]# useradd -g nsd nsd01
[root@localhost /]# useradd -g nsd nsd02
[root@localhost /]# useradd -g jsd jsd01
[root@localhost /]# useradd -g jsd jsd02
[root@localhost /]# useradd -g tech yg01
[root@localhost /]# useradd yg02
[root@localhost /]# chown :nsd /tech/nsdhome
[root@localhost /]# ls -l /tech/nsdhome
总计 0
[root@localhost /]# ls -ld /tech/nsdhome
drwxr-xr-x 2 root nsd 4096 07-30 11:36 /tech/nsdhome
[root@localhost /]# chmod o-rx /tech/nsdhome
[root@localhost /]# chown :jsd /tech/jsdhome
[root@localhost /]# ls -ld /tech/jsdhome
drwxr-xr-x 2 root jsd 4096 07-30 11:36 /tech/jsdhome
[root@localhost /]# chmod o-rx /tech/jsdhome
[root@localhost /]# chown :tech /public
[root@localhost /]# ls -ld /public
drwxr-xr-x 2 root tech 4096 07-30 11:36 /public
[root@localhost /]# chmod g+w /public
[root@localhost /]# ls -ld /public
drwxrwxr-x 2 root tech 4096 07-30 11:36 /public
[root@localhost /]# chmod o-rx /public
[root@localhost /]# ls -ld /public
drwxrwx--- 2 root tech 4096 07-30 11:36 /public
[root@localhost /]# ls -ld /tech/nsdhome
drwxr-x--- 2 root nsd 4096 07-30 11:36 /tech/nsdhome
[root@localhost /]# ls -ld /tech/jsdhome
drwxr-x--- 2 root jsd 4096 07-30 11:36 /tech/jsdhome
实例2.
以root用户新建/nsddir/目录,在此目录下新建readme.txt文件,并进一步完成下列操作
1)使用户zhangsan能够在此目录下创建子目录 切换用户 su - zhangsan
[root@dqs ~]# mkdir /nsddir #创建/nsddir目录
[root@dqs ~]# touch /nsddir/readme.txt #在/nsddir目录下创建readme.txt文件
[zhangsan@dqs ~]$ mkdir /nsddir/zhangsan #切换到用户zhangsan下创建目录及子目录 提示以下信息,没有权限不能创建
mkdir: cannot create directory ‘/nsddir/zhangsan’: Permission denied
chmod o+w /nsddir/
2)使用户zhangsan不能够在此目录下创建子目录
chmod o-w /nsddir/
3)使用户zhangsan能够修改readme.txt文件
chmod o+w /nsddir/readme.txt
4)调整此目录的权限,使所有用户都不能进入此目录
chmod u-x,g-x,o-x /nsddir/
5)为此目录及其下所有文档设置权限 rwxr-x---
chmod -R u=rwx,g=rx,o=--- /nsddir/
特殊权限(附加权限):
Set UID
附加在属主的 x 位上
– 属主的权限标识会变为 s (在附加之前有x权限的前提下),若附加之前没有x权限再附加,则变为S
– 适用于可执行文件,Set UID可以让使用者具有文件属主的身份及部分权限(传递所有者身份)
Set GID
附加在属组的 x 位上
– 属组的权限标识会变为 s(在附加之前有x权限的前提下),若附加之前没有x权限再附加,则变为S
– 适用于可执行文件,功能与Set UID类似(传递所属组身份)
Sticky Bit
附加在其他人的 x 位上
– 其他人的权限标识会变为 t
– 适用于开放 w 权限的目录,可以阻止用户滥用 w 写入
权限
$ chmod u+s testfile # 为 testfile 文件加上 SUID 权限。
$ chmod g+s testdir # 为 testdir 目录加上 SGID 权限。
$ chmod o+t testdir # 为 testdir 目录加上 SBIT 权限。
ACL策略:
getfacl文件查看ACL策略
setfacl[选项] u:用户名:权限 文件
setfacl[选项] g:组名:权限 文件
-m定义一条ACL策略
-x删除指定的ACL策略
-b清除所有已设置的ACL策略
-R递归设置
-d为目录设置默认权限
ACL权限设置:
创建账户:mike john kaka
创建文件:/data/file1.txt
·mike对文件有读写权限,john只有读权限。其他用户没有任何权限
·kaka具有与john相同权限
·创建lily,lily对file1.txt具有读执行权限,其他用户没有任何权限
```powershell
# tune2fs -l /dev/sda2 | grep acl
Default mount options: user_xattr acl
# tune2fs -l /dev/sda1 | grep acl
Default mount options: user_xattr acl
# ls -ld /data/
drwxrwxrwx 3 root root 4096 12-09 16:21 /data/
# rm -rf /data/
# mkdir /data
# getfacl /data/
getfacl: Removing leading ‘/‘ from absolute path names
# file: data
# owner: root
# group: root
user::rwx
group::r-x
other::r-x
# ls -ld /data/
drwxr-xr-x 2 root root 4096 12-09 16:27 /data/
# setfacl -m u:mike:rwx /data/
# ls -ld /data/
drwxrwxr-x+ 2 root root 4096 12-09 16:27 /data/
# getfacl /data/
getfacl: Removing leading ‘/‘ from absolute path names
# file: data
# owner: root
# group: root
user::rwx
user:mike:rwx
group::r-x
mask::rwx
other::r-x
# setfacl -m u:john:r-- /data/
# setfacl -m u:kaka:r-- /data/
# setfacl -m u:lily:r-x /data/