1. 用户管理
1.1 用户信息相关文件
-
/etc/passwd
:存储用户的基本信息
root:x:0:0:root:/root:/bin/bash
用户名:密码占位符:UID:GID:描述:
- 用户名
- 密码:都是
x
,因为密码不会直接存储在这里,而是位于/etc/shadow
中密文存储 - UID: User ID
- 0:root
- 1~499:系统用户
- 1000+:普通用户
- GID: Group ID,是基本组号,不是附加组号
- 描述:描述用户的信息,例如manager
- 家目录:该用户
~
所代表的目录位置 - 登录启动项:如果不是
shell
类基本都会禁止登录的,规范禁止登录是:/sbin/nologin
-
/etc/shadow
:存储用户的密码信息,man 5 shadown
root:$6$FmCdybiez6x.G9mb$6Ny6JZ9TDEiCxv4NfWRxkTWsQaOAs.4F4JcZo1q15a070QW0PdbPc4knPFXY6DzHfEplm.OEu86WQ6yw0QEZ//:18587:0:99999:7:::
只需要前两项即可,后续了解即可
- 用户名
- 口令:某种算法运算之后的结果
- 为空则是没有口令
-
*
开头代表用户被锁定 -
!!
开头代表这个密码已过期,密码前面直接加入!!
就会使其过期。 -
$6
开头代表是SHA-512加密 -
$1
开头MD5加密【Hash】 -
$2
开头Blowfish加密 -
$5
开头SHA-256加密 -
salt
:加盐
- 最后一次修改时间:从1970年1月1日算起到最后一次修改的天数
- 最小间隔:就是最小的可以修改密码的时间间隔,默认是0,代表随时可以修改
- 最大时间间隔:就是最大的必须修改密码的时间间隔,默认是99999,代表可以永远不修改
- 警告时间:提示修改密码的时间
- 不活动时间:用户不登录系统的最大时间,超过该时间未登录就禁用用户
- 失效时间:用户多少天失效,之后就不可用了
- 保留
-
/etc/group
:存储组信息
root:x:0:
- 组名
- 组密码
- GID
- 组成员:默认为空,可有多个
root组成员和root有类似的权限,但是建议别这样使用,因为超级管理员一个程序只需要有一个。
-
/etc/gshadow
:存储组密码,一般不用
1.2 操作用户
1.2.1 创建用户
$ useradd username # 用户名username不能重名,adduser也是一样的功能
# -u UID: 用户ID
# -g gid: 基本组
# -G gid1[,gid2[,...]]: 附加组
# -c: 注释信息,其实是全名
# -d /path/to/user-home:指定用户家目录
# -s /bin/bash: 指定/etc/shells中的shell,或者/sbin/nologin
# -m: 自动创建家目录,常和-k连用
# -k: 将/etc/skel目录下的文件拷贝到创建的用户家目录,是bash的配置文件,默认是使用的
# -M: 不给用户创建家目录
root@basil-2020:/# useradd username
root@basil-2020:/# useradd username
useradd: user 'username' already exists
1.2.2 查看新建用户信息
-
id USERNAME
root@basil-2020:/# id username
uid=1001(username) gid=1002(username) groups=1002(username)
-
/etc/passwd
$ grep USERNAME /etc/passwd
root@basil-2020:/# grep username /etc/passwd
username:x:1001:1002::/home/username:/bin/sh
$ tail -1 /etc/passwd # 新建的都在最后
root@basil-2020:/# tail -1 /etc/passwd
username:x:1001:1002::/home/username:/bin/sh
-
finger USERNAME
$ finger USERNAME # 应该需要安装,查看用户账号信息
[root@localhost ~]# finger fedora
Login: fedora Name: Fedora Community
Directory: /home/fedora Shell: /bin/sh
Never logged in.
No mail.
No Plan.
1.2.3 修改用户密码
# --stdin 从标准输入输入命令
# -l 锁定账号
# -u 解锁账号
# -d 删除用户密码
$ passwd USERNAME # 如果直接只使用passwd,就是修改当前用户的密码
root@basil-2020:/# passwd username
New password:
Retype new password:
passwd: password updated successfully
# 修改用户密码过期时间
$ chage [OPTIONS] [USERNAME]
$ pwck # 检查用户账号完整性
1.2.4 查看用户
- 查看自己
$ whoami
root@basil-2020:/# su username
username@localhost: /$ whoami
username
- 查看所有登录用户
-r
:打印当前运行级别
$ who
# 用户 终端 启动时间
root tty1 2021-01-15 19:53
root pts/0 2021-01-15 19:56 (192.168.141.1)
root pts/1 2021-01-16 00:46 (192.168.141.1)
- 查看用户并看他们在做什么,类似
who
,更详细
$ w
03:55:11 up 8:01, 3 users, load average: 0.00, 0.01, 0.05
USER TTY FROM LOGIN@ IDLE JCPU PCPU WHAT
root tty1 19:53 5:43 0.07s 0.07s -bash
root pts/0 192.168.141.1 19:56 7.00s 0.73s 0.02s w
root pts/1 192.168.141.1 00:46 1:59 0.12s 0.01s bash
-
last
可以查看用户登录历史,其实是显示/var/log/wtmp
文件
-n NUM
:只显示最近NUM
次的登录信息
$ last
root pts/1 192.168.141.1 Sat Jan 16 00:46 still logged in
root pts/0 192.168.141.1 Fri Jan 15 19:56 still logged in
root tty1 Fri Jan 15 19:53 still logged in
...
-
lastb
:显示/var/log/btmp
文件,用户错误登录尝试
-n NUM
:只显示最近NUM
次的登录信息
$ lastb
root ssh:notty 192.168.141.1 Sat Jan 16 04:02 - 04:02 (00:00)
root ssh:notty 192.168.141.1 Sat Jan 16 04:02 - 04:02 (00:00)
root ssh:notty 192.168.141.1 Sat Jan 16 04:02 - 04:02 (00:00)
-
lastlog
:显示当前系统每个用户最近一次成功登录信息
-u USERNAME
显示某个具体用户的登录信息
$ lastlog -u user1
Username Port From Latest
user1 pts/1 Sat Jan 16 03:52:43 -0500 2021
-
basename
:取得路径得基名
$ basename /etc/sysconfig/network-scripts/ifcfg-ens32
ifcfg-ens32
1.2.5 修改用户信息
# -u UID 用户ID
# -g GID 基本组
# -G GID[,GID2[,...]] 附加组,但是之前的就没有了,常和-a连用
# -a 不会删除之前加入的附加组
# -c 注释信息,是用户全名
# -d 新的家目录,常和-m连用
# -m 原家目录文件移动到新的家目录
# -l 修改登陆用户名
# -L 锁定用户账号,类似禁用
# -U 解锁用户账号
# -s 指定用户默认SHELL
# -r 添加系统账户,不登陆系统,没有家目录
$ usermod [OPTIONS] [USERNAME] # 基本和useradd一致,可以修改的信息,通过usermod --help或man user
root@basil-2020:~# usermod -s /sbin/nologin username # 不让用户登录
root@basil-2020:~# su - username
su: warning: cannot change directory to /home/username: No such file or directory
This account is currently not available.
# 修改用户账号注释信息,如全名
# 使用finger查看
$ chfn [USERNAME]
1.2.6 删除用户
# -r代表删除家目录HOME_DIR
$ userdel -r username
# 因为没有/home/username这个家目录,所以删除找不到,不过用户已经删除了
root@basil-2020:~# userdel -r username
userdel: username mail spool (/var/mail/username) not found
userdel: username home directory (/home/username) not found
root@basil-2020:/# id username
id: ‘username’: no such user
1.3 操作组
只用知道用户所处在哪些组,对应有哪些权限即可。
- 私有组:随用户创建,组名同用户名一致。一个用户只能有一个基本组,而且也是
/etc/passwd
中那个gid
对应的 - 基本组:用户的默认组
- 附加组:后面用户加入的组
1.3.1 新建组
# -g 指定GID
# -r 创建系统组
$ groupadd GROUPNAME
1.3.2 查看组信息
$ grep GROUPNAME /etc/group
root@basil-2020:/# grep groupname /etc/group
groupname:x:1002:
$ tail -1 /etc/group
root@basil-2020:/# tail -1 /etc/group
groupname:x:1002:
1.3.3 组中增删用户及修改密码
$ gpasswd -a username GROUPNAME # 添加用户
$ gpasswd -d username GROUPNAME # 移除用户
root@basil-2020:/# grep groupname /etc/group
groupname:x:1002:
root@basil-2020:/# gpasswd -a username groupname
Adding user username to group groupname
root@basil-2020:/# grep groupname /etc/group
groupname:x:1002:username
root@basil-2020:/# gpasswd -d username groupname
Removing user username from group groupname
root@basil-2020:/# grep groupname /etc/group
groupname:x:1002:
# 密码需要配合newgrp使用
$ newgrp GROUPNAME # 临时切换用户基本组为别的组,此时需要设置组的密码,退出即exit
1.3.4 修改组自身信息
# -g GID 指定GID
# -n GROUPNAME 修改组名
$ groupmod -g GID GROUPNAME # 修改组id
root@basil-2020:/# groupmod -g 1004 groupname
root@basil-2020:/# grep groupname /etc/group
groupname:x:1004:
1.4 切换用户以及sudo
-
su - root
:切换用户到root,root可以不用写明,默认就是切换到root,-
也可以不用写明,但是建议一直写,因为带有和不带有-
的区别是环境变量等是否可以沿用,带有就是沿用。 -
sudo
:临时权限
- 所有的用户如果可以使用
sudo
需要位于wheel
组中(CentOS,其它版本略有区别,例如lubuntu是admin或者就是sudo组) - 这个文件通过
vim /etc/sudoers
查看,但是修改就需要使用visudo
命令来进行了,这个命令打开使用的是nano软件,所以看下面提示,那个^
是Ctrl键。 -
%wheel ALL=(ALL) ALL
- 组名 用户机器=和谁权限一致 权限
2. 权限管理
2.1 基本权限UGO
2.1.1 概述
User、Group、Other
超级管理员决定某个计算机用户是否能够访问某个资源。
2.1.2 设置权限的两个基本元素
- 权限对象
- u:属主
- g:属组
- o:其他人
- a:所有人=u+g+o,特殊对象
- 权限类型
- r:读=4
- w:写=2
- x:执行=1
2.1.3 修改用户权限
# -R 递归修改权限
# --reference=other-file file 根据other-file来修改权限
# a可以不用加,直接+rwx或者-rwx
$ chmod -R u+r 1.txt
# 命令 对象符号权限 文件或者目录,对象和权限的类型如上,符号有+、-、=
# -R 代表迭代,针对目录下所有的目录下所有文件都会该表权限
root@basil-2020:/tmp# touch file1
root@basil-2020:/tmp# mkdir dir1
root@basil-2020:/tmp# ll
drwxr-xr-x 2 root root 4096 1月 4 14:42 dir1/
-rw-r--r-- 1 root root 0 1月 4 14:40 file1
root@basil-2020:/tmp# chmod u=r file1 # 用户权限为r
root@basil-2020:/tmp# ll file1
-r--r--r-- 1 root root 0 1月 4 14:40 file1
root@basil-2020:/tmp# chmod g=rwx file1 # 对于同组用户改其权限为rwx
root@basil-2020:/tmp# ll file1
-r--rwxr-- 1 root root 0 1月 4 14:40 file1*
root@basil-2020:/tmp# chmod o= file1 # 对于other用户去掉所有权限
root@basil-2020:/tmp# ll file1
-r--rwx--- 1 root root 0 1月 4 14:40 file1*
root@basil-2020:/tmp# chmod a-wx file1 # 对于所有用户去掉写和执行权限
root@basil-2020:/tmp# ll file1
-r--r----- 1 root root 0 1月 4 14:40 file1
root@basil-2020:/tmp# chmod ug=rw,o=r file1 # 这里需要注意','后面不能有空格
root@basil-2020:/tmp# ll file1
-rw-rw-r-- 1 root root 66 1月 4 15:06 file1
# 使用数字
root@basil-2020:/tmp# chmod 751 file1
root@basil-2020:/tmp# ll file1
-rwxr-x--x 1 root root 66 1月 4 15:06 file1*
目录必须具有执行权限,因为进入目录属于执行,而修改(删除、更新或新建)目录中的内容属于写。
root@basil-2020:/tmp/test# ls -l
$ ls -l /tmp/test # 切换到basil用户并查看目录
ls: cannot access '/tmp/test/file': Permission denied
-????????? ? ? ? ? ? file # 由于有读的权限,所以可以列出文件名,但是具体内容看不到
basil@basil-2020:/tmp$ cd test # 尝试进入目录
cd: permission denied: test
root@basil-2020:/tmp# chown basil /tmp/test # 改变目录属主为basil,再次执行上述命令
root@basil-2020:/tmp# ls -ld /tmp/test
drwxr--r-- 2 basil root 4096 1月 5 10:38 /tmp/test
basil@basil-2020:/tmp$ ls -ld /tmp/test
drwxr--r-- 2 basil root 4096 1月 5 10:38 /tmp/test
basil@basil-2020:/tmp$ ls -l /tmp/test
-rw-r--r-- 1 root root 0 1月 4 17:09 file
basil@basil-2020:/tmp$ cd test
basil@basil-2020:/tmp/test$ ls -l
-rw-r--r-- 1 root root 0 1月 4 17:09 file
2.1.4 修改属主和属组
# -R 递归修改
# --reference=otherfile file 修改成和otherfile一样的属主和属组
$ chown USERNAME[.GROUPNAME] FILE/DIRECTORY # 可以改变属主和属组,如果用户名中或者群组中有`.`,则可以使用`:`作为替换分割属主和属组符
root@basil-2020:/tmp# ll file1
-rwxr-x--x 1 root root 66 1月 4 15:06 file1*
root@basil-2020:/tmp# chown username.groupname file1 # 改变属主和属组
root@basil-2020:/tmp# ll file1
-rwxr-x--x 1 username groupname 66 1月 4 15:06 file1*
root@basil-2020:/tmp# chown root file1 # 改变属主
root@basil-2020:/tmp# ll file1
-rwxr-x--x 1 root groupname 66 1月 4 15:06 file1*
root@basil-2020:/tmp# chown .root file1 # 改变属组
root@basil-2020:/tmp# ll file1
-rwxr-x--x 1 root root 66 1月 4 15:06 file1*
# -R
# --reference
$ chgroup GROUPNAME FILE/DIRECTORY # 只改变属组
root@basil-2020:/tmp# chgrp groupname file1
root@basil-2020:/tmp# ll file1
-rwxr-x--x 1 root groupname 66 1月 4 15:06 file1*
文件的权限、属主不只是取决于其自身的权限和属主,还取决于其目录的拥有者对于目录的权限,例如一个用户basil
对于目录path
拥有rwx
的权限,但是该目录下有一个root.sh
的文件,属主是root,但是用户basil
仍然对其可以删除。
root@basil-2020:/tmp/path# ls -ld /tmp/path/ # path的详细信息
drwxrwxr-x 2 basil basil 4096 1月 5 10:17 /tmp/path/
root@basil-2020:/tmp/path# chmod 600 root.sh # 修改权限
root@basil-2020:/tmp/path# ls -l
-rw------- 1 root root 24 1月 5 10:24 root.sh # root.data的详细信息
basil@basil-2020:/tmp/path$ ./root.sh # 切回basil用户,尝试执行
zsh: permission denied: ./root.sh
basil@basil-2020:/tmp/path$ cat ./root.sh # 尝试读取
cat: ./root.sh: Permission denied
basil@basil-2020:/tmp/path$ rm -rf ./root.sh # 执行删除
basil@basil-2020:/tmp$ ls -l # 非basil用户的文件
-rw-r--r-- 1 root root 0 1月 4 17:09 file
basil@basil-2020:/tmp$ rm -f ./file 执行删除
rm: cannot remove './file': Operation not permitted
2.2 FACL
Filesystem Access Control List,文件访问控制列表,限制用户对文件的访问。利用文件的扩展属性,保存额外的访问控制权限。
权限应用次序:Owner→facl,user→Group→facl,group→Other
$ getfacl /path/to/file # 查看文件的权限
root@basil-2020:/tmp# ll file1 # 查看文件详细信息
-rwxr-x--x 1 root groupname 66 1月 4 15:06 file1*
root@basil-2020:/tmp# getfacl /tmp/file1 # 查看文件权限
getfacl: Removing leading '/' from absolute path names
# file: tmp/file1
# owner: root
# group: groupname
user::rwx
group::r-x
other::--x
# set file acl, 设置文件访问控制 对象:对象名:权限,对象是ugo,对象名则是对应的用户名,组名
# -m [u:UID:permission | g:GID:permission]:设置权限。设置默认的访问控制列表,需要在u|g之前加入`d`,只能给目录设置。
# -x [u:UID | g:GID]:取消权限
# -b:取消所有facl权限
# --mask:指定mask
$ setfacl -m g:groupname:rwx /tmp/file1
root@basil-2020:/tmp# setfacl -m u:alice:rw /tmp/file1 # 设置用户的权限
root@basil-2020:/tmp# setfacl -m u:bob:r-x /tmp/file1
root@basil-2020:/tmp# setfacl -m o::r /tmp/file1 # 这里有两个':'
root@basil-2020:/tmp# ll /tmp/file1
-rwxrwxr--+ 1 root 1004 66 1月 4 15:06 /tmp/file1* # 这里的+号表示的是除了基础权限还有其它权限,即ACL设置的权限
root@basil-2020:/tmp# getfacl /tmp/file1
getfacl: Removing leading '/' from absolute path names
# file: tmp/file1
# owner: root
# group: 1004
user::rwx
user:alice:rw-
user:bob:r-x
group::r-x
mask::rwx # 设置的facl权限不能超过这个,超过了也没有权限
other::r--
$ setfacl -x g:groupname:rwx /tmp/file1 # 删除组groupname的ACL权限
root@basil-2020:/tmp# setfacl -x u:alice /tmp/file1 # 删除用户alice的ACL权限
root@basil-2020:/tmp# getfacl /tmp/file1
getfacl: Removing leading '/' from absolute path names
# file: tmp/file1
# owner: root
# group: 1004
user::rwx
user:bob:r-x
group::r-x
mask::r-x
other::r--
$ setfacl -b /tmp/file1 # 删除所有ACL权限
root@basil-2020:/tmp# setfacl -b /tmp/file1 # 删除所有ACL权限
root@basil-2020:/tmp# getfacl /tmp/file1
getfacl: Removing leading '/' from absolute path names
# file: tmp/file1
# owner: root
# group: 1004
user::rwx
group::r-x
other::r--
$ watch -n5 'ls -l /tmp/file1' # 新开一个终端,然后输入,这样每隔5秒钟就会执行后续命令
2.3 特殊权限
2.3.1 特殊位
是基本权限之前的那一位,即xxxx
四位八进制数的第一位,表示下面三种权限。
SUID/SGID,特殊命令需要超级管理员权限,位于属主的执行位,针对文件/程序时,具备临时提升权限,即调用文件的用户临时具备属主的能力。
SUID:运行某程序时,相应进程的属主是程序文件自身的属主,而不是启动者。如非必要不要给s
权限。对应4
。
SGID:运行某程序时,相应进程的基本组属组是程序文件自身的属组,而不是启动者的基本组。对应2
。
Sticky:在一个公共目录,每个用户都可以创建文件,删除自己的文件,但是不能删除其它用户的文件。对应1
。
$ chmod u±s FILENAME # 增加s权限,如果原来有x权限,则显示为`s`, 否则显示为`S`
$ chmod g±s FILENAME # 同上
$ chmod o±t DIR # 增加t权限,如果原来有x权限,则显示为`t`, 否则显示为`T`
root@basil-2020:~# vi /root/file.txt # 在root的家目录创建的文件,除了root自己,谁都看不成
root@basil-2020:~# ls -ld /root # 注意权限,除了root,剩下用户都没有权限
drwx------ 6 root root 4096 1月 4 16:35 /root
root@basil-2020:~# ls -l
total 4
-rw-r--r-- 1 root root 4 1月 4 16:35 file.txt
root@basil-2020:~# su basil # 切换到basil用户
basil@basil-2020:/root
$ cat /root/file.txt
cat: /root/file.txt: Permission denied # 确认无法访问
basil@basil-2020:/root
$ exit # 退回root用户
root@basil-2020:~# ll /usr/bin/cat # 查看cat的权限
-rwxr-xr-x 1 root root 43416 9月 5 2019 /usr/bin/cat*
root@basil-2020:~# chmod u+s /usr/bin/cat # 给cat提权
root@basil-2020:~# ll /usr/bin/cat
-rwsr-xr-x 1 root root 43416 9月 5 2019 /usr/bin/cat*
root@basil-2020:~# su basil # 切换到basil用户
basil@basil-2020:/root
$ cat /root/file.txt
123
root@basil-2020:~# chmod u-s /usr/bin/cat # 不要随便提权
root@basil-2020:~# ll /usr/bin/cat
-rwxr-xr-x 1 root root 43416 9月 5 2019 /usr/bin/cat*
2.3.2 文件属性chattr
如果一个文件很重要,那他万一被超管删除了怎么办?使用特殊的i
权限,使得超级管理员用户也无法删除。
属性
描述
a(append)
允许在文件中进行追加操作,通常对于日志文件添加
A
这个属性不允许更行文件的访问时间
c(compressed)
启用这个属性时,文件在磁盘上会自动压缩
d(dump)
不能使用dump命令备份文件
D
设置了目录的D属性时,更改会在同步保存在磁盘上
e(extent for mat)
它表明,该文件使用磁盘上的块的映射扩展
i(immutable)
在文件上启用这个属性时,我们不能更改、重命名或者删除这个文件
j(journaling)
在文件上启用这个属性时,不能更改、重命名或者删除这个文件
S(synchronous)
设置了这个属性时,变更或更改同步保存到磁盘上,就是volatile。
$ chattr +i /root/file.txt # chattr [+|-]i /path/to/file
root@basil-2020:/tmp# touch file.txt
root@basil-2020:/tmp# ll file.txt
-rw-r--r-- 1 root root 0 1月 4 16:53 file.txt
root@basil-2020:/tmp# lsattr file.txt # lsattr /path/to/file
--------------e----- file.txt
# 添加i属性
root@basil-2020:/tmp# chattr +i file.txt
root@basil-2020:/tmp# ll file.txt
-rw-r--r-- 1 root root 0 1月 4 16:53 file.txt
root@basil-2020:/tmp# lsattr file.txt
----i---------e----- file.txt
# 超级管理员权限下
# 尝试删除文件
root@basil-2020:/tmp# rm -rf file.txt
rm: cannot remove 'file.txt': Operation not permitted
# 尝试修改文件
root@basil-2020:/tmp# echo "Hello " >> file.txt
-bash: file.txt: Operation not permitted
# 尝试重命名
root@basil-2020:/tmp# mv file.txt file01.txt
mv: cannot move 'file.txt' to 'file01.txt': Operation not permitted
# 移除i属性
root@basil-2020:/tmp# chattr -i file.txt
root@basil-2020:/tmp# echo "Hello " >> file.txt
root@basil-2020:/tmp# cat file.txt
Hello
root@basil-2020:/tmp# rm -rf file.txt
2.3.3 进程掩码umask
新建文件的默认权限是644,新建目录的默认权限是755。
权限位在设计的时候实质上有4位,最前面一位也是最大是7(8进制数),当文件有执行权限,此时chmod 4777 /path/to/file
就是suid
,即属主执行位对应的是s
。
root@basil-2020:/tmp# touch file
root@basil-2020:/tmp# ls -l file
-rw-r--r-- 1 root root 0 1月 4 17:09 file
root@basil-2020:/tmp# chmod 0777 file
root@basil-2020:/tmp# ls -l file
-rwxrwxrwx 1 root root 0 1月 4 17:09 file
root@basil-2020:/tmp# chmod 1777 file
root@basil-2020:/tmp# ls -l file
-rwxrwxrwt 1 root root 0 1月 4 17:09 file
root@basil-2020:/tmp# chmod 2777 file
root@basil-2020:/tmp# ls -l file
-rwxrwsrwx 1 root root 0 1月 4 17:09 file
root@basil-2020:/tmp# chmod 4777 file
root@basil-2020:/tmp# ls -l file # 注意此时的属主执行位的s
-rwsrwxrwx 1 root root 0 1月 4 17:09 file
root@basil-2020:/tmp# chmod 7777 file
root@basil-2020:/tmp# ls -l file
-rwsrwsrwt 1 root root 0 1月 4 17:09 file
root@basil-2020:/tmp# ls -l file
-rw-r--r-- 1 root root 0 1月 4 17:09 file
root@basil-2020:/tmp# ls -l file # 注意此时的属主执行位的S,这是在原来属主没有x权限时的表现
-rwSr--r-- 1 root root 0 1月 4 17:09 file
$ umask # 系统掩码,
0022
在系统创建目录的时候,权限时0777-0022=0755
,即新建目录的默认权限是755,而系统为了保护自己,在创建文件的时候,去掉了所有的执行权限,即0755-0111=0644
。
修改umask 0000
就可以修改默认新建的文件/目录的权限,此时新建目录权限是0777
,新建文件的权限是0666
。