Linux用户及权限管理
linux用户,组管理介绍
linux操作系统对多用户管理是非常繁琐的,所以用组的概念来管理用户就变得简单了,每个用户可以在一个独立的组,每个组也可以有零个用户或者多个用户,Linux系统用户时根据用户ID来识别的,默认ID长度为32位,默认ID编号从0开始(其实就是root),但是为了和老式系统兼容,用户ID限制在60000以下,linux用户总共分为3种:
- root用户(ID 0)
- 系统用户(ID 1~999)
- 普通用户(ID 1000以上)
linux操作系统用户的特点如下:
- 每个用户拥有一个UserID,操作系统实际读取的是UID,而非用户名
- 每个用户属于一个主组,属于一个或者多个附属组,一个用户最多有31个附属组
- 每个组拥有一个组ID
- 每个进程以一个用户身份运行,该用户可对进程拥有资源控制的权限
- 每个可登陆用户拥有一个指定的shell环境
linux用户在操作系统中可以进行日常管理和维护,涉及的相关配置文件如下:
- /etc/passwd:保存用户信息
- /etc/shadow:保存用户密码(以加密形式保存)
- /etc/group:保存组信息
- /etc/login.defs:用户属性,密码过期时间,密码最大长度等限制
- /etc/default/useradd:显示或更改默认的useradd配置文件
linux系统中的每个文件或者文件夹都有一个所属用户及所属组,使用id命令可以显示当前用户的信息,使用passwd命令可以修改当前用户密码。
1 2 | [root@localhost ~] # id lizhifeng uid=1000(lizhifeng) gid=1000(lizhifeng) 组=1000(lizhifeng) |
linux用户管理
如果创建新用户,可以使用命令useradd,执行命令 useradd lizf 即可创建lizf用户,同时会创建一个同名的组lizf,默认该用户属于lizf组
执行useradd lizf会根据以下操作步骤进行:
- 在/etc/passwd文件中添加lizf用户信息
- 如使用passwd命令创建密码,密码会被保存在/etc/shadow中
- 为lizf创建一个家目录/home/lizf
- 将/etc/skel中的.bash开头的文件复制到/home/lizf家目录
- lizf组信息保存在/etc/group配置文件中
/etc/passwd文件介绍

