资源分派:
当用户登陆成功时,系统会自动分配令牌token,包括:用户标识和组成员等信息
Linux中每个用户是通过User Id(UID)来唯一标识的
Linux中可以将一个或多个用户加入用户组中,用户组是通过Group ID(GID)来唯一标识的。
范例:
[root@CentOS-8 ~]# id postfix
uid=89(postfix) gid=89(postfix) groups=89(postfix),12(mail)
Linux安全上下文Context:运行中的程序,即进程(process),以进程发起者的身份运行,进程所能够访问资源的权限取决于进程的运行者的身份
比如:分别以root和du的身份运行/bin/cat /etc/shadow,得到的结果是不同的,资源能否能被访问,是由运行者的身份决定,非程序本身
范例:
[du@CentOS-8 ~]$ cat /etc/shadow
cat: /etc/shadow: Permission denied
[root@CentOS-8 ~]# cat /etc/shadow
root:$6$w094OhpSTIlvjEmg$IZd0Lf9REhlU5Ns.6dIRTrH32IuQsWQ8y9fVSaSeljDmae14bJe9Iv.Z0fxB/zxO77kVoER7LrsG.GhKbUrcO1::0:99999:7:::
bin:*:18397:0:99999:7:::
daemon:*:18397:0:99999:7:::
adm:*:18397:0:99999:7:::
lp:*:18397:0:99999:7:::
[root@CentOS-8 ~]#cat /etc/passwd
root:x:0:0:root:/root:/bin/bash
bin:x:1:1:bin:/bin:/sbin/nologin
du:x:1000:1000:dws,it,100001,111111:/home/du:/bin/bash
login name:登录用名(du)
passwd:密码(x)
UID:用户身份编号(1000)
GID:登录默认所在组编号(1000)
GECOS:用户全名或注释
home directory:用户主目录(/home/du)
shell:用户默认使用shell(/bin/bash)
[root@CentOS-8 ~]#whatis passwd
passwd (5) - password file
openssl-passwd (1ssl) - compute password hashes
passwd (1) - update user's authentication tokens
#要是没有的的话就先生成
[root@CentOS-8 ~]#mandb
Purging old database entries in /usr/share/man/overrides...
....
72 man subdirectories contained newer manual pages.
621 manual pages were added.
0 stray cats were added.
19 old database entries were purged.
[09:22:53 root@CentOS-8 ~]#cat /etc/shadow
root:$6$w094OhpSTIlvjEmg$IZd0Lf9REhlU5Ns.6dIRTrH32IuQsWQ8y9fVSaSeljDmae14bJe9Iv.Z0fxB/zxO77kVoER7LrsG.GhKbUrcO1::0:99999:7:::
du:$6$5dz/5J8EJJW3KIqp$yh8YygMyLd0M7/SfAwUdUzsvzVH0Ukmg5G4pUde2vOVlesQs7MAL1/H8CadNqC68x5RTS9t8ICh0jgPD12AGC.:18760:0:99999:7:::
登录用名
用户密码:一般用sha512加密
从1970年1月1日起到密码最近一次被修改的时间
密码再过几天可以被变更(0表示随时可被变更)
密码再过几天必须被变更(99999表示永不过期)
密码过期前几天系统提醒用户(默认为一周)
密码过几天后账号会被锁定
从1970年1月1日算起,多少天后账号失效
更改密码加密算法:
authconfig --passalgo=sha256 --update
密码安全策略
范例:生成随机密码
[root@CentOS-8 ~]# tr -dc '[:alnum:]' < /dev/urandom | head -c 12
AIhICqw8W9hf
[root@CentOS-8 ~]# openssl rand -base64 9
Jw2KYsBBEnDy
生成随机密码:https://suijimimashengcheng.bmcx.com/
[root@CentOS-8 ~]#cat /etc/group
root:x:0:
bin:x:1:
daemon:x:2:
sys:x:3:
群组名称:就是群组名称
群组密码:通常不需要设定,密码是被记录在/etc/gshadow
GID:就是群组的ID
以当前组为附加组的用户列表(分隔符为逗号)
群组名称:就是群的名称
群组密码:
组管理员列表:组管理员的列表,更改组密码和成员
以当前组为附加组的用户列表:多个用户间用逗号分隔
用户管理命令
组账号维护命令
useradd 命令可以创建新的Linux用户
格式:
useradd [options] LOGIN
常见选项:
-u UID
-o 配合-u 选项,不检查UID的唯一性
-g GID 指明用户所属基本组,可为组名,也可以GID
-c "COMMENT" 用户的注释信息
-d HOME_DIR 以指定的路径(不存在)为家目录
-s SHELL 指明用户的默认shell程序,可用列表在/etc/shells文件中
-G GROUP1[,GROUP2,...] 为用户指明附加组,组须事先存在
-N 不创建私用组做主组,使用users组做主组
-r 创建系统用户Centos 6之前;ID<500,Centos 7以后:ID<1000
-m 创建家目录,用于系统用户
-M 不创建家目录,用于非系统用户、
-p 指定加密的密码
范例:
#-r选项不会创建家目录,不会创建邮箱,会指定一个ID一千以内的ID号
useradd -r -u 48 -g apache -s /sbin/nologin -d /var/www -c "Apache" apache
[root@centos8 ~]#groupadd -r -g 80 nginx; useradd -r -g nginx -u 80 -d /var/www -s /sbin/nologin -c "nginx service" nginx
[root@centos8 ~]#getent passwd nginx
nginx:x:80:80:nginx service:/var/www:/sbin/nologin
[root@centos8 ~]#ll /var/spool/mail/
total 0
-rw-rw----. 1 rpc mail 0 Oct 25 22:47 rpc
-rw-rw----. 1 user mail 0 Oct 25 23:34 user
useradd 命令默认值设定由/etc/default/useradd定义
[root@CentOS-8 ~]# cat /etc/default/useradd
# useradd defaults file
GROUP=100
HOME=/home
INACTIVE=-1 #对应/etc/shadow文件第7列,即用户密码过期的宽限期
EXPIRE= #对应/etc/shadow文件第8列,即用户账号的有效期
SHELL=/bin/bash
SKEL=/etc/skel
CREATE_MAIL_SPOOL=yes
显示或更改默认设置
useradd -D
useradd -D -s SHELL
useradd -D -b BASE_DIR
useradd -D -g GROUP
新建用户的相关文件
批量创建用户
newusers passwd 格式文件
批量修改用户口令
echo username:passwd | chpasswd
范例: CentOS 6 创建并指定基于sha512的用户密码
[root@centos6 ~]#grub-crypt --help
Usage: grub-crypt [OPTION]...
Encrypt a password.
-h, --help Print this message and exit
-v, --version Print the version information and exit
--md5 Use MD5 to encrypt the password
--sha-256 Use SHA-256 to encrypt the password
--sha-512 Use SHA-512 to encrypt the password (default)
Report bugs to <[email protected]>.
EOF
[root@centos6 ~]#grub-crypt --sha-512
Password:
Retype password:
$6$v9A2/xUNwAWwEmHN$q7Wz.uscsV/8J5Gss3KslX8hKXOoaP3hDpOBWeBfMQHVIRZiwHUUkii84cvQ
WIMnvtnXYsdVHuLO4KhOiSOMh/
[root@centos6 ~]#useradd -p
'$6$v9A2/xUNwAWwEmHN$q7Wz.uscsV/8J5Gss3KslX8hKXOoaP3hDpOBWeBfMQHVIRZiwHUUkii84cv
QWIMnvtnXYsdVHuLO4KhOiSOMh/' test
[root@centos6 ~]#getent shadow test
test:$6$v9A2/xUNwAWwEmHN$q7Wz.uscsV/8J5Gss3KslX8hKXOoaP3hDpOBWeBfMQHVIRZiwHUUkii
84cvQWIMnvtnXYsdVHuLO4KhOiSOMh/:18459:0:99999:7:::
范例: CentOS7 利用Python程序在 生成sha512加密密码
[root@centos7 ~]#python -c 'import
crypt,getpass;pw="magedu";print(crypt.crypt(pw))'
$6$pt0SFMf6YqKea3mh$.7Hkslg17uI.Wu7BcMJStVVtkzrwktXrOC8DxcMFC4JO1igrqR7VAi87H5PH
OuLTUEjl7eJqKUhMT1e9ixojn1
范例: CentOS8 生成sha512加密密码
[root@centos8 ~]#openssl passwd -6 magedu
$6$UOyYOao.iM2.rPnM$jCpTnBVIQBuGCLOm4N5hqh5YUc3wWXcDzkDMddthpKNL3scOZjTHh9fXds8E
u6gNdEQqLMQgOboipZ08mnz2V.
范例:任意系统可运行
[root@centos8 ~]#cat /dev/urandom |tr -dc '[:alnum:]'|head -c12
32lFOVFPf2E4[root@centos8 ~]#
usermod 命令可以修改用户属性
格式:
usermod [option] login
常见选项:
-u UID: 新UID
-g GID: 新主组
-G GROUP1[,GROUP2,...[,GROUPN]]: 新附加组,原来的附加组将会被覆盖;若保留原有,则要同时使用-a选项
-s SHELL: 新的默认SHELL
-c 'COMMENT': 新的注释信息
-d HOME: 新家目录不会自动创建:若要差UN构建新家目录并移动原家数据,同时使用-m选项
-l login_name: 新的名字
-L: lock指定用户,在/etc/shadow 密码栏的增加 !
-u: unlock指定用户,将/etc/shadow密码栏的!拿掉
-e YYYY-MM-DD: 指明用户账号过期日期
-f INACTIVE: 设定非活动期限,即宽限期
userdel可删除Linux用户
格式:
userdel [option]...login
常见选项:
-f, --force 强制
-r, --remove 删除用户家目录和邮箱
范例: 强制删除用户和数据
[root@centos8 ~]#useradd test
[root@centos8 ~]#id test
uid=1001(test) gid=1001(test) groups=1001(test)
#在另一终端用test登录
[root@centos8 ~]#su - test
[test@centos8 ~]$
#删除正在登录的用户失败
[root@centos8 ~]#userdel -r test
userdel: user test is currently used by process 29909
[root@centos8 ~]#id test
uid=1001(test) gid=1001(test) groups=1001(test)
#强制删除用户
[root@centos8 ~]#userdel -rf test
userdel: user test is currently used by process 29909
[root@centos8 ~]#id test
id: ‘test’: no such user
id命令可以查看用户的UID,GID等信息
id [option]...[user]
常见选项:
-u: 显示UID
-g: 显示GID
-G: 显示用户所属的组的ID
-n: 显示名称,需配合ugG使用
su: 即switch user,命令可以切换用户身份,并且以指定的用户身份执行命令
格式:
su [options...] [-] [user [args...]]
常见选项:
-l --login su -l username 相当于su - username
-c --command <command> pass a single command to the shell with -c
切换用户的方式:
说明:root su至其他用户无需密码;非root用户切换时需要密码
注意:su 切换新用户后,使用exit退回至旧的用户,而不要再用su切换至旧用户,否则会生成很多的bash子进程,环境可能会混乱。
换个身份执行命令:
su [-] username -c 'COMMAND'
范例:
[root@CentOS-8 ~]# getent passwd du
du:x:1000:1000:du:/home/du:/bin/bash
[root@CentOS-8 ~]# usermod -s /bin/false du
[root@CentOS-8 ~]# getent passwd du
du:x:1000:1000:du:/home/du:/bin/false
[root@CentOS-8 ~]# su - du
[root@CentOS-8 ~]# whoami
root
范例:
[root@CentOS-8 ~]# su -s /sbin/nologin du
This account is currently not available.
[root@CentOS-8 ~]# whoami
root
[root@CentOS-8 ~]# su -s /sbin/false du
su: failed to execute /sbin/false: No such file or directory
[root@CentOS-8 ~]# whoami
root
范例:
[du@CentOS-8 ~]$ su - root -c "getent shadow"
Password:
root:$6$w094OhpSTIlvjEmg$IZd0Lf9REhlU5Ns.6dIRTrH32IuQsWQ8y9fVSaSeljDmae14bJe9Iv.Z0fxB/zxO77kVoER7LrsG.GhKbUrcO1::0:99999:7:::
bin:*:18397:0:99999:7:::
...
范例:
[root@CentOS-8 ~]# su - du -c 'touch du.txt'
[root@CentOS-8 ~]# ll ~du
total 0
-rw-rw-r--. 1 du du 0 May 17 16:00 du.txt
范例:
[root@CentOS-8 ~]# su bin
This account is currently not available.
[root@CentOS-8 ~]# su -s /bin/bash bin
bash-4.4$ whoami
bin
bash-4.4$
[root@CentOS-8 ~]# getent passwd tss
tss:x:59:59:Account used by the trousers package to sandbox the tcsd daemon:/dev/null:/sbin/nologin
[root@CentOS-8 ~]# su - -s /bin/bash tss
su: warning: cannot change directory to /dev/null: Not a directory
-bash: /dev/null/.bash_profile: Not a directory
[tss@CentOS-8 root]$ pwd
/root
[tss@CentOS-8 root]$ whoami
tss
passwd [options] username
echo "PASSWORD" | passwd --stdin USERNAME
常用选项:
-d: 删除指定用户密码
-l: 锁定用户
-u: 解锁指定用户
-e: 强制用户下次登录修改密码
-f: 强制操作
-n mindays: 指定最短使用期限
-x maxdays: 最大使用期限
-w warndays: 提前多少天开始警告
-i inactivedays: 非活动期限
--stdin: 从标准输入接收用户密码,Ubuntu无此选项
范例:非交互式修改用户密码
#此方式更通用,适用于各种Linux版本,如:ubuntu
[root@centos8 ~]#echo -e '123456\n123456' | passwd du
Changing password for user du.
New password: BAD PASSWORD: The password is shorter than 8 characters
Retype new password: passwd: all authentication tokens updated successfully.
#适用于红帽系列的Linux版本
[root@centos8 ~]#echo '123456' | passwd --stdin du
Changing password for user du.
passwd: all authentication tokens updated successfully.
范例:Ubuntu非交互式修改用户密码
[root@ubuntu1804 ~]#echo dws:centos |chpasswd
[root@ubuntu1804 ~]#passwd dws <
> centos
> centos
> EOF
Enter new UNIX password: Retype new UNIX password: passwd: password updated successfully
[root@ubuntu1804 ~]#echo -e 'magedu\nmagedu' | passwd dws
Enter new UNIX password: Retype new UNIX password: passwd: password updated successfully
范例:设置用户下次必须更改密码
[root@CentOS-8 ~]# useradd wang
[root@CentOS-8 ~]# echo 123456 | passwd --stdin wang
Changing password for user wang.
passwd: all authentication tokens updated successfully.
[root@CentOS-8 ~]# getent shadow wang
wang:$6$pXOeyTc1AnSFPOnS$kC/oYg/gFViNH1xExLlkMp/GDMSzauImaRN9pbjcW6Dko5Q7jQKf3qepCuzuKu6w8Pi9JHlvl8lexNE.FZYWx/:18764:0:99999:7:::
[root@CentOS-8 ~]# passwd -e wang
Expiring password for user wang.
passwd: Success
[root@CentOS-8 ~]# getent shadow wang
wang:$6$pXOeyTc1AnSFPOnS$kC/oYg/gFViNH1xExLlkMp/GDMSzauImaRN9pbjcW6Dko5Q7jQKf3qepCuzuKu6w8Pi9JHlvl8lexNE.FZYWx/:0:0:99999:7:::
[root@CentOS-8 ~]# su - du
[du@CentOS-8 ~]$ su - wang
Password:
You are required to change your password immediately (administrator enforced)
Current password:
New password:
BAD PASSWORD: The password is the same as the old one
su: Authentication token manipulation error
[du@CentOS-8 ~]$ su - wang
Password:
You are required to change your password immediately (administrator enforced)
Current password:
New password:
Retype new password:
[wang@CentOS-8 ~]$ exit
logout
[du@CentOS-8 ~]$ exit
logout
[root@CentOS-8 ~]# getent shadow wang
wang:$6$Z2HuqxwIgicE0a/V$sybtF8iiy.wTPkbUw/tL6T76AA5i5g1KL7WnYcBWDjze/WNX2oubdCaWtX1My2kZA2poFAM.j9TnhmzvPZnlZ1:18764:0:99999:7:::
chage 可以修改用户密码策略
格式:
chage [options]...login
常见选项:
-d LAST_DAY #更改密码的时间
-m --mindays MIN_DAYS
-M --maxdays MAX_DAYS
-w --warndays WARN_DAYS
-I --inactive INACTIVE #密码过期后的宽限期
-E --expiredate EXPIRE_DATE #用户的有效期
-l 显示密码策略
范例:
[root@centos8 ~]#chage du
Changing the aging information for du
Enter the new value, or press ENTER for the default
Minimum Password Age [0]: 3
Maximum Password Age [99999]: 42
Last Password Change (YYYY-MM-DD) [2021-11-07]: 2022-01-01
Password Expiration Warning [7]: 10
Password Inactive [-1]: 20
Account Expiration Date (YYYY-MM-DD) [-1]: 2023-01-01
[root@centos8 ~]#getent shadow du
du:$6$3dADcS3WSnr19Lgd$Rt7/7LZtfJJP1/nGtuC2Mk5ZaoRRWUYZypG5V8fn.CNo7x8VGB/Tk3sRbg758jQWY18Yh//zNkrsYDk.taQcy1:18993:3:42:10:20:19358:
[root@CentOS-8 ~]# chage -m 3 -M 42 -W 14 -I 7 -E 2021-10-10 wang
[root@CentOS-8 ~]# chage -l wang
Last password change : May 17, 2021
Password expires : Jun 28, 2021
Password inactive : Jul 05, 2021
Account expires : Oct 10, 2021
Minimum number of days between password change : 3
Maximum number of days between password change : 42
Number of days of warning before password expires : 14
[root@CentOS-8 ~]# getent shadow wang
wang:$6$Z2HuqxwIgicE0a/V$sybtF8iiy.wTPkbUw/tL6T76AA5i5g1KL7WnYcBWDjze/WNX2oubdCaWtX1My2kZA2poFAM.j9TnhmzvPZnlZ1:18764:3:42:14:7:18910:
#下一次登录强制重设密码
[root@CentOS-8 ~]# chage -d 0 wang
[root@CentOS-8 ~]# getent shadow wang
wang:$6$Z2HuqxwIgicE0a/V$sybtF8iiy.wTPkbUw/tL6T76AA5i5g1KL7WnYcBWDjze/WNX2oubdCaWtX1My2kZA2poFAM.j9TnhmzvPZnlZ1:0:3:42:14:7:18910:
[root@CentOS-8 ~]# chage -l wang
Last password change : password must be changed
Password expires : password must be changed
Password inactive : password must be changed
Account expires : Oct 10, 2021
Minimum number of days between password change : 3
Maximum number of days between password change : 42
Number of days of warning before password expires : 14
[root@CentOS-8 ~]# getent shadow wang
wang:$6$Z2HuqxwIgicE0a/V$sybtF8iiy.wTPkbUw/tL6T76AA5i5g1KL7WnYcBWDjze/WNX2oubdCaWtX1My2kZA2poFAM.j9TnhmzvPZnlZ1:0:3:42:14:7:18910:
范例:
[root@CentOS-7 ~]# chfn du
Changing finger information for du.
Name []: duwenshuo
Office []: it
Office Phone []: 100001
Home Phone []: 10001111
Finger information changed.
[root@CentOS-7 ~]# finger du
Login: du Name: duwenshuo
Directory: /home/du Shell: /bin/bash
Office: it, 100001 Home Phone: 10001111
Never logged in.
No mail.
No Plan.
[root@CentOS-7 ~]# getent passwd du
du:x:1000:1000:duwenshuo,it,100001,10001111:/home/du:/bin/bash
[root@CentOS-7 ~]# chsh -s /bin/base64 du
Changing shell for du.
chsh: Warning: "/bin/base64" is not listed in /etc/shells.
Shell changed.
[root@CentOS-7 ~]# getent passwd du
du:x:1000:1000:duwenshuo,it,100001,10001111:/home/du:/bin/base64
[root@centos7 ~]#chsh -s /bin/csh wang
Changing shell for wang.
Shell changed.
[root@centos7 ~]#getent passwd wang
wang:x:1000:1000:wangsicong,wanda,10000,11111:/home/wang:/bin/csh
[root@centos7 ~]#usermod -s /bin/bash wang
[root@centos7 ~]#getent passwd wang
wang:x:1000:1000:wangsicong,wanda,10000,11111:/home/wang:/bin/bash
范例:修改用户使用不可登录的shell类型
[root@CentOS-7 ~]# getent passwd du
du:x:1000:1000:duwenshuo,it,100001,10001111:/home/du:/bin/bash
[root@CentOS-7 ~]# chsh -s /sbin/nologin du
Changing shell for du.
chsh: Warning: "/sbin/nologin" is not listed in /etc/shells.
Shell changed.
[root@CentOS-7 ~]# su - du
This account is currently not available.
[root@CentOS-7 ~]# chsh -s /bin/false du
Changing shell for du.
chsh: Warning: "/bin/false" is not listed in /etc/shells.
Shell changed.
[root@CentOS-7 ~]# su - du
Last login: Mon May 17 17:09:12 CST 2021 on pts/0
[root@CentOS-7 ~]# id
uid=0(root) gid=0(root) groups=0(root) context=unconfined_u:unconfined_r:unconfined_t:s0-s0:c0.c1023
[root@CentOS-7 ~]# chsh -s /bin/bash du
Changing shell for du.
Shell changed.
[root@CentOS-7 ~]# su - du
Last login: Mon May 17 17:09:36 CST 2021 on pts/0
groupadd实现创建组
格式
groupadd [option]...group_name
常见选项:
-g GID 指明GID号;[GID_MIN,GID_MAX]
-r 创建系统组,Centos 6之前:ID<500,Centos 7以后:ID<1000
范例:
groupadd -g 48 -r apache
groupmod 组属性修改
格式:
groupmod [option]...group
常见选项:
-n group_name:新名字
-g GID:新的GID
groupdel 可以删除组
格式
groupdel [options] group
常见选项:
-f, --force 强制删除,即使是用户的主组也要强制删除组,但会导致无主组的用户不可用无法登录
gpasswd命令,可以更改组密码,也可以修改附加组的成员关系
格式
gpasswd [option] group
常见选项:
-a user 将user添加至指定用户组中
-d user 从指定附加组中移除用户user
-A user1,user2,...设置有管理权限的用户列表
范例:
#添加组成员
[root@CentOS-8 ~]# groupadd admins
[root@CentOS-8 ~]# id du
uid=1000(du) gid=1000(du) groups=1000(du)
[root@CentOS-8 ~]# gpasswd -a du admins
Adding user du to group admins
[root@CentOS-8 ~]# id du
uid=1000(du) gid=1000(du) groups=1000(du),1003(admins)
[root@CentOS-8 ~]# groups du
du : du admins
[root@CentOS-8 ~]# getent group admins
admins:x:1003:du
#删除组成员
[root@CentOS-8 ~]# gpasswd -d du admins
Removing user du from group admins
[root@CentOS-8 ~]# groups du
du : du
[root@CentOS-8 ~]# id du
uid=1000(du) gid=1000(du) groups=1000(du)
[root@CentOS-8 ~]# getent group admins
admins:x:1003:
newgrp 命令可以临时切换主组,如果用户本不属于此组,则需要组密码
格式:
newgrp [-] [group]
如果使用 - 选项,可以初始化用户环境
[root@CentOS-8 ~]# gpasswd root
Changing the password for group root
New Password:
Re-enter new password:
[root@centos8 ~]#getent gshadow root
root:$6$G.jsR/jv.L/Eld$TInRxHmsafucROg9njCIy8gIdG/H50AF5Z0iqlAehOdQXVX2A9l6tVX9YF8pkwFo8./J.2oJhtC6JOHBnOiYX.::
[root@CentOS-8 ~]# su - wang
[wang@CentOS-8 ~]$ newgrp root
Password:
[wang@CentOS-8 ~]$ id
uid=1001(wang) gid=0(root) groups=0(root),1001(wang) context=unconfined_u:unconfined_r:unconfined_t:s0-s0:c0.c1023
[root@CentOS-8 ~]# su - du
[du@CentOS-8 ~]$ newgrp root
Password:
[du@CentOS-8 ~]$ id
uid=1000(du) gid=0(root) groups=0(root),1000(du) context=unconfined_u:unconfined_r:unconfined_t:s0-s0:c0.c1023
[du@CentOS-8 ~]$ getent passwd du
du:x:1000:1000:duwenshuo,it,100001,111111:/home/du:/bin/bash
[du@CentOS-8 ~]$ touch du1.txt
[du@CentOS-8 ~]$ ll
total 0
-rw-r--r--. 1 du root 0 May 18 14:55 du1.txt
-rw-rw-r--. 1 du du 0 May 17 16:01 du.txt
[du@CentOS-8 ~]$ exit
exit
[du@CentOS-8 ~]$ id
uid=1000(du) gid=1000(du) groups=1000(du) context=unconfined_u:unconfined_r:unconfined_t:s0-s0:c0.c1023
[du@CentOS-8 ~]$ touch du2.txt
[du@CentOS-8 ~]$ ll
total 0
-rw-r--r--. 1 du root 0 May 18 14:55 du1.txt
-rw-rw-r--. 1 du du 0 May 18 14:55 du2.txt
-rw-rw-r--. 1 du du 0 May 17 16:01 du.txt
groupmems 可以管理附加组的成员关系
格式:
groupmems [options] [action]
常见选项:
-g, --group groupname #更改为指定组(只有root)
-a, --add username #指定用户加入组
-d, --delete username #从组中删除用户
-p, --purge #从组中清除所有成员
-l, --list #显示组成员列表
groups 可查看用户组关系
格式
#查看用户所属组列表
group [option].[username]...
范例:
[root@CentOS-8 ~]# groupmems -l -g admins
[root@CentOS-8 ~]# id mage
uid=1002(mage) gid=1002(mage) groups=1002(mage)
[root@CentOS-8 ~]# groupmems -a mage -g admins
[root@CentOS-8 ~]# id mage
uid=1002(mage) gid=1002(mage) groups=1002(mage),1003(admins)
[root@CentOS-8 ~]# groupmems -l -g admins
mage
[root@CentOS-8 ~]# groupmems -a du -g admins
[root@CentOS-8 ~]# groupmems -l -g admins
mage du
[root@CentOS-8 ~]# groupmems -d du -g admins
[root@CentOS-8 ~]# groupmems -l -g admins
mage
[root@CentOS-8 ~]# groups du
du : du
[root@CentOS-8 ~]# groupmems -l -g admins
mage
[root@CentOS-8 ~]# groupmems -p -g admins
[root@CentOS-8 ~]# groupmems -l -g admins
[root@lianxi01 ~]# useradd gentoo -G bin,root -s /bin/csh -c "Gentoo istribution"
[root@lianxi01 ~]# getent passwd gentoo
gentoo:x:1005:1005:Gentoo istribution:/home/gentoo:/bin/csh
[root@lianxi01 ~]# groupadd webs
[root@lianxi01 ~]# useradd nginx -G webs
[root@lianxi01 ~]# useradd varnish -G webs
[root@lianxi01 ~]# useradd mysql -s /bin/nologin
[root@lianxi01 ~]# echo -e "magedu\nmagedu"|passwd nginx
Changing password for user nginx.
New password: BAD PASSWORD: The password is shorter than 8 characters
Retype new password: passwd: all authentication tokens updated successfully.
[root@lianxi01 ~]# echo -e "magedu\nmagedu"|passwd varnish
Changing password for user varnish.
New password: BAD PASSWORD: The password is shorter than 8 characters
Retype new password: passwd: all authentication tokens updated successfully.
[root@lianxi01 ~]# echo -e "magedu\nmagedu"|passwd mysql
Changing password for user mysql.
New password: BAD PASSWORD: The password is shorter than 8 characters
Retype new password: passwd: all authentication tokens updated successfully.
程序访问文件时的权限,取决于此程序的发起者
chown 命令可以修改文件的属主,也可以修改文件属组
格式
chown [option]...[owner][:[group]] file...
chown [option]...--reference=rfile file...
用法说明:
owner #只修改所有者
owner:group #同时修改所有者和属组
:group #只修改属组,冒号也可用.替换
--reference=rfile #参考指定的属性,来修改
-R #递归,此选项慎用,非常危险
范例:
[root@CentOS-8 data]# cp /etc/fstab f1.txt
[root@CentOS-8 data]# ll
total 4
-rw-r--r--. 1 root root 709 May 18 15:30 f1.txt
[root@CentOS-8 data]# pwd
/data
[root@CentOS-8 data]# ll
total 4
-rw-r--r--. 1 root root 709 May 18 15:30 f1.txt
[root@CentOS-8 data]# chown du f1.txt
[root@CentOS-8 data]# ll
total 4
-rw-r--r--. 1 du root 709 May 18 15:30 f1.txt
[root@CentOS-8 data]# chown :admins f1.txt
[root@CentOS-8 data]# ll f1.txt
-rw-r--r--. 1 du admins 709 May 18 15:30 f1.txt
[root@CentOS-8 data]# chown root.bin f1.txt
[root@CentOS-8 data]# ll
total 4
-rw-r--r--. 1 root bin 709 May 18 15:30 f1.txt
[root@CentOS-8 data]# chown du:admins f1.txt
[root@CentOS-8 data]# ll
total 4
-rw-r--r--. 1 du admins 709 May 18 15:30 f1.txt
[root@CentOS-8 data]# cp /etc/issue f2.txt
[root@CentOS-8 data]# ll
total 8
-rw-r--r--. 1 du admins 709 May 18 15:30 f1.txt
-rw-r--r--. 1 root root 23 May 18 15:33 f2.txt
[root@CentOS-8 data]# chown --reference=f1.txt f2.txt
[root@CentOS-8 data]# ll
total 8
-rw-r--r--. 1 du admins 709 May 18 15:30 f1.txt
-rw-r--r--. 1 du admins 23 May 18 15:33 f2.txt
范例:
[root@CentOS-8 ~]# chown -R du.admins /data/
[root@CentOS-8 ~]# ll /
total 28
lrwxrwxrwx. 1 root root 7 Nov 3 2020 bin -> usr/bin
dr-xr-xr-x. 5 root root 4096 Apr 30 10:36 boot
drwxr-xr-x. 2 du admins 34 May 18 15:33 data
...
chgrp 命令可以只修改文件的属组
格式
chgrp [option]...group file...
chgrp [option]...--reference=rfile file...
-R 递归
范例:
[root@CentOS-8 data]# ll f1.txt
-rw-r--r--. 1 du admins 709 May 18 15:30 f1.txt
[root@CentOS-8 data]# chgrp admins f1.txt
[root@CentOS-8 data]# ll f1.txt
-rw-r--r--. 1 du admins 709 May 18 15:30 f1.txt
文件的权限主要针对三类对象进行定义
owner 属主,u
group 属组,g
other 其他,o
注意:
用户的最终权限,是从左向右进行顺序匹配,即:所有者,所属组,其他人,一旦匹配权限立即生效,不再向右查看其权限
r和w权限对root 用户无效
只要所有者,所属组或other三者之一有x权限,root就可以执行
每个文件针对每类访问者都定义了三种常用权限
每个文件针对每类访问者都定义了三种权限
r readable
w writable
x excutable
对文件的权限:
r 可使用文件查看类工具,比如:cat,可以获取其内容
w 可修改其内容
x 可以把此文件提请内核启动为一个程序,即可以执行(运行)此文件(此文件的内容必须是可执行)
对目录的权限:
r 可以使用ls查看此目录中文件列表
w 可在此目录中创建文件,也可删除此目录中的文件,而和此被删除的文件的权限无关
x 可以cd进入此目录,可以使用ls -l查看此目录中文件元数据(须配合r权限),属于目录的可访问的最小权限
X 只给目录x权限,不给无执行权限的文件x权限
面试题:
Linux中的目录和文件的权限区别?(分别说明读,写和执行权限的区别
--- 000 0
--x 001 1
-w- 010 2
-wx 011 3
r-- 100 4
r-x 101 5
rw- 110 6
rwx 111 7
例如:
rw-r----- 640
rwxr-xr-x 755
格式:
chmod [option]...mode[,mode]...file...
chmod [option]...octal-mode file...
#参考rfile文件的权限,将file的修改为同rfile
chmod [option]...--reference=rfile file...
说明:模式法格式
mode: who opt permission
who:u,g,o,a
opt:+,-,=
permission:r,w,x
修改指定一类用户的所有权限
u= g= o= ug= a= u=,g=
修改指定一类用户某个或某个权限
u+ u- g+ g- o+ o- a+ a- + -
-R:递归修改权限
范例:设置 X 权限
[root@CentOS-8 data]# ll dir
total 8
-rw-r--r--. 1 root root 709 May 18 16:19 f1.txt
-rw-r--r--. 1 root root 23 May 18 16:19 f2.txt
drw-r--r--. 2 root root 6 May 18 16:19 subdir
[root@CentOS-8 data]# ll -d dir
drw-r--r--. 3 root root 48 May 18 16:19 dir
[root@CentOS-8 data]# chmod -R a+X dir
[root@CentOS-8 data]# ll -d dir
drwxr-xr-x. 3 root root 48 May 18 16:19 dir
[root@CentOS-8 data]# ll dir
total 8
-rw-r--r--. 1 root root 709 May 18 16:19 f1.txt
-rw-r--r--. 1 root root 23 May 18 16:19 f2.txt
drwxr-xr-x. 2 root root 6 May 18 16:19 subdir
范例:
chmod u+wx,g-r,o=rx file
chmod -R g+rwx /testdir
chmod 600 file
范例:面试题
执行 cp /etc/issue /data/dir 所需要的最小权限?
/bin/cp 需要x权限
/etc/ 需要x权限
/etc/issue 需要r权限
/data 需要x权限
/data/dir 需要w,x权限
umask 的值可以用来保存在创建文件权限
实现方式:
非特权用户umask默认是002
root的umask默认是022
查看umask
umask
#模式方式显示
umask -S
#输出可调用
umask -p
修改umask
umask #
范例:
umask 002
umask u=rw,g=r,o=
持久保存umask
范例:
[root@CentOS-8 ~]# umask
0022
[root@CentOS-8 ~]# umask -S
u=rwx,g=rx,o=rx
[root@CentOS-8 ~]# umask -p
umask 0022
范例:
[root@CentOS-8 ~]# umask
0022
[root@CentOS-8 ~]# ( umask 666; touch /data/f10.txt )
[root@CentOS-8 ~]# umask
0022
[root@CentOS-8 ~]# ll /data/f10.txt
----------. 1 root root 0 May 19 10:30 /data/f10.txt
练习
前面介绍了三种常见的权限:r, w, x 还有三种特殊权限:SUID, SGID, Sticky
特殊权限
前提:进程有属主和属组;文件有属主和属组
二进制的可执行文件上SUID权限功能:
SUID权限设定:
chmod u+s FILE...
chmod 4xxx FILE
chmod u-s FILE...
范例:
[root@centos8 ~]#ls -l /usr/bin/passwd
-rwsr-xr-x. 1 root root 34928 May 11 2019 /usr/bin/passwd
二进制的可执行文件上SGID权限功能:
SGID权限设定:
chmod g+s file...
chmod 2xxx file...
chmod g-s file...
目录上的SGID权限功能:
默认情况下,用户创建文件时,其属组为此用户所属的主组,一旦某目录被设定了SGID,则对此目录有写权限的用户在此目录中创建的文件所属的组为此目录的属组,通常用于创建一个协作目录
SGID权限设定:
chmod g+s dir...
chmod 2xxx dir...
chmod g-s dir...
具有写权限的目录通常用户可以删除该目录中的任何文件,无论该文件的权限或拥有权
在目录设置Sticky 位,只有文件的所有者或root可以删除该文件
sticky 设置在文件上无意义
Sticky权限设定:
chmod o+t DIR...
chmod 1xxx DIR
chmod o-t DIR...
范例:
[root@centos8 ~]#ll -d /tmp
drwxrwxrwt. 15 root root 4096 Dec 12 20:16 /tmp
SUID SGID STICKY
000 0
001 1
010 2
011 3
100 4
101 5
110 6
111 7
范例:
chmod 4777 /tmp/a.txt
权限位映射
SUID: user,占据属主的执行权限位
s:属主拥有x权限
S:属主没有x权限
SGID: group,占据属组的执行权限位
s: group拥有x权限
S:group没有x权限
Sticky: other,占据other的执行权限位
t:other拥有x权限
T:other没有x权限
设置文件的特殊属性,可以访问 root 用户误操作删除或修改文件
不能删除,改名,更改
chattr +i file
只能追加内容,不能删除,改名
chattr +a file
显示特定属性
lsattr
范例:
[root@CentOS-8 data]# chattr +i dir
[root@CentOS-8 data]# lsattr dir
-------------------- dir/f1.txt
-------------------- dir/f2.txt
-------------------- dir/subdir
[root@CentOS-8 data]# lsattr *
-------------------- dir/f1.txt
-------------------- dir/f2.txt
-------------------- dir/subdir
-------------------- f10.txt
-------------------- f1.txt
-------------------- f2.txt
[root@CentOS-8 data]# ll
total 8
drwxr-xr-x. 3 root root 48 May 18 16:19 dir
----------. 1 root root 0 May 19 10:30 f10.txt
-rw-r--r--. 1 du admins 709 May 19 10:13 f1.txt
-rw-r--r--. 1 du admins 23 May 18 15:33 f2.txt
[root@CentOS-8 data]# rm -rf dir
rm: cannot remove 'dir/f1.txt': Operation not permitted
rm: cannot remove 'dir/f2.txt': Operation not permitted
rm: cannot remove 'dir/subdir': Operation not permitted
[root@CentOS-8 data]# lsattr
-------------------- ./f1.txt
-------------------- ./f2.txt
----i--------------- ./dir
-------------------- ./f10.txt
[root@CentOS-8 data]# chattr -i dir
[root@CentOS-8 data]# lsattr
-------------------- ./f1.txt
-------------------- ./f2.txt
-------------------- ./dir
-------------------- ./f10.txt
ACL:Access Control List,实现灵活的权限管理
除了文件的所有者,所属组和其它人,可以对更多的用户设置权限
CentOS7 默认创建的xfs和ext4文件系统具有ACL功能
CentOS7 之前版本,默认手工创建的ext4文件系统无ACL功能,需手动增加
tune2fs -o acl /dev/sdb1
mount -o acl /dev/sdb1 /mnt/test
ACL生效顺序:
所有者,自定义用户,所属组|自定义组,其他人
setfacl 可以设置ACL权限
getfacl 可查看设置的ACL权限
范例:
[root@CentOS-8 data]# ll f1.txt
-rw-r--r--. 1 root root 709 May 19 10:13 f1.txt
[root@CentOS-8 data]# setfacl -m u:du:- f1.txt
[root@CentOS-8 data]# ll f1.txt
-rw-r--r--+ 1 root root 709 May 19 10:13 f1.txt
[root@CentOS-8 data]# getfacl f1.txt
# file: f1.txt
# owner: root
# group: root
user::rw-
user:du:---
group::r--
mask::r--
other::r--
[root@CentOS-8 data]# su du
[du@CentOS-8 data]$ cat f1.txt
cat: f1.txt: Permission denied
[du@CentOS-8 data]$ echo xxx >> f1.txt
bash: f1.txt: Permission denied
范例:
[root@centos8 data]#getfacl f1.txt
# file: f1.txt
# owner: root
# group: root
user::rw-
group::r--
other::r--
[root@centos8 data]#setfacl -m u:du:0 f1.txt
[root@centos8 data]#setfacl -m g:admins:w f1.txt
[root@centos8 data]#ll f1.txt
-rw-rw-r--+ 1 root root 718 Dec 18 14:44 f1.txt
[root@CentOS-8 data]# getfacl f1.txt
# file: f1.txt
# owner: root
# group: root
user::rw-
user:du:---
group::r--
group:admins:-w-
mask::rw-
other::r--
[root@centos8 data]#id wang
uid=1000(wang) gid=1000(wang) groups=1000(wang)
[root@centos8 data]#id mage
uid=1001(mage) gid=1001(mage) groups=1001(mage)
[root@centos8 data]#su mage
[mage@centos8 data]$cat f1.txt
#
# /etc/fstab
# Created by anaconda on Wed Dec 11 11:11:16 2019
#
# Accessible filesystems, by reference, are maintained under '/dev/disk/'.
# See man pages fstab(5), findfs(8), mount(8) and/or blkid(8) for more info.
#
# After editing this file, run 'systemctl daemon-reload' to update systemd
# units generated from this file.
#
UUID=1b950ef9-7142-46bd-975c-c4ac1e0d47e8 / xfs
defaults 0 0
UUID=667a4c81-8b4b-4a39-a111-b11cb6d09309 /boot ext4
defaults 1 2
UUID=38d14714-c018-41d5-922c-49e415decbca /data xfs
defaults 0 0
UUID=a0efb2bb-8227-4317-a79d-0a70d515046c swap swap
defaults 0 0
magedata
[mage@centos8 data]$echo magedata2 >> f1.txt
bash: f1.txt: Permission denied
[mage@centos8 data]$exit
exit
[root@centos8 data]#gpasswd -a mage admins
Adding user mage to group admins
[root@centos8 data]#id mage
uid=1001(mage) gid=1001(mage) groups=1001(mage),1002(admins)
[root@centos8 data]#su mage
[mage@centos8 data]$echo magedata3 >> f1.txt
[mage@centos8 data]$cat f1.txt
cat: f1.txt: Permission denied
[mage@centos8 data]$exit
exit
[root@centos8 data]#su wang
[wang@centos8 data]$cat f1.txt
cat: f1.txt: Permission denied
[wang@centos8 data]$echo wangdata >> f1.txt
bash: f1.txt: Permission denied
[wang@centos8 data]$exit
exit
[root@centos8 data]#groupmems -a wang -g admins
[root@centos8 data]#id wang
uid=1000(wang) gid=1000(wang) groups=1000(wang),1002(admins)
[root@centos8 data]#su wang
[wang@centos8 data]$getfacl f1.txt
# file: f1.txt
# owner: root
# group: root
user::rwuser:wang:---
group::r--
group:admins:-w-
mask::rw
other::r--
[wang@centos8 data]$cat f1.txt
cat: f1.txt: Permission denied
[wang@centos8 data]$echo wangdata2 >> f1.txt
bash: f1.txt: Permission denied
范例:
mount -o acl /directory
getfacl file |directory
setfacl -m u:wang:rwx file|directory
setfacl -m g:admins:rw file| directory
setfacl -x u:wang file |directory
#清除所有ACL权限
setfacl -b file1
#复制file1的acl权限给file2
getfacl file1 | setfacl --set-file=- file2
mask 权限
范例:
setfacl -m mask::rx file
范例:
[root@centos8 data]#ll f1.txt
-rw-rw-r--+ 1 root root 728 Dec 18 14:51 f1.txt
[root@centos8 data]#chmod g=r f1.txt
[root@centos8 data]#ll f1.txt
-rw-r--r--+ 1 root root 728 Dec 18 14:51 f1.txt
[root@centos8 data]#getfacl f1.txt
# file: f1.txt
# owner: root
# group: root
user::rw-
user:wang:---
group::r--
group:admins:-w- #effective:---
mask::r--
other::r--
[root@centos8 data]#setfacl -m mask::rw f1.txt
[root@centos8 data]#getfacl f1.txt
# file: f1.txt
# owner: root
# group: root
user::rwuser:wang:---
group::r--
group:admins:-w-
mask::rw-
other::r--
[root@centos8 data]#setfacl -m u:wang:rwx f1.txt
[root@centos8 data]#getfacl f1.txt
# file: f1.txt
# owner: root
# group: root
user::rwuser:wang:rwx
group::r--
group:admins:-wmask::rwx
other::r--
[root@centos8 data]#setfacl -m mask::rw f1.txt
[root@centos8 data]#getfacl f1.txt
# file: f1.txt
# owner: root
# group: root
user::rw-
user:wang:rwx #effective:rw-
group::r--
group:admins:-w-
mask::rw-
other::r--
–set选项会把原有的ACL项都删除,用新的替代,需要注意的是一定要包含UGO的设置,不能像-m一样只是添加ACL就可以
范例:
setfacl --set u::rw,u:wang:rw,g::r,o::- file1
主要的文件操作命令cp和mv都支持ACL,只是cp命令需要加上-p 参数。但是tar等常见的备份工具是不会保留目录和文件的ACL信息
范例:
#备份ACL
getfacl -R /tmp/dir > acl.txt
#消除ACL权限
setfacl -R -b /tmp/dir
#还原ACL权限
setfacl -R --set-file=acl.txt /tmp/dir
#还原ACL权限
setfacl --restore acl.txt
#查看ACL权限
getfacl -R /tmp/dir
范例:
[root@centos8 data]#getfacl *
# file: f1.txt
# owner: root
# group: root
user::rw-
user:wang:rwx #effective:rw-
group::r--
group:admins:-w-
mask::rw-
other::r--
# file: f2.txt
# owner: root
# group: root
user::rw-
group::r--
other::r--
# file: f3.txt
# owner: root
# group: root
user::rw-
user:wang:rwx #effective:rw-
group::r--
group:admins:-w-
mask::rw-
other::r--
[root@centos8 data]#cd
[root@centos8 ~]#tar cvf data.tar /data/
tar: Removing leading `/' from member names
/data/
/data/f1.txt
/data/f2.txt
/data/f3.txt
[root@centos8 ~]#tar xvf data.tar -C /opt
data/
data/f1.txt
data/f2.txt
data/f3.txt
[root@centos8 ~]#ls /opt
data
[root@centos8 ~]#cd /opt/data
[root@centos8 data]#ll
total 12
-rw-rw-r-- 1 root root 728 Dec 18 14:51 f1.txt
-rw-r--r-- 1 root root 728 Dec 18 15:01 f2.txt
-rw-rw-r-- 1 root root 728 Dec 18 14:51 f3.txt
[root@centos8 data]#getfacl -R /data > /root/acl.txt
getfacl: Removing leading '/' from absolute path names
[root@centos8 data]#cat /root/acl.txt
# file: data
# owner: root
# group: admins
user::rwx
group::rwx
other::rwx
# file: data/f1.txt
# owner: root
# group: root
user::rw-
user:wang:rwx #effective:rw-
group::r--
group:admins:-w-
mask::rw-
other::r--
# file: data/f2.txt
# owner: root
# group: root
user::rw-
group::r--
other::r--
# file: data/f3.txt
# owner: root
# group: root
user::rw-
user:wang:rwx #effective:rw-
group::r--
group:admins:-w-
mask::rw-
other::r--
[root@centos8 data]#ll /opt/data
total 12
-rw-rw-r-- 1 root root 728 Dec 18 14:51 f1.txt
-rw-r--r-- 1 root root 728 Dec 18 15:01 f2.txt
-rw-rw-r-- 1 root root 728 Dec 18 14:51 f3.txt
[root@centos8 data]#cd
[root@centos8 ~]#setfacl -R --set-file=/root/acl.txt /opt
[root@centos8 ~]#ll /opt/data/
total 12
-rw-rw-r--+ 1 root root 728 Dec 18 14:51 f1.txt
-rw-rw-r--+ 1 root root 728 Dec 18 15:01 f2.txt
-rw-rw-r--+ 1 root root 728 Dec 18 14:51 f3.txt
[root@centos8 ~]#setfacl -b -R /opt/data
[root@centos8 ~]#ll /opt/data
total 12
-rw-r--r-- 1 root root 728 Dec 18 14:51 f1.txt
-rw-r--r-- 1 root root 728 Dec 18 15:01 f2.txt
-rw-r--r-- 1 root root 728 Dec 18 14:51 f3.txt
练习:
[root@centos8 ~]#mkdir -p /testdir/dir
[root@centos8 ~]#groupadd webs
groupadd: group 'webs' already exists
[root@centos8 ~]#chgrp webs /testdir/dir
[root@centos8 ~]#chmod g+s /testdir/dir
[root@centos8 ~]#groupadd apps;groupadd dbs
[root@centos8 ~]#useradd -G apps tomcat;useradd -G dbs mysql
[root@centos8 ~]#setfacl -d -m g:apps:rw /testdir/dir
[root@centos8 ~]#setfacl -d -m g:dbs:r /testdir/dir
[root@centos8 ~]#chmod o= /testdir/dir
[root@centos8 ~]#getfacl /testdir/dir/
getfacl: Removing leading '/' from absolute path names
# file: testdir/dir/
# owner: root
# group: webs
# flags: -s-
user::rwx
group::r-x
other::---
default:user::rwx
default:group::r-x
default:group:apps:rw-
default:group:dbs:r--
default:mask::rwx
default:other::r-x
[root@centos8 ~]#ll /usr/bin/chmod
-rwxr-xr-x. 1 root root 63880 Apr 27 2020 /usr/bin/chmod
[root@centos8 ~]#chmod a-x /usr/bin/chmod
[root@centos8 ~]#ll /usr/bin/chmod
-rw-r--r--. 1 root root 63880 Apr 27 2020 /usr/bin/chmod
[root@centos8 ~]#chmod a+x /usr/bin/chmod
-bash: /usr/bin/chmod: Permission denied
[root@centos8 ~]#setfacl -m u:root:x /usr/bin/chmod
[root@centos8 ~]#chmod a+x /usr/bin/chmod
[root@centos8 ~]#ll /usr/bin/chmod
-rwxr-xr-x+ 1 root root 63880 Apr 27 2020 /usr/bin/chmod
[root@centos8 ~]#setfacl -b /usr/bin/chmod
[root@centos8 ~]#ll /usr/bin/chmod
-rwxr--r-x. 1 root root 63880 Apr 27 2020 /usr/bin/chmod