用户管理
- 创建文件夹/homework模拟提交作业的位置
mkdir homework
- 创建老师和学生,查看/etc/passwd
useradd teacher
useradd student
cat /etc/passwd
- 创建组,查看/etc/group
groupadd group1
- 把学生加入组
usermod -G group1 student 或者
gpasswd -M student group1
- 切换成学生用户,测试对homework目录的读写执行权限,然后切换成一个不属于该组的非
teacher用户去访问操作homework目录
练习1
-
使用普通用户测试(不要使用root)
-
创建一个目录my,在my内创建一个文件aaa
-
修改所有者的权限做测试
my/aaa:064
my:075
注意:先修改文件,再修改文件夹
[test@xcz7 ~]$ chmod 064 my/aaa
[test@xcz7 ~]$ chmod 075 my
-
放大目录权限为4(r)
测试进入目录
测试查看目录信息
[test@xcz7 ~]$ chmod 475 my
-
放大目录权限为5
测试查看进入目录
测试查看目录
-
放大文件权限为4,文件只读
测试修改文件内容
测试删除文件
chmod 464 my/aaa
-
放大文件权限为6
测试修改文件内容
测试删除文件
chmod 664 my/aaa
-
修改目录的权限为7
测试删除文件
练习2
- 创建帐号tom,密码自拟
useradd tom
- 用root在my目录下创建file2,去除my目录写权限,然后使用tom尝试删除my目录下的file2
mkdir /my
touch /my/file2
chmod 0555 /my
su tom
rm -f /my/file2
- 给my目录添加写权限,并将拥有者改为tom,使用tom帐号删除my目录下的file2文件
chmod 0777 /my
chown tom /my
su tom
rm -f /home/test/my/file2
成功
- 每次操作前后需要展示所操作的目录内的文件信息
权限管理
- 创建一个名为 file1.txt 的文件,并设置权限为:所有者和组成员可以读写,但其他人只能读。
touch file1.txt
chmod 0664 file1.txt
stat file1.txt
- 在 /home 目录下创建一个名为 shared 的子目录,使得所有用户都可以读写该目录及其内容。
mkdir /home/shared
chmod 0777 /home/shared
- 创建一个名为 script.sh 的脚本文件,并设置权限为:所有者可读写并执行,组成员可读写但不可执行,其他人无权限。
touch script.sh
chmod 0760 script.sh
- 在 /var/log 目录下创建一个名为 audit.log 的文件,使得所有者和组成员可以读写,但其他人
只能读。
touch /var/log/audit.log
chmod 0664 /var/log/audit.log
- 创建一个名为 confidential.txt 的文件,使得只有所有者可以读写,组成员可以读,其他人无
权限。
touch confidential.txt
chmod 0640 confidential.txt
- 在 /var/www/html 目录下创建一个名为 public.html 的文件,使得所有者和组成员可以读写,
其他人可以读但不能写。
[root@xcz7 ~]# mkdir -p /var/www/html/
touch /var/www/html/public.html
chmod 0664 /var/www/html/public.html
- 创建一个名为 archive.tar.gz 的压缩文件,并设置权限为:所有者可读写,组成员可读,其他
人无权限。
touch archive.tar.gz
chmod 0640 archive.tar.gz
stat archive.tar.gz
- 在 /tmp 目录下创建一个名为 temp.txt 的文件,使得所有用户都可以读写并执行该文件。
touch /tmp/temp.txt
chmod 0777 /tmp/temp.txt
- 创建一个名为 database.db 的数据库文件,使得所有者可读写,组成员可读,其他人无权限。
touch database.db
chmod 0640 database.db
- 在 /opt 目录下创建一个名为 restricted 的子目录,使得只有 root 用户可以读写该目录及其内
容。
mkdir /opt/restricted
chmod 0700 /opt/restricted
acl
- (acl)假设你有一个名为 data.txt 的文件,需要设置以下权限:
用户 alice 可读、写入该文件
用户 bob 只可读该文件
setfacl -m u:alice:rw data.txt
setfacl -m u:bob:r data.txt
- (acl)在一个目录 shared_folder 中,zhangsan用户只能读取而不能修改。lisi用户可以读取和修
改。
setfacl -m u:zhangsan:rx /shared_folder
setfacl -m u:lisi:rwx /shared_folder
- (acl)你有一个名为 confidential.doc 的文件,需要确保只有用户组 admins 中的用户才能读写该
文件,其他用户无法读取或修改。
chmod 0700 confidential.doc
setfacl -m g:admins:rw confidential.doc
- (acl)在一个项目文件夹中,有开发团队和测试团队两个用户组,需要设置以下权限:
开发团队可以读取、写入文件夹中的所有文件
测试团队只能读取文件夹中的文件,不能进行修改
其他用户没有权限访问该文件夹 使用 ACL 权限为该文件夹设置合适的权限。
setfacl -m u:normal1:rwx /project
setfacl -m u:normal2:rx /project
- 使用normal1用户查看/root目录下的suid.txt文件(suid)
chmod 4755 /root/suid.txt
chmod 5755 /root
chmod u+s /root/sexituid.txt
chmod u+s /root
6.使用normal2用户通过ls文件查看/root目录内的文件(sgid)
chmod 4755 /root
chmod g+s /root
7.创建一个名为 sticky_dir 的目录,并设置 Sticky Bit,以防止除了目录所有者和 root 以外的用户
删除其他用户创建的文件。(stickybit)
chmod 1755 sticky_dir
chmod o+t sticky_dir
8.使用 chattr 命令将文件 important.txt 设置为不可修改,即使 root 用户也无法修改。
[root@xcz7 project]# chattr +i important.txt
9.创建一个名为 secure_folder 的目录,该文件夹内的文件不允许删除新增,可以修改文件内容。
chattr +i secure_folder
10.在 /etc 目录下创建一个名为 config_file 的文件,并使用 chattr 命令设置其内容为只追加模式,不允许修改或删除。
chattr +a /etc/config_file
11.某应用程序有一个data.log 的日志文件,不允许对该文件有删除和修改操作。
chattr +a data.log