[root@localhost ~]# cat /etc/passwd root:x:0:0:root:/root:/bin/bash bin:x:1:1:bin:/bin:/sbin/nologin daemon:x:2:2:daemon:/sbin:/sbin/nologin adm:x:3:4:adm:/var/adm:/sbin/nologin lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin sync:x:5:0:sync:/sbin:/bin/sync shutdown:x:6:0:shutdown:/sbin:/sbin/shutdown halt:x:7:0:halt:/sbin:/sbin/halt mail:x:8:12:mail:/var/spool/mail:/sbin/nologin operator:x:11:0:operator:/root:/sbin/nologin games:x:12:100:games:/usr/games:/sbin/nologin ftp:x:14:50:FTP User:/var/ftp:/sbin/nologin nobody:x:99:99:Nobody:/:/sbin/nologin systemd-network:x:192:192:systemd Network Management:/:/sbin/nologin dbus:x:81:81:System message bus:/:/sbin/nologin polkitd:x:999:998:User for polkitd:/:/sbin/nologin sshd:x:74:74:Privilege-separated SSH:/var/empty/sshd:/sbin/nologin postfix:x:89:89::/var/spool/postfix:/sbin/nologin chrony:x:998:996::/var/lib/chrony:/sbin/nologin apache:x:48:48:Apache:/usr/share/httpd:/sbin/nologin lizhifeng:x:1000:1000::/home/lizhifeng:/bin/bash mysql:x:997:995:MySQL server:/var/lib/mysql:/sbin/nologin zabbix:x:996:994:Zabbix Monitoring System:/var/lib/zabbix:/sbin/nologin #/etc/passwd存放用户的信息,用冒号分隔,一共分为七个部分 第一列为用户名 第二例为用户的密码信息,x表示密码存放于/etc/shadow文件中 第三列为用户的UID 第四列为用户的GID 第五列为用户的描述,这个字段存放的是一段任意的注释性描述文字,用做finger命令的输出。 第六列为用户的家目录 第七列为用户登陆的shell,nologin代表禁止登陆(伪用户) 伪用户解释:用户的登录Shell也可以指定为某个特定的程序(此程序不是一个命令解释器)。利用这一特点,我们可以限制用户只能运行指定的应用程序,在该应用程序运行结束后,用户就自动退出了系统。有些Linux系统要求只有那些在系统中登记了的程序才能出现在这个字段中。系统中有一类用户称为伪用户(psuedousers),这些用户在Linux /etc/passwd文件中也占有一条记录,但是不能登录,因为它们的登录Shell为空。它们的存在主要是方便系统管理,满足相应的系统进程对文件属主的要求。常见的伪用户如下所示。 bin 拥有可执行的用户命令文件 sys 拥有系统文件 adm 拥有帐户文件 nobody NFS使用
在使用useradd命令时,可以添加如下参数:
1 2 3 4 5 6 7 8 | -d:新账户的主目录 -e:新账户的过期日期 MM /DD/YY -g:新账户属组的名称或ID -r:创建一个系统账户 -s:新账户的登录shell -u:新账户的UID -G:新建账户的附加组 -c, --comment 注释 |
案例:
此外我们可以用chage命令去查看用户状态
1 2 3 4 5 6 7 8 | [root@localhost ~] # chage -l lizhifeng 最近一次密码修改时间 :7月 12, 2021 密码过期时间 :从不 密码失效时间 :从不 帐户过期时间 :从不 两次改变密码之间相距的最小天数 :0 两次改变密码之间相距的最大天数 :99999 在密码过期之前警告的天数 :7 |
我们可以编辑/etc/login.defs进行修改 ,那么后建立的账户就会遵循这个配置进行创建
[root@localhost ~]# cat /etc/login.defs | egrep -v "^#|^$" MAIL_DIR /var/spool/mail PASS_MAX_DAYS 99999 #密码过期时间,99999代表永不过期 PASS_MIN_DAYS 0 PASS_MIN_LEN 5 #密码最小长度 PASS_WARN_AGE 7 #在密码过期之前警告的天数 UID_MIN 1000 #普通用户uid从1000开始 UID_MAX 60000 #普通用户最大uid值 SYS_UID_MIN 201 #系统用户uid开始值 SYS_UID_MAX 999 #系统用户uid最大值 GID_MIN 1000 #普通用户gid从1000开始 GID_MAX 60000 #普通用户gid从1000开始 SYS_GID_MIN 201 #系统用户gid从201开始 SYS_GID_MAX 999 #系统用户gid最大值999 CREATE_HOME yes #自动在/home/创建家目录 UMASK 077 #家目录默认权限是700 USERGROUPS_ENAB yes #自动创建用户组 ENCRYPT_METHOD SHA512
如果用户已经被创建,我们想修改他的用户信息可以用
1 2 3 4 5 | chage -I 5 USERNAME:密码5天后失效时间 chage -M 30 USERNAME:密码30天后过期 chage -W 3 USERNAME:在密码过期之前3天警告 chage -E 11 /15/19 USERNAME:在19年11月15日账户过期 chage -l USERNAME:查看用户过期时间,密码过期时间等 |
linux组管理
linux组管理有如下特点
- 每个组有一个组ID
- 组信息保存在/etc/group中
- 每个用户至少拥有一个主组,最多可以拥有31个附属组
- 通过命令groupadd,groupdel,groupmod来对组进行管理
/etc/group文件解释:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 | [root@localhost ~] # head /etc/group root:x:0: bin:x:1: daemon:x:2: sys:x:3: adm:x:4: tty :x:5: disk:x:6: lp:x:7: mem:x:8: kmem:x:9: 每一个冒号分隔一个内容 第一列表示组名 第二列表示组密码,x表示组密码放在 /etc/shadow 下 第三列表示组ID 第四列表示组成员 |
groupadd用法如下:
groupadd:创建一个group1的组
1 | [root@localhost ~] # groupadd group1 |
-g :指定创建的组的ID
1 2 | [root@localhost ~] # groupadd group2 -g 1500 #创建一个group2的组,并指定组ID为1500 |
-r:创建一个系统组
1 2 3 4 5 6 | [root@localhost ~] # groupadd -r group3 #创建一个系统组group3 [root@localhost ~] # cat /etc/group | grep group group1:x:1001: group2:x:1500: group3:x:991: |
groupmod用法如下:
-n :修改组名
1 2 | [root@localhost ~] # groupmod -n group200 group1 #将group1组名改为group200 |
-g :修改组ID号
1 2 3 4 5 6 | [root@localhost ~] # groupmod -g 4000 group2 #将group2组ID修改为4000 [root@localhost ~] # cat /etc/group | grep group group2:x:4000: group3:x:991: group200:x:1001: |
groupdel 删除组
1 2 3 4 5 | [root@localhost ~] # groupdel group200 #删除group200 [root@localhost ~] # cat /etc/group | grep group group2:x:4000: group3:x:991: |
linux用户及组案例
useradd主要用于新建用户,而用户创建完毕,可以使用usermod来修改用户及组的属性。
usermod参数:
1 2 3 4 5 6 7 8 | -c, --comment 注释 GECOS 字段的新值 -e, --expiredate EXPIRE_DATE 设定帐户过期的日期为 EXPIRE_DATE -g, --gid GROUP 强制使用 GROUP 为新主组 -G, -- groups GROUPS 新的附加组列表 GROUPS -L, --lock 锁定用户帐号 -s, --shell SHELL 该用户帐号的新登录 shell -u, --uid UID 用户帐号的新 UID -U, --unlock 解锁用户帐号 |
案例:
userdel
主要是用来删除用户的
1 2 3 | userdel lizhifeng:保留用户的家目录 userdel -r lizhifeng:删除用户及用户家目录,如果用户登陆系统则无法删除 userdel -rf lizhifeng:强制删除用户及该目录的家目录,无论是否登录 |
用户密码的管理(最常见的运维操作)
/etc/shadow 详解
[root@localhost ~]# cat /etc/shadow root:$6$78f36qtpVNN.SM6n$Se8FiSLr3VL.QmPMOhvu9dFow1TRJnwlbzpCZDY9JmpFpG8AHlBmiXTuaCayNbE8tEu6U78QnpHAG406r4T2X0::0:99999:7::: bin:*:17834:0:99999:7::: daemon:*:17834:0:99999:7::: adm:*:17834:0:99999:7::: lp:*:17834:0:99999:7::: sync:*:17834:0:99999:7::: shutdown:*:17834:0:99999:7::: halt:*:17834:0:99999:7::: mail:*:17834:0:99999:7::: operator:*:17834:0:99999:7::: games:*:17834:0:99999:7::: ftp:*:17834:0:99999:7::: nobody:*:17834:0:99999:7:::
使用passwd命令控制用户的密码信息
-k, --keep-tokens 保持身份验证令牌不过期 -d, --delete 删除已命名帐号的密码(只有根用户才能进行此操作) -l, --lock 锁定指名帐户的密码(仅限 root 用户) 等于usermod -l -u, --unlock 解锁指名账户的密码(仅限 root 用户),等于usermod -U -e, --expire 终止指名帐户的密码(仅限 root 用户) -f, --force 强制执行操作 -x, --maximum=DAYS 密码的最长有效时限(只有根用户才能进行此操作) -n, --minimum=DAYS 密码的最短有效时限(只有根用户才能进行此操作) -w, --warning=DAYS 在密码过期前多少天开始提醒用户(只有根用户才能进行此操作) -i, --inactive=DAYS 当密码过期后经过多少天该帐号会被禁用(只有根用户才能进行此操作) -S, --status 报告已命名帐号的密码状态(只有根用户才能进行此操作) --stdin 从标准输入读取令牌(只有根用户才能进行此操作)
修改用户密码的几种方式:
passwd + username
[root@localhost ~]# passwd lizhifeng 更改用户 lizhifeng 的密码 。 新的 密码: 重新输入新的 密码: passwd:所有的身份验证令牌已经成功更新。
echo “PASSWD” | passwd --stdin USERNAME
[root@localhost ~]# echo "12345678" | passwd --stdin lizhifeng 更改用户 lizhifeng 的密码 。 passwd:所有的身份验证令牌已经成功更新。
echo testuser:Newpasswd|chpasswd
[root@localhost ~]# echo root:12345|chpasswd
使用chage命令管理用户密码信息
-d, --lastday 最近日期 将最近一次密码设置时间设为“最近日期” -E, --expiredate 过期日期 将帐户过期时间设为“过期日期” -h, --help 显示此帮助信息并推出 -I, --inactive INACITVE 过期 INACTIVE 天数后,设定密码为失效状态 -l, --list 显示帐户年龄信息 -m, --mindays 最小天数 将两次改变密码之间相距的最小天数设为“最小天数” -M, --maxdays 最大天数 将两次改变密码之间相距的最大天数设为“最大天数” -R, --root CHROOT_DIR chroot 到的目录 -W, --warndays 警告天数 将过期警告天数设为“警告天数”
权限管理
linux权限是操作系统用来限制对方访问资源的机制,权限一般分为读,写,执行,系统中每一个文件都拥有特定的权限,所属用户和所属组,通过这样的机制来限制哪些用户或组可以对特定文件进行相应的操作
linux每个进程都是以某个用户身份运行,进程的权限与该用户的权限一样,用户的权限越大,则进程拥有的权限越大
权限 | 对文件的影响 | 对目录的影响 |
r(读)4 | 可读取文件内容 | 可列出目录内容 |
w(写)2 | 可修改文件内容 | 不能查看目录内容,不在目录中创建文件,不能cd到目录中 |
x(执行)1 | 可作为命令执行 | 可以进入到目录,但是不能查看也不能创建删除 |
[root@localhost ~]# ls -l /etc/ 总用量 1128 -rw-r--r--. 1 root root 16 1月 27 2021 adjtime -rw-r--r--. 1 root root 1518 6月 7 2013 aliases -rw-r--r--. 1 root root 12288 1月 27 2021 aliases.db drwxr-xr-x. 2 root root 280 2月 1 2021 alternatives -rw-------. 1 root root 541 4月 11 2018 anacrontab drwxr-xr-x. 3 root root 51 1月 29 2021 ansible -rw-r--r--. 1 root root 55 10月 30 2018 asound.conf drwxr-x---. 3 root root 43 2月 1 2021 audisp drwxr-x---. 3 root root 83 2月 1 2021 audit drwxr-xr-x. 2 root root 38 2月 1 2021 bash_completion.d -rw-r--r--. 1 root root 2853 10月 31 2018 bashrc drwxr-xr-x. 2 root root 6 10月 31 2018 binfmt.d -rw-r--r--. 1 root root 38 11月 23 2018 centos-release -rw-r--r--. 1 root root 51 11月 23 2018 centos-release-upstream drwxr-xr-x. 2 root root 6 8月 4 2017 chkconfig.d -rw-r--r--. 1 root root 1108 4月 13 2018 chrony.conf -rw-r-----. 1 root chrony 481 9月 15 2017 chrony.keys drwxr-xr-x. 2 root root 21 1月 27 2021 cron.d drwxr-xr-x. 2 root root 42 1月 27 2021 cron.daily -rw-------. 1 root root 0 4月 11 2018 cron.deny drwxr-xr-x. 2 root root 22 6月 10 2014 cron.hourly drwxr-xr-x. 2 root root 6 6月 10 2014 cron.monthly -rw-r--r--. 1 root root 451 6月 10 2014 crontab
如何针对一个文件修改权限
chmod命令
u代表用户user
g代表组group
o代表其他other
r代表4
w代表2
x代表1
当给一个用户赋予权限时可以用字母,也可以用数字来操作
[root@localhost ~]# touch check.sh [root@localhost ~]# ls -l check.sh -rw-r--r--. 1 root root 0 8月 11 22:14 check.sh [root@localhost ~]# chmod 777 check.sh [root@localhost ~]# ls -l check.sh -rwxrwxrwx. 1 root root 0 8月 11 22:14 check.sh
#给check.sh赋予所有人读写执行的权限
[root@localhost ~]# chmod u=rwx,g=rw,o=r check.sh
[root@localhost ~]# ls -l check.sh
-rwxrw-r--. 1 root root 0 8月 11 22:14 check.sh
#给check.sh赋予拥有者读写执行,所属组读写,其他人读的权限
chown命令
chown命令主要用于修改文件或目录所属主和所属组
[root@localhost ~]# ls -l check.sh -rwxrw-r--. 1 root root 0 8月 11 22:14 check.sh [root@localhost ~]# chown lizhifeng check.sh [root@localhost ~]# ls -l check.sh -rwxrw-r--. 1 lizhifeng root 0 8月 11 22:14 check.sh
#修改文件的属主为lizhifeng用户,也就输说lizhifeng这个用户对check.sh有rwx的权限,属于root组的用户对这个文件有rw的权限,其他用户对这个文件有r的权限
[root@localhost ~]# chgrp maint2 check.sh [root@localhost ~]# ls -l check.sh -rwxrw-r--. 1 lizhifeng maint2 0 8月 11 22:14 check.sh
#修改文件的数组为maint2,相对于上面来说,只有属于maint2这个组的用户才能对这个文件有rw权限
Linux的三种特殊权限
1. set UID
[lizf@BJ_Ansible_01 ~]$ ll /bin/passwd -rwsr-xr-x. 1 root root 27832 6月 10 2014 /bin/passwd
当文件的权限拥有者位置出现s或者是S的时候,说明该文件有特殊权限,被设置了set UID 当用普通用户执行的时候会临时赋予root的用户权限。
2. set GID
set GID特殊权限应用于目录文件,当一个目录设置set GID特殊权限时, 任何用户在该目录下创建文件时,文件的所属组都会变成被设置set GID的那个目录的所属组。
在文件的所属组的权限列的执行权限位置,如果该位置执行位置变为s或者时S时,表示该文件目录被设置了set GID的特殊权限。
chmod g+s FILE
3.Sticky(粘位置)
针对于有写权限的目录文件,当一个有写权限的目录文件被设置了sticky特殊权限时,那么任何人在该目录下创建的文件只有目录的所有者和root可以删除。该特殊权限位,限制了目录的写权限。
如果其他人的权限列执行位置被设置成t或T,表示改目录文件被设置了Sticky特殊权限。
Linux的ACL权限
正常来说一个文件的权限就是针对user、group、other设置的,当这个文件想对other中的某一个人开放或者限制权限时就需要设置acl权限。
ACL可以针对单一用户、单一文件或目录来进行r、w、x的权限设置,对于需要特殊权限的使用状况非常有帮助
ACL的操作
当我们在看某个文件是否支持ACl权限时,首先要看文件所在的分区是否支持ACL权限。(xfs文件系统格式默认支持ACL权限)
临时开启分区ACL权限
mount -o remount,acl /
重新挂载根分区,并挂载加入 acl 权限。注意这种命令开启方式,如果系统重启了,那么根分区权限会恢复到初始状态。
永久开启分区ACL权限,修改/etc/fstab文件
重新挂载文件系统或重启系统,使得修改生效
mount -o remount /
设置文件的ACL权限
setfacl -m u:用户名:权限 指定文件名或目录
-m, --modify=acl:修改文件或目录的扩展ACL设置信息,如果是给予用户 ACL 权限,则使用"u:用户名:权限"格式赋予;如果是给予组 ACL 权限,则使用"g:组名:权限" 格式赋予 -x, --remove=acl:从文件或目录删除一个扩展的ACL设置信息 -b, --remove-all:删除所有的扩展的ACL设置信息 -k, --remove-default:删除缺省的acl设置信息 -n, --no-mask:不要重新计算有效权限。setfacl默认会重新计算ACL mask,除非mask被明确的制定 -d, --default:设置默认的ACL设置信息(只对目录有效) -R, --recursive:操作递归到所有子目录和 文件
查看文件或目录的ACL权限
getfacl 文件或目录名
案例:首先创建三个用户lsj、cjk、lizf,然后再创建一个文件test.txt。查看test的文件属性ls -l test.txt
[root@localhost ~]# touch test.txt [root@localhost ~]# ls -l 总用量 4 -rw-------. 1 root root 1400 1月 29 2020 anaconda-ks.cfg -rw-r--r--. 1 root root 0 8月 12 21:28 test.txt
test.txt对于lsj、cjk、lizf三个用户只有r权限,如果就想让lizf用户拥有对test.txt文件的r、w权限时,就需要对lizf设置ACL权限。
[root@localhost ~]# setfacl -m u:lizf:rw test.txt
-m 表示的就是修改文件的权限
u 代表针对用户设置特殊权限,lizf代表的就是用户名
lizf后面的 rw代表的就是针对lizf用户设置的特殊权限
[root@localhost ~]# ls -l test.txt -rw-rw-r--+ 1 root root 0 8月 12 21:28 test.txt
一旦对文件设置了ACl权限,那么该文件的9列权限后就会变成+,此时该文件表面上看到的权限不一定生效,想要查看到文件的真是权限,就要用到getfacl来查看
[root@localhost ~]# getfacl test.txt # file: test.txt file 文件名 # owner: root owner 文件的拥有者 # group: root group 文件所属组 user::rw- 文件拥有者的权限 user:lizf:rw- 针对用户lizf设置的权限 group::r-- 文件拥有组的权限 mask::rw- 代表了ACL可以设置的最大权限 other::r-- 表示其他的用户对文件的权限,例如lsj、cjk和lizf针对这个文件都是属于其他用户,lsj和cjk这两个用户只有对文件的r权限,但是lizf这个用户就有r、w权限。
如果想让lsj这个账户对这个test.txt啥权限也没有,也需要对lsj设置ACL权限
[root@localhost ~]# setfacl -m u:lsj:--- test.txt [root@localhost ~]# getfacl test.txt # file: test.txt # owner: root # group: root user::rw- user:lizf:rw- user:lsj:--- group::r-- mask::rw- other::r-- [root@localhost ~]# su lsj [lsj@localhost root]$ cat test.txt cat: test.txt: 权限不够
如果想要对一个用户解除ACL权限则用 -x参数,比如解除lsj的特殊权限。
[root@localhost ~]# setfacl -x u:lsj test.txt [root@localhost ~]# getfacl test.txt # file: test.txt # owner: root # group: root user::rw- user:lizf:rw- group::r-- group:wheel:--- mask::rw- other::r--
如果想要解除所有用户的ACL权限则用-b参数
[root@localhost ~]# setfacl -b test.txt [root@localhost ~]# getfacl test.txt # file: test.txt # owner: root # group: root user::rw- group::r-- other::r--
针对目录的ACL权限
针对目录的ACL权限,不在于访问控制,而是在于目录下创建文件的ACL权限继承,我们对目录设置ACL的权限是,在这个目录下创建一个新的文件时自带ACL权限,这样就不用再手动去设置了。
[root@localhost ~]# setfacl -m d:u:cjk:--- abc/ [root@localhost ~]# getfacl abc/ # file: abc/ # owner: root # group: root user::rwx group::r-x other::r-x default:user::rwx default:user:cjk:--- default:group::r-x default:mask::r-x default:other::r-x
default开头的所有字段,表示在该目录下创建的文件会自带ACL权限
文件的特殊权限之chattr、lsattr用法
在Linux中,有一些系统文件,对系统的运行有着至关重要的作用,如/etc/fstab等,一般不允许修改,这个时候,我们可以赋予文件/目录r--------
的权限;然而,还有一个更为简单有效的命令chattr
可以实现该功能,类似于chmod
, chmod
只是改变文件的读写、执行权限,更底层的属性控制是由chattr
来改变的
特殊权限的要求:
1 2 3 4 5 6 | 所支持的文件系统包括:ext2、ext3、ext4和xfs 一般要求内核版本不低于2.2(查看版本的命令如下): uname -a lsb_release -a 不能保护 / /tmp /dev /var 目录 chattr 只能由root用户使用 |
chattr参数
a :即append,设定该参数后,只能向文件中添加数据,而不能删除;
c :即compresse,设定文件是否经压缩后再存储。读取时需要经过自动解压操作。
i :设定文件不能被删除、改名、设定链接关系,同时不能写入或新增内容;对目录
s :保密性地删除文件或目录,即硬盘空间被全部收回
u :与s相反,当设定为u时,数据内容其实还存在磁盘中,可以用于undeletion.
lsattr 查看文件的特殊权限
示例:
首先,我使用root身份新建一个文件:
[root@niesh test]# ll 总用量 0 -rw-rw-r--. 1 root niesh 0 7月 31 20:27 abc
然后,我给该文件增加 i
权限:
[root@niesh test]# chattr +i abc [root@niesh test]# lsattr abc ----i----------- abc
然后,我尝试增加内容、删除文件和修改文件名:
[root@niesh test]# echo 1234 >> abc bash: abc: 权限不够 [root@niesh test]# rm -f abc rm: 无法删除"abc": 不允许的操作 [root@niesh test]# mv abc bcd mv: 无法将"abc" 移动至"bcd": 不允许的操作
以上均失败,由此验证当给文件加上i的特殊权限时,对文件锁定,不能执行增删改查命令,想要恢复就要执行chattr -i
1 2 3 | [root@niesh test ] # chattr -i abc [root@niesh test ] # lsattr abc ---------------- abc |
修改以上文件的权限为 a
:
[root@niesh test]# chattr +a abc [root@niesh test]# lsattr abc -----a---------- abc
对 abc
文件进行操作:
[root@niesh test]# echo 1111 >> abc [root@niesh test]# cat abc 1111 [root@niesh test]# rm -f abc rm: 无法删除"abc": 不允许的操作 [root@niesh test]# mv abc bcd mv: 无法将"abc" 移动至"bcd": 不允许的操作
由以上可以看出,只能增加文件内容,不能进行其他的操作,想要恢复执行chattr -a
[root@niesh test]# chattr -a abc [root@niesh test]# lsattr abc ---------------- abc
系统缺省权限设置umask
[root@localhost ~]# umask 0022
一般来说umask只看后3位
创建目录的缺省权限是777
创建普通文件的权限是666
正常来说任何用户创建目录后,该目录的权限是rwxrwxrwx
任何用户创建普通文本文件,该文件的权限是rw-rw-rw-
普通文件如果带上执行权限,是不安全的. umask能帮助用户修改创建文件的默认权限。
创建目录的最终权限,就是目录777减去umask的后3位,root创建的目录权限应该是777-022=755
创建普通文件的最终权限,就是666减去umask的后3位,root创建的普通文件权限应该是666-022=644
普通用户创建的目录权限应该是777-002=775 普通用户创建的文件权限应该是666-002=664
umask可以修改的
[root@localhost ~]# umask 0027 [root@localhost ~]# umask 0027
不过这只是临时修改,想要永久修改就要写入配置文件login.defs
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 理解Rust引用及其生命周期标识(上)
· 浏览器原生「磁吸」效果!Anchor Positioning 锚点定位神器解析
· 全程不用写代码,我用AI程序员写了一个飞机大战
· DeepSeek 开源周回顾「GitHub 热点速览」
· 记一次.NET内存居高不下排查解决与启示
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!