1. 程式人生 > >linux-practice(20-22)

linux-practice(20-22)

權限

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 ~]#


linux-practice(20-22)