20、简答:

背景描述:xiaoqiang、wangcai和tangbohu三个用户的基本组都是与用户名相同的组,但是他们都以qiuxiang组为附属组。

1).当用户xiaoqiang对/testdir目录无执行权限时和无读权限时,分别意味着xiaoqiang无法完成哪些操作?

答:

无执行权限时:不能访问命令,什么都不能执行,不能删除,不能创建,使用"ll"命令能看到有哪些文件,但是看不到具体信息。

无读权限时:不能显示文件名,不能查看文件夹内部有哪些文件,如果知道文件夹内有哪些,则可以删除,也可以在里面创建。


2).当用户wangcai对/testfile文件只有写权限时,是否可修改和删除该文件?如果不能,那么wangcai能够对该文件做哪些操作?

答:

无法肯定,因为修改和删除该文件,对文件所在的目录有写权限就够了。

可以往文件里添加东西,删除东西。有写权限,能够删除文件,但是还是不能修改文件


3).如果用户tangbohu在/tmp目录中建立了一个目录mydir,他想要让wangcai和xiaoqiang这两个用户能够在该目录中创建、修改和删除文件,你能想到哪些办法来实现这个目的?

答:

  1、chmod 777 /tmp/mydir

  2、chgrp qiuxiang /tmp/mydir

     chmod 775 /tmp/mydir

  3、setfacl -m -u:wangcai:rwx /tmp/mkdir

     setfacl -m -u:xiaoqiang:rwx /tmp/mkdir

  4、setfacl -m -g:qiuxiang:rwx /tmp/mkdir

例:

[root@little ~]# groupadd qiuxiang 

[root@little ~]# 

[root@little ~]# cat /etc/group 

[root@little ~]# tail -1 /etc/group

qiuxiang:x:5002:

[root@little ~]# 

[root@little ~]# useradd xiaoqiang -G 5002; useradd wangcai -G 5002; useradd tangbohu -G 5002

[root@little ~]# tail -4 /etc/group

qiuxiang:x:5002:xiaoqiang,wangcai,tangbohu

xiaoqiang:x:5003:

wangcai:x:5004:

tangbohu:x:5005:

[root@little ~]# 

[root@little ~]# su - tangbohu 

[tangbohu@little ~]$ mkdir -pv /tmp/mydir

[tangbohu@little ~]$ 

[tangbohu@little ~]$ ls /tmp | grep "^my*"

mydir

[tangbohu@little ~]$ 

[tangbohu@little ~]$ id 

uid=5004(tangbohu) gid=5005(tangbohu) groups=5005(tangbohu),5002(qiuxiang)

[tangbohu@little ~]$ chmod 775 /tmp/mydir  


[tangbohu@little ~]$ chgrp 5002 /tmp/mydir

[tangbohu@little ~]$ chmod 775 /tmp/mydir/


[tangbohu@little ~]$ su 

Password: 

[root@little tangbohu]# usermod -g 5004 wangcai; usermod -g 5004 xiaoqiang


21、背景描述:xiaoqiang、wangcai和tangbohu三个用户的基本组都是与用户名相同的组,但是他们都以qiuxiang组为附属组。

  1.复制/etc/fstab文件到/var/tmp下,同时设置文件属主为wangcai有读写权限,属组为xiaoqiang组有只读权限,其他人无权限,请写出命令;

  答:

  法一:

  # cp /etc/fstab /var/tmp/     

  # groupadd xiaoqiang

  # chmod 640 fstab

  # ls -l

  法二:

  # cp /etc/fstab /var/tmp/ 

  # chown wang:xiaoqiang fstab

  # chmod 640 fstab


  2.不使用useradd命令创建用户xiaoming,该用户有如下属性:

    1) UID为8089;

    2) 主要组为xiaoming,gid为8089;

    3) 其用户全名为"Wang Xiaoming";

    4) 家目录在/home/xiaoming;

    5) 默认登录shell为/bin/bash;

    6) 密码修改之后5天内不能再次修改密码;

    7) 密码最多使用30天;

    8) 密码过期前3天开始提醒用户修改密码;

    9) 密码过期后,7天之内不会禁止用户登录;

  答:

  # vim + /etc/passwd

    xiaoming:x:8089:8089:Wang Xiaoming:/home/xiaoming:/bin/bash

  # vim + /etc/shadow

    xiaoming:!!:17264:5:30:3:7::

  # vim + /etc/group

    xiaoming:x:8089:

  # vim + /etc/gshadow

    xiaoming:!:8089:

  # cp -a /etc/skel/ /home/xiaoming

  # chmod 700 -R /home/xiaoming/

  # chown xiaoming: -R /home/xiaoming

  # echo "xiaoming" | passwd --stdin xiaoming

  

  3.用户xiaoming在他自己的家目录中创建了一个文件project.plan,为了想要让wangcai用户能够读取到该文件的内容,xiaoming将/bin/cat文件复制到/tmp/xmcat,/tmp/xmcat只有属主xiaoming和wangcai用户能够执行;每次wangcai执行"[wangcai@localhost ~]$ /tmp/xmcat /home/xiaoming/project.plan"命令就能看到该文件的内容;

  答:

  $ install -m 4700 /bin/cat /tmp/xmcat

  $ setfacl -m u:wangcai:r-x /tmp/xmcat

