root 用户权限最高,所以一般对它不做什么权限设置。其他用户就要设定权限并且遵守权限了。
文件权限:
bash[root@localhost ~]# ls -l /tmp/123.txt
-rw-r--r--. 1 root root 0 7月 20 23:17 /tmp/123.txt
-rw-r--r--
:
第一个字符,表示文件类型
-
:文件d
:目录l
:软连接(对应 windows 快捷方式)b
:块设备(ls /dev
,可以看到硬盘 sda等)rw-
:第2-4字符,表示该文件所属用户的权限
r--
:第5-7字符,表示该文件所属用户的权限
r--
:第8-10字符,表示其他用户对该文件的权限
r
4 代表读权限 read
w
2 代表写权限 write
x
1 代表可执行权限 executable
-
0 表示没有这个权限,9位权限不能少,没有的权限就用 -
替代
权限值表:
0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 |
---|---|---|---|---|---|---|---|
--- | --x | -w- | -wx | r-- | r-x | rw- | rwx |
ugo权限体系:
rw- | r-- | r-- |
---|---|---|
User | Group | Other |
Linux/Unix 的文件调用权限分为三级 : 文件所有者(Owner)、用户组(Group)、其它用户(Other Users)
chmod(英文全拼:change mode)命令是控制用户对文件的权限的命令
语法:
bashchmod [-cfvR] [--help] [--version] mode file ...
参数说明: mode:权限设定字串,格式如下:
bash[ugoa] [[+-=][rwxX]...][,...]
其中:
u
:表示该文件的拥有者g
:表示与该文件的拥有者属于同一个群体(group)者o
:表示其他以外的人a
:表示这三者皆是+
:表示增加权限-
:表示取消权限=
:表示唯一设定权限。r
:表示可读取w
:表示可写入x
:表示可执行X
:表示只有当该文件是个子目录或者该文件已经被设定过为可执行其他参数说明:
-c
: 若该文件权限确实已经更改,才显示其更改动作-f
: 若该文件权限无法被更改也不要显示错误讯息-v
: 显示权限变更的详细资料-R
: 对目前目录下的所有文件与子目录进行相同的权限变更(即以递归的方式逐个变更)--help
: 显示辅助说明--version
: 显示版本示例:
将文件 file1.txt
设为所有人皆可读取 :
bashchmod ugo+r file1.txt
chmod a+r file1.txt
将文件 file1.txt
与 file2.txt
设为该文件拥有者,与其所属同一个群体者可写入,但其他以外的人则不可写入:
bashchmod ug+w,o-w file1.txt file2.txt
为 ex1.py
文件拥有者增加可执行权限:
bashchmod u+x ex1.py
将目前目录下的所有文件与子目录皆设为任何人可读取 :
bashchmod -R a+r *
此外chmod也可以用数字来表示权限如 :
bashchmod 777 file
语法为:
bashchmod abc file
其中 a, b, c 各为一个数字,分别表示 User、Group、及 Other 的权限。
r=4,w=2,x=1
若要 rwx 属性则 4+2+1=7;
若要 rw- 属性则 4+2=6;
若要 r-x 属性则 4+1=5。
chmod a=rwx file
和 chmod 777 file
效果相同
chmod ug=rwx,o=x file
和 chmod 771 file
效果相同
若用 chmod 4755 filename
可使此程序具有 root
的权限。
更多说明:
命令 | 说明 |
---|---|
chmod a+r file | 给file的所有用户增加读权限 |
chmod a-x file | 删除file的所有用户的执行权限 |
chmod a+rw file | 给file的所有用户增加读写权限 |
chmod +rwx file | 给file的所有用户增加读写执行权限 |
chmod u=rw,go= file | 对file的所有者设置读写权限,清空该用户组和其他用户对file的所有权限(空格代表无权限) |
chmod -R u+r,go-r docs | 对目录docs和其子目录层次结构中的所有文件给用户增加读权限,而对用户组和其他用户删除读权限 |
chmod 664 file | 对file的所有者和用户组设置读写权限, 为其其他用户设置读权限 |
chmod 0755 file | 相当于u=rwx (4+2+1),go=rx (4+1 & 4+1)。0 没有特殊模式。 |
chmod 4755 file | 4设置了设置用户ID位,剩下的相当于 u=rwx (4+2+1),go=rx (4+1 & 4+1)。 |
find path/ -type d -exec chmod a-x {} \ | 删除可执行权限对path/以及其所有的目录(不包括文件)的所有用户,使用'-type f'匹配文件 |
find path/ -type d -exec chmod a+x {} \ | 允许所有用户浏览或通过目录path/ |
修改文件属性,chown,全称 Change Owner,改变拥有者。修改文件的所属,普通用户是不能修改其他用户文件的所属的,需要root用户,所以先切换到root用户来操作
修改所属用户和用户组,test2:test2
,前面的 test2
表示用户,后面的 test2
是组
bash[root@localhost tmp]# chown test2:test2 ls
[root@localhost tmp]# ls -l
总用量 404
-rwxr-xr-x. 1 test2 test2 159024 7月 20 17:43 grep
-rwxr-xr-x. 1 test2 test2 117608 7月 20 17:38 ls
-rwxr-xr-x. 1 test1 test1 130360 7月 20 17:43 mv
-rw-rw-rw-. 1 test1 test1 14 7月 20 17:38 test1.txt
修改所属用户
bash[root@localhost tmp]# chown test1 ls
[root@localhost tmp]# ls -l
总用量 404
-rwxr-xr-x. 1 test2 test2 159024 7月 20 17:43 grep
-rwxr-xr-x. 1 test1 test2 117608 7月 20 17:38 ls
-rwxr-xr-x. 1 test1 test1 130360 7月 20 17:43 mv
-rw-rw-rw-. 1 test1 test1 14 7月 20 17:38 test1.txt
用root用户创建一个文件夹,文件夹默认所属用户和组为root
,那么普通用户是没全限制在这个目录中创建文件的,也可以使用uid和gid修改文件的所属用户和所属用户组 属主,属组bash[root@localhost ~]# ls -l
-rw-rw-rw-. 1 lisi lisi 0 3月 20 16:00 222.txt
第一段 1-10 的字符前面有解释
第一段第11个字符 .
:表示开启 selinux 的状态下创建的,也证明 selinux 是开启状态的。
这个东西很安全,但是有了它变 得很麻烦,安全和便利一般是冲突的。主要是红帽系的系统(redhat\centos\阿里的龙蜥\华为的欧拉)有这 个机制。我们一般上来就是关闭它,安全方面我们通过其他方法来控制。
bash[root@localhost ~]# sestatus
SELinux status: enabled
SELinuxfs mount: /sys/fs/selinux
SELinux root directory: /etc/selinux
Loaded policy name: targeted
Current mode: enforcing
Mode from config file: enforcing
Policy MLS status: enabled
Policy deny_unknown status: allowed
Max kernel policy version: 31
enabled 表示开启状态,disabled 表示禁用状态
关闭和开启selinux,需要root权限才能修改
bash[root@localhost tmp]# ls -l /etc/selinux/config
-rw-r--r--. 1 root root 543 3月 15 20:11 /etc/selinux/config
[root@localhost tmp]# vim /etc/selinux/config
把7行改为: SELINUX=disabled
# 然后保存退出,并且重启系统才会生效。
# 然后再登录创建文件,查看文件信息,就看不到.了
第二段的数字,表示该文件的硬链接数量
第三段的字符串,表示该文件所属用户
第四段的字符串,表示该文件所属用户组
第五段的数字,表示该文件的大小,默认单位为B,如果想按照KB来显示,那么可以通过ls -lh指令来查看。h是human的意思,以人类可读的方式显示,会自动按照文件大小来设定显示单位
第六段到倒数第二段,都是该文件的修改时间,只要改动了文件内容,这个时间就会自动变为修改文件时的时 间。
其实linux系统会记录三个时间:
所以修改文件内容导致大小变化的时候,这个时间也会自动改变。
windows系统也会记录三个时间:访问时间、创建时间、修改时间
linux下通过stat指令来查看:
bash[root@localhost rrx]# touch 1.txt
[root@localhost rrx]# stat 1.txt
文件:"1.txt"
大小:0 块:0 IO 块:4096 普通空文件
设备:801h/2049d Inode:51443079 硬链接:1
权限:(0644/-rw-r--r--) Uid:( 0/ root) Gid:( 0/ root)
最近访问:2024-03-21 19:54:59.146373949 +0800
最近更改:2024-03-21 19:54:59.146373949 +0800
最近改动:2024-03-21 19:54:59.146373949 +0800
创建时间:-
我们改一下文件权限,然后再看时间
bash[root@localhost rrx]# chmod 777 1.txt
[root@localhost rrx]# stat 1.txt
文件:"1.txt"
大小:0 块:0 IO 块:4096 普通空文件
设备:801h/2049d Inode:51443079 硬链接:1
权限:(0777/-rwxrwxrwx) Uid:( 0/ root) Gid:( 0/ root)
最近访问:2024-03-21 19:54:59.146373949 +0800
最近更改:2024-03-21 19:54:59.146373949 +0800
最近改动:2024-03-21 19:56:03.543898223 +0800
创建时间:-
本文作者:@Rrx
本文链接:
版权声明:本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!