例:

[root@little tangbohu]# install -o wangcai -g xiaoqiang -m 740 /etc/fstab /var/tmp

[root@little tangbohu]# 

[root@little tangbohu]# ls /var/tmp

fstab  yum-little-fVn5BR

[root@little tangbohu]# echo "xiaoming:x:8089:8089:Wang Xiaoming:/home/xiaoming:/bin/bash" >> /etc/passwd

[root@little tangbohu]# 

[root@little tangbohu]# cd

[root@little ~]# ls /var/tmp

fstab  yum-little-fVn5BR

[root@little ~]# cat /etc/passwd

[root@little ~]# cp -a /etc/skel /home/xiaoming

[root@little ~]#  

[root@little ~]# chmod 700 /home/xiaoming

[root@little ~]# 

[root@little ~]# chowm -R 8089:8089 /home/xiaoming

bash: chowm: command not found

[root@little ~]# 

[root@little ~]# chown -R 8089:8089 /home/xiaoming

[root@little ~]# 

[root@little ~]# echo "xiaoming::17262:5:30:3:7::" >> /etc/shadow

[root@little ~]# 

[root@little ~]# passwd xiaoming

Changing password for user xiaoming.

New password: 

Retype new password: 

passwd: all authentication tokens updated successfully.

[root@little ~]# 

[root@little ~]# su - xiaoming

[xiaoming@little ~]$ touch project.plan

[xiaoming@little ~]$ 

[xiaoming@little ~]$ ls

project.plan

[xiaoming@little ~]$ install -m 770 /bin/cat /tmp/xmcat

[xiaoming@little ~]$ ls /tmp

[xiaoming@little ~]$ su -c "usermod -g 8089 wangcai"

[wangcai@little ~]$ 

[wangcai@little ~]$ ls /tmp

[wangcai@little ~]$ /tmp/xmcat /home/xiaoming/project.plan


22、逻辑关系练习:

1.如果在文件系统中有/backup目录就显示这个目录已经存在,否则就创建之;

答:

# ls -d /backup &> /dev/null && echo "this_dir exist" || mikdir -p /backup


2.如果在文件系统中有/backup目录就将/etc目录中所有.conf结尾的一级非目录文件(不包含.conf结尾的子目录中的文件)备份到该目录中;

答:

# ls -d /backup &> /dev/null && cp /etc/*.conf /backup


3.请尝试说明下列命令的意义:

  (! id little &> /dev/null || ! ls -d /home/little &> /dev/null) &&  echo "Error" || userdel -r little


  ! (id little &> /dev/null && ls -d /home/little &> /dev/null) &&  useradd -md /home/little little || echo "Error" 

答:

如果little用户,及其家目录都不存在,就输出"Error";否则就删除该用户,及其家目录,循环删除。

如果little用户,及其家目录都不存在,则创建用户并强制创建其家目录/home/little;否则就输出"Error"

  useradd命令:

  -d: 创建家目录

  -m: 利用家目录创建用户


例:

[root@little ~]# ls /

backup  boot  etc   lib    lost+found  misc  net  proc  sbin     srv  tmp  var

bin     dev   home  lib64  media       mnt   opt  root  selinux  sys  usr  ysu

[root@little ~]#  

[root@little ~]# ls -d /backup &> /dev/null && echo "This is exist." || echo "This is not exist"

This is exist.

[root@little ~]# ls /backup/

etc-2017-11-15_16:43:00

[root@little ~]# 

[root@little ~]# ls -d /backup &> /dev/null && cp /etc/*.conf /backup 

[root@little ~]# 

[root@little ~]# ls /backup/

Trolltech.conf           latrace.conf                  prelink.conf

asound.conf              ld.so.conf                    readahead.conf

autofs.conf              libaudit.conf                 reader.conf

autofs_ldap_auth.conf    libuser.conf                  request-key.conf

cas.conf                 logrotate.conf                resolv.conf

dnsmasq.conf             ltrace.conf                   rsyslog.conf

dracut.conf              mke2fs.conf                   sestatus.conf

etc-2017-11-15_16:43:00  mtools.conf                   smartd.conf

fprintd.conf             named.conf                    sos.conf

gai.conf                 nfsmount.conf                 sudo-ldap.conf

grub.conf                nsswitch.conf                 sudo.conf

gssapi_mech.conf         ntp.conf                      sysctl.conf

hba.conf                 oddjobd.conf                  updatedb.conf

host.conf                openct.conf                   warnquota.conf

idmapd.conf              pbm2ppa.conf                  yp.conf

kdump.conf               pm-utils-hd-apm-restore.conf  yum.conf

krb5.conf                pnm2ppa.conf

[root@little ~]#