[Question] Cùng học Bash Shell Scripting |
06/12/2007 03:29:39 (+0700) | #1 | 102127 |
|
quanta
Moderator
|
Joined: 28/07/2006 14:44:21
Messages: 7265
Location: $ locate `whoami`
Offline
|
|
Nhân topic của quanghuy12, tớ lập cái topic này để tất cả anh em nào thích viết scripts vào đây cùng thảo luận. Mọi người có thể sưu tầm hoặc tự nghĩ ra đề bài, post lên và những người khác cùng tìm hiểu. Hoặc bạn có thể post lên những đoạn scripts hay, thú vị mà bạn viết hoặc sưu tầm được.
Xin mở màn với vài câu:
+ Viết một đoạn script convert tất cả các file ảnh có định dạng *.bmp nằm trong một thư mục (nhập vào từ bàn phím) sang định dạng *.jpg
+ Nhập vào 1 user từ bàn phím. Kiểm tra xem user đó có xuất hiện trong /etc/passwd hay không?
+ Chỉnh sửa /etc/profile để khi đăng nhập với root bạn sẽ nhận được một lời chào
+ Viết một đoạn script nhập vào uid. In ra tên người dùng, thư mục home, shell và GUID.
+ Nhập vào một process ID. Kiểm tra xem process có PID đó có đang chạy hay không?
+ Viết một đoạn script kiểm tra 1 tham số đưa vào là số nguyên (integer) hay chuỗi (string)
Xin mời anh (chị) em. |
|
Let's build on a great foundation! |
|
|
|
[Question] Re: Ai thích viết Bash Shell Scripting -- Vào đây |
06/12/2007 04:39:09 (+0700) | #2 | 102137 |
|
rickb
Reseacher
|
Joined: 27/01/2007 17:47:27
Messages: 200
Offline
|
|
Mình nghĩ đề này chỉ cần 2 dòng là xong rồi nhỉ VD ta cần convert file ảnh trong thư mục abc thì đặt script này trong thư mục abc rồi cho chạy tự động bằng cron là xong (còn nếu đặt script này ở 1 nơi khác thư mục abc thì phải sửa script lại sử dụng đường dẫn tuyệt đối
#!/bin/bash
mv *.bmp *.jpg
Có gì sai sót mong bỏ qua
Thân |
|
|
|
|
[Question] Re: Ai thích viết Bash Shell Scripting -- Vào đây |
06/12/2007 05:14:53 (+0700) | #3 | 102145 |
StarGhost
Elite Member
|
0 |
|
|
Joined: 29/03/2005 20:34:22
Messages: 662
Location: The Queen
Offline
|
|
rickb wrote:
Mình nghĩ đề này chỉ cần 2 dòng là xong rồi nhỉ VD ta cần convert file ảnh trong thư mục abc thì đặt script này trong thư mục abc rồi cho chạy tự động bằng cron là xong (còn nếu đặt script này ở 1 nơi khác thư mục abc thì phải sửa script lại sử dụng đường dẫn tuyệt đối
#!/bin/bash
mv *.bmp *.jpg
Có gì sai sót mong bỏ qua
Thân
Cái gì thế này? Convert chứ có phải đổi tên đâu, đọc kĩ đề đi bro. Hint: sử dụng ImageMagick, trừ phi quanta muốn mọi người tự viết hoàn toàn script. Hơn nữa, câu lệnh trên của bro chắc chắn ko hoạt động nếu có nhiều file bmp. |
|
Mind your thought. |
|
|
|
[Question] Re: Ai thích viết Bash Shell Scripting -- Vào đây |
06/12/2007 05:36:49 (+0700) | #4 | 102153 |
|
rickb
Reseacher
|
Joined: 27/01/2007 17:47:27
Messages: 200
Offline
|
|
StarGhost wrote:
rickb wrote:
Mình nghĩ đề này chỉ cần 2 dòng là xong rồi nhỉ VD ta cần convert file ảnh trong thư mục abc thì đặt script này trong thư mục abc rồi cho chạy tự động bằng cron là xong (còn nếu đặt script này ở 1 nơi khác thư mục abc thì phải sửa script lại sử dụng đường dẫn tuyệt đối
#!/bin/bash
mv *.bmp *.jpg
Có gì sai sót mong bỏ qua
Thân
Cái gì thế này? Convert chứ có phải đổi tên đâu, đọc kĩ đề đi bro. Hint: sử dụng ImageMagick, trừ phi quanta muốn mọi người tự viết hoàn toàn script. Hơn nữa, câu lệnh trên của bro chắc chắn ko hoạt động nếu có nhiều file bmp.
lúc đầu mình cũng nghĩ vậy nhưng mình nghĩ nếu đã dùng chươngtrình làm thì cần gì viết shel script chạy làm chi nữa ? Còn về việc nhiều file thì mình thử rồi, cha tuốt |
|
|
|
|
[Question] Re: Ai thích viết Bash Shell Scripting -- Vào đây |
06/12/2007 17:09:59 (+0700) | #5 | 102274 |
StarGhost
Elite Member
|
0 |
|
|
Joined: 29/03/2005 20:34:22
Messages: 662
Location: The Queen
Offline
|
|
rickb wrote:
Còn về việc nhiều file thì mình thử rồi, cha tuốt
Không cãi được đâu bro, xem lại man page của mv nhé:
Rename SOURCE to DEST, or move SOURCE(s) to DIRECTORY
Trừ phi bro viết 1 cái mv script khác, còn standard thì...
|
|
Mind your thought. |
|
|
|
[Question] Re: Ai thích viết Bash Shell Scripting -- Vào đây |
07/12/2007 03:13:19 (+0700) | #6 | 102368 |
|
rickb
Reseacher
|
Joined: 27/01/2007 17:47:27
Messages: 200
Offline
|
|
Mình cãi gì đâu, cái này thì đã tự tay làm thực tế được chứ nói gì đọc lý thuyết man |
|
|
|
|
[Question] Ai thích viết Bash Shell Scripting -- Vào đây |
08/12/2007 16:32:08 (+0700) | #7 | 102753 |
|
tan_khongminh
Member
|
0 |
|
|
Joined: 08/08/2006 21:02:22
Messages: 4
Location: Coltech
Offline
|
|
quanta wrote:
Nhân topic của quanghuy12, tớ lập cái topic này để tất cả anh em nào thích viết scripts vào đây cùng thảo luận. Mọi người có thể sưu tầm hoặc tự nghĩ ra đề bài, post lên và những người khác cùng tìm hiểu. Hoặc bạn có thể post lên những đoạn scripts hay, thú vị mà bạn viết hoặc sưu tầm được.
Xin mở màn với vài câu:
+ Viết một đoạn script convert tất cả các file ảnh có định dạng *.bmp nằm trong một thư mục (nhập vào từ bàn phím) sang định dạng *.jpg
Chịu.
______________________________________________
+ Nhập vào 1 user từ bàn phím. Kiểm tra xem user đó có xuất hiện trong /etc/passwd hay không?
Code:
#! /bin/bash
echo -n "User name: "
read uname
temp=`grep $uname /etc/passwd`
if [ "$uname" = "${temp%%:*}" ]
then
echo "$uname is a created user"
else
echo "$uname isn't a created user"
fi
________________________________________________
+ Chỉnh sửa /etc/profile để khi đăng nhập với root bạn sẽ nhận được một lời chào
Thêm dòng sau vào cuối file profile (nếu chưa cài gói figlet thì cài vào):
Code:
+ Viết một đoạn script nhập vào uid. In ra tên người dùng, thư mục home, shell và GUID.
Code:
#! /bin/bash
echo -n "User id: "
read uid
temp=`grep "[^:]*:$uid" /etc/passwd`
temp2=${temp#*x:}
if [ "${temp2%%:*}" = "$uid" ]
then
echo User name: ${temp%%:*}
ush=${temp##*:}
temp=${temp%:*}
echo Home Folder: ${temp##*:}
echo User shell: $ush
temp=${temp#*:$uid:}
echo GUID: ${temp%%:*}
else
echo "User id is not exist!"
fi
________________________________________________
+ Nhập vào một process ID. Kiểm tra xem process có PID đó có đang chạy hay không?
Code:
#! /bin/bash
echo -n "Process id: "
read pid
temp=`ps -p $pid | grep $pid`
if [ "$temp" = "$pid*" ]
then
echo Process is running
else
echo Process is not running
fi
|
|
|
|
|
[Question] Re: Ai thích viết Bash Shell Scripting -- Vào đây |
09/12/2007 12:24:52 (+0700) | #8 | 102860 |
|
lihavim
Elite Member
|
0 |
|
|
Joined: 08/06/2004 15:19:32
Messages: 506
Offline
|
|
+ Viết một đoạn script convert tất cả các file ảnh có định dạng *.bmp nằm trong một thư mục (nhập vào từ bàn phím) sang định dạng *.jpg
Có thể xài lệnh mogrify như sau:
Code:
mogrify -format jpg name.bmp
Xài cho nhanh thì dùng alias như sau:
Code:
alias bmp2jpg="mogrify -format jpg"
Tham khảo thêm về chỉnh sửa ảnh với dòng lệnh ở http://www.ibm.com/developerworks/linux/library/l-graf/#N101ED và http://www.linux.com/articles/113978.
+ Viết một đoạn script kiểm tra 1 tham số đưa vào là số nguyên (integer) hay chuỗi (string)
Theo http://tldp.org/LDP/abs/html/string-manipulation.html thì thực ra bash nó không phân biệt số hay chuỗi mà cho vô chuỗi tất, tuỳ hoàn cảnh mà nó xử lý ra sao thôi.
Nhưng có thể coi số nguyên là chuỗi chỉ bao gồm các kí tự 0-9.
Code:
#!/bin/bash
echo -n "nhập vô: "
read nhap
nhap=`echo ${nhap//[0-9]/}`
[ "${#nhap}" = "0" ] && echo "số" || echo "chuỗi"
+ Nhập vào một process ID. Kiểm tra xem process có PID đó có đang chạy hay không?
Cái này em xin sửa lại cho ngắn gọn hơn 1 chút:
Code:
#!/bin/bash
echo -n "nhập vô: "
read nhap
nhap=`ps -eo pid | grep "\<$nhap$"`
[ "$nhap" = "" ] && echo "Đang chạy" || echo "Không chạy"
|
|
|
|
|
[Question] Re: Ai thích viết Bash Shell Scripting -- Vào đây |
19/03/2008 12:09:46 (+0700) | #9 | 120088 |
|
quanta
Moderator
|
Joined: 28/07/2006 14:44:21
Messages: 7265
Location: $ locate `whoami`
Offline
|
|
Tiếp theo:
Input: Cho một file text có một số dòng bắt đầu bằng dấu >
Output: Hãy thêm chuỗi "append" vào cuỗi mỗi dòng bắt đầu bằng dấu > này.
Ví dụ:
Input:
>111
abc
>222
def
Output:
>111append
abc
>222append
def
|
|
Let's build on a great foundation! |
|
|
|
[Question] Re: Ai thích viết Bash Shell Scripting -- Vào đây |
21/03/2008 05:08:37 (+0700) | #10 | 120325 |
SemiNoob
Member
|
0 |
|
|
Joined: 06/03/2008 01:27:31
Messages: 7
Offline
|
|
|
|
[Question] Re: Ai thích viết Bash Shell Scripting -- Vào đây |
21/03/2008 13:29:55 (+0700) | #11 | 120400 |
|
quanta
Moderator
|
Joined: 28/07/2006 14:44:21
Messages: 7265
Location: $ locate `whoami`
Offline
|
|
SemiNoob wrote:
lihavim wrote:
+ Viết một đoạn script kiểm tra 1 tham số đưa vào là số nguyên (integer) hay chuỗi (string)
Theo http://tldp.org/LDP/abs/html/string-manipulation.html thì thực ra bash nó không phân biệt số hay chuỗi mà cho vô chuỗi tất, tuỳ hoàn cảnh mà nó xử lý ra sao thôi.
Nhưng có thể coi số nguyên là chuỗi chỉ bao gồm các kí tự 0-9.
Code:
#!/bin/bash
echo -n "nhập vô: "
read nhap
nhap=`echo ${nhap//[0-9]/}`
[ "${#nhap}" = "0" ] && echo "số" || echo "chuỗi"
Hix cái này em không hiểu cái đoạn "${nhap//[0-9]/}" với "${#nhap}" cho lắm mấy anh giải thích dùm em được không . Sorry em là Newbie
Chào SemiNoob,
Để hiểu mấy cái này bạn kiếm một bài viết về Regex (Regular Expression) và đọc là ok thôi.
${nhap//[0-9]/}: trả về giá trị của biến nhap (theo thứ tự) ngoại trừ các chữ số từ 0 đến 9. Ví dụ bạn nhập vào abc123def456 thì echo ${nhap//[0-9]/} sẽ trả về abcdef.
${#nhap}: trả về chiều dài (length) của chuỗi nhap. Từ đó bạn sẽ hiểu được đoạn script trên. Bạn tìm lại trên diễn đàn tài liệu "Shell tutorial cơ bản" để tham khảo thêm.
SemiNoob wrote:
lihavim wrote:
+ Nhập vào một process ID. Kiểm tra xem process có PID đó có đang chạy hay không?
Cái này em xin sửa lại cho ngắn gọn hơn 1 chút:
Code:
#!/bin/bash
echo -n "nhập vô: "
read nhap
nhap=`ps -eo pid | grep "\<$nhap$"`
[ "$nhap" = "" ] && echo "Đang chạy" || echo "Không chạy"
Cái này nó không chạy . Em hiểu ý của anh này nhưng mà em không hiểu cái Script này. Em xin sửa lại thế này được không?
Code:
#!/bin/bash
echo -n "nhap vo: "
read nhap
nhap=`ps -eo pid | grep "$nhap"`
[ "$nhap" = "" ] && echo "Khong chay" || echo "Dang chay"
Bạn không hiểu cái script của lihavim ở chỗ nào, đoạn script đó vẫn chạy bình thường nhưng bị nhầm giữa hai cái "echo" thôi mà.
Còn đoạn script của bạn sẽ bị sai đó. Bạn thử nghĩ xem sai ở đâu nhé.
SemiNoob wrote:
Nhân đây mấy anh cho em hỏi cái này: Em đọc trong 1 tài liệu người ta ghi " >&2" hoặc " 1>&2" ---> output standard error ==> nghĩa là nó output ra đâu vậy? Mấy anh giải thích dùm em được không
Bạn post cả đoạn tài liệu đó xem nào. Tớ đoán bạn đang muốn nói đến stdin, stdout, stderr. |
|
Let's build on a great foundation! |
|
|
|
[Question] Re: Ai thích viết Bash Shell Scripting -- Vào đây |
21/03/2008 22:17:03 (+0700) | #12 | 120443 |
SemiNoob
Member
|
0 |
|
|
Joined: 06/03/2008 01:27:31
Messages: 7
Offline
|
|
Sorry ! Đúng là em đã thấy 2 cái echo để nhầm chỗ nhưng em không phải nói về cái đó! Hôm nay test lại thì thấy ok! Có lẽ do hôm qua test trên Window trứoc = Cygwin -> mà Cygwin thì không có agrument -eo pid nên có chỉnh sửa đôi chút rồi chép qua bên Linux quên chỉnh lại .
Cái Script của em sai: >.<
1. Sai echo >.<
2. xxx có thể grep ra xxx | yxxx | xxxy ---> báo cáo sẽ sai nếu xxx không chạy mà yxxx chạy
Đoạn tài liệu nó đây:
While this code will detect if the user is the superuser, it does not really solve the problem yet. We want to stop the script if the user is not the superuser, so we will code it like so:
Code:
if [ $(id -u) != "0" ]; then
echo "You must be the superuser to run this script" >&2
exit 1
fi
With this code, if the output of the id -u command is not equal to "0", then the script prints a descriptive error message, exits, and sets the exit status to 1, indicating to the operating system that the script executed unsuccessfully.
Notice the ">&2" at the end of the echo command. This is another form of I/O direction. You will often notice this in routines that display error messages. If this wwwection were not done, the error message would go to standard output. With this wwwection, the message is sent to standard error. Since we are executing our script and wwwecting its standard output to a file, we want the error messages separated from the normal output.
Anh có sẵn tài liệu về regex hay "Shell tutorial cơ bản" share em, đường link cũng được. Em đang search trên diễn đàn mà nhiều trang quá, phải duyệt từng trang, thời gian thì hơi hạn hẹp! Thx anyway
|
|
|
|
|
[Question] Re: Ai thích viết Bash Shell Scripting -- Vào đây |
21/03/2008 23:15:53 (+0700) | #13 | 120453 |
|
quanta
Moderator
|
Joined: 28/07/2006 14:44:21
Messages: 7265
Location: $ locate `whoami`
Offline
|
|
SemiNoob wrote:
Đoạn tài liệu nó đây:
While this code will detect if the user is the superuser, it does not really solve the problem yet. We want to stop the script if the user is not the superuser, so we will code it like so:
Code:
if [ $(id -u) != "0" ]; then
echo "You must be the superuser to run this script" >&2
exit 1
fi
With this code, if the output of the id -u command is not equal to "0", then the script prints a descriptive error message, exits, and sets the exit status to 1, indicating to the operating system that the script executed unsuccessfully.
Notice the ">&2" at the end of the echo command. This is another form of I/O direction. You will often notice this in routines that display error messages. If this wwwection were not done, the error message would go to standard output. With this wwwection, the message is sent to standard error. Since we are executing our script and wwwecting its standard output to a file, we want the error messages separated from the normal output.
Phần này bạn có thể đọc thêm về http://www.cpqlinux.com/wwwect.html
Trong Linux quy ước như sau:
Code:
0 Standard input /dev/stdin /dev/fd/0
1 Standard output /dev/stdout /dev/fd/1
2 Standard error /dev/stderr /dev/fd/2
Thông thường thì một đoạn script sẽ đọc standard input từ bàn phím và gửi standard output cùng standard error ra màn hình.
Như vậy, với lệnh echo "You must be the superuser to run this script" >&2 bạn có thể hiểu là: output của lệnh echo sẽ được wwwect đến standard error
SemiNoob wrote:
Anh có sẵn tài liệu về regex hay "Shell tutorial cơ bản" share em, đường link cũng được. Em đang search trên diễn đàn mà nhiều trang quá, phải duyệt từng trang, thời gian thì hơi hạn hẹp! Thx anyway
http://www.zytrax.com/tech/web/regex.htm
/hvaonline/posts/list/10496.html |
|
Let's build on a great foundation! |
|
|
|
[Question] Re: Ai thích viết Bash Shell Scripting -- Vào đây |
10/04/2008 11:12:14 (+0700) | #14 | 124350 |
|
quanta
Moderator
|
Joined: 28/07/2006 14:44:21
Messages: 7265
Location: $ locate `whoami`
Offline
|
|
Nếu bạn có thói quen lưu lại logs của Pidgin, hãy chú ý một điều: tất cả logs này đều được lưu ở dạng plain text hoặc html. Ai đó "táy máy" vào máy của bạn, họ sẽ dễ dàng đọc được tất cả.
Cách tốt nhất là cài TrueCrypt lên, tạo một Virtual Volume và dời logs vào đó.
Bạn có thể viết 1 đoạn script như sau và cho vào /etc/cron.hourly:
Code:
#!/bin/bash
LOGS_DIR="/home/<user_name>/.purple/logs/yahoo/<your_account>"
BACKUP_DIR="/media/truecrypt/logs/yahoo/<your_account>"
for ACCOUNT in `ls $LOGS_DIR`; do
if [ -d $BACKUP_DIR/$ACCOUNT ]; then
for DATE in `ls $LOGS_DIR/$ACCOUNT`; do
mv $LOGS_DIR/$ACCOUNT/$DATE $BACKUP_DIR/$ACCOUNT
done
else
mv $LOGS_DIR/$ACCOUNT $BACKUP_DIR
fi
done
rm -fr $LOGS_DIR/*
|
|
Let's build on a great foundation! |
|
|
|
[Question] Re: Ai thích viết Bash Shell Scripting -- Vào đây |
30/04/2008 04:44:51 (+0700) | #15 | 128209 |
|
quanta
Moderator
|
Joined: 28/07/2006 14:44:21
Messages: 7265
Location: $ locate `whoami`
Offline
|
|
Nhân việc đọc lại bài viết /hvaonline/posts/list/1985.html của binhnx2000, xin chia sẻ cùng mọi người vài đoạn scripts:
...
1) Về sự phân cấp, quyền hạn, sở hữu cho File Sự phân cấp, quyền và sự sở hữu rõ ràng đơn giản đã tạo lên sức mạnh bảo mật của Unix/Linux. Vấn đề đầu tiên mà chúng ta cần kiểm tra có lẽ là sự phân cấp, quyền hạn, sở hữu các File trên hệ thống của bạn. Nếu không được cấu hình một cách chính xác điều này hết sức nguy hiểm. Cho lý do này bạn lên thường xuyên kiểm toán hệ thống File trên Server của bạn. Đặc biệt lên chú ý đến ID của root. Có một số chương trình cho phép người sử dụng trên hệ thống của bạn có thể tự do Set UID mà không cần root. Chắc tôi không cần nói, bạn cũng biết là phải làm gì với các chương trình loại này rồi chứ ? Bây giờ chúng ta tìm các File có sự phân cấp, quyền hạn không ổn định trên hệ thống của bạn và sau đó điều chỉnh lại giá trị an toàn cho chúng:
root@localhotst# find / -type f -perm +6000 -ls
59520 30 -rwsr-xr-x 1 root root 30560 Apr 15 1999 /usr/bin/chage
59560 16 -r-sr-sr-x 1 root lp 15816 Jan 6 2000 /usr/bin/lpq
root@localhotst# chmod -s /usr/bin/chage /usr/bin/lpq
root@localhotst# ls -l /usr/bin/lpq /usr/bin/chage
-rwxr-xr-x 1 root root 30560 Apr 15 1999 /usr/bin/chage
-r-xr-xr-x 1 root lp 15816 Jan 6 2000 /usr/bin/lpq
Các dòng lệnh trên tìm các File có UID root hay tương đương root. Tiếp đó gán thuộc tính chỉ cho phép root mới có quyền thực thi nó.
Giá trị +6000 dành cho permissions ở đây có nghĩa là: tìm tất cả các file có SUID (4000) hoặc SGID (2000). Dấu + ở đây có nghĩa là hoặc
Thử chạy trên máy tớ nó ra khá nhiều:
Code:
# find / -type f -perm +6000 -ls
find: /proc/8149/task/8149/fdinfo/4: No such file or directory
find: /proc/8149/fdinfo/4: No such file or directory
131894 64 -rwsr-xr-x 1 root root 57972 Jan 23 11:04 /usr/bin/pulseaudio
132176 1868 -rws--x--x 1 root root 1906404 Mar 14 17:49 /usr/bin/Xorg
130140 4 -rwxr-sr-x 1 root utempter 3284 Mar 27 00:45 /usr/bin/konsole
131504 104 -r-xr-s--x 1 root 20 99208 Jan 8 13:37 /usr/bin/gnotravex
131135 432 -r-xr-s--x 1 root 20 435436 Jan 8 13:37 /usr/bin/iagno
132003 124 -r-xr-s--x 1 root 20 119700 Jan 8 13:37 /usr/bin/mahjongg
132042 28 -rwsr-xr-x 1 root root 25708 Sep 25 2007 /usr/bin/passwd
129652 112 -r-xr-s--x 1 root 20 108776 Jan 8 13:37 /usr/bin/gtali
130352 20 -rwsr-xr-x 1 root root 14448 Oct 16 2007 /usr/bin/rlogin
130991 388 -rwsr-xr-x 1 root root 389480 Sep 25 2007 /usr/bin/wodim
130093 48 -rwsr-xr-x 1 root root 47080 Apr 8 09:11 /usr/bin/chage
130353 16 -rwsr-xr-x 1 root root 9064 Oct 16 2007 /usr/bin/rsh
131345 96 -rwxr-sr-x 1 root nobody 93164 Nov 20 14:40 /usr/bin/ssh-agent
130350 24 -rwsr-xr-x 1 root root 18732 Oct 16 2007 /usr/bin/rcp
132280 348 -rwxr-sr-x 1 root screen 348908 Aug 24 2007 /usr/bin/screen
130994 132 -r-xr-s--x 1 root 20 130436 Jan 8 13:37 /usr/bin/gnome-falling-blocks
131160 168 ---s--x--x 2 root root 164644 Feb 21 12:45 /usr/bin/sudo
130557 12 -rwxr-sr-x 1 root tty 10052 Jan 16 08:47 /usr/bin/write
130079 476 -r-xr-s--x 1 root 20 480144 Jan 8 13:37 /usr/bin/gnibbles
129545 16 -rwxr-sr-x 1 root mail 16260 Aug 22 2007 /usr/bin/lockfile
129889 588 -rwsr-xr-x 1 root root 594068 Aug 17 2007 /usr/bin/cdrdao
131350 48 -rwsr-xr-x 1 root root 47680 Feb 28 05:01 /usr/bin/at
129564 48 -rwsr-xr-x 1 root root 47472 Apr 8 09:11 /usr/bin/gpasswd
131271 160 -r-xr-s--x 1 root 20 157712 Jan 8 13:37 /usr/bin/gnobots2
132110 8 -rwsr-xr-x 1 root root 6808 Mar 10 13:56 /usr/bin/kpac_dhcp_helper
131324 36 -rwx--s--x 1 root slocate 34716 Aug 24 2007 /usr/bin/locate
131161 28 -rwsr-xr-x 1 root root 24656 Apr 8 09:11 /usr/bin/newgrp
131160 168 ---s--x--x 2 root root 164644 Feb 21 12:45 /usr/bin/sudoedit
129818 12 -r-xr-sr-x 1 root tty 10712 Oct 10 2007 /usr/bin/wall
130132 108 -r-xr-s--x 1 root 20 105992 Jan 8 13:37 /usr/bin/gnomine
130101 76 -rws--x--x 1 root root 71088 Mar 20 04:51 /usr/bin/sperl5.8.8
131839 312 -rwsr-sr-x 1 root root 312496 Feb 13 02:24 /usr/bin/crontab
132305 112 -r-xr-s--x 1 root 20 109524 Jan 8 13:37 /usr/bin/glines
131570 16 -rws--x--x 1 root root 15720 Jan 16 08:47 /usr/bin/chfn
131302 100 -r-xr-s--x 1 root 20 96700 Jan 8 13:37 /usr/bin/same-gnome
132120 8 -rwsr-xr-x 1 root root 5872 Mar 10 13:56 /usr/bin/kgrantpty
131825 104 -r-xr-s--x 1 root 20 101036 Jan 8 13:37 /usr/bin/gnotski
130523 16 -rws--x--x 1 root root 14696 Jan 16 08:47 /usr/bin/chsh
129668 180 -rwxr-sr-x 1 root 20 178100 Sep 11 2006 /usr/bin/gnuchess
745371 56 -rwsr-xr-x 1 root root 50695 Jan 9 22:13 /usr/local/bin/fusermount
749030 88 -r-sr-xr-x 1 root nagios 84029 Apr 22 12:59 /usr/local/nagios/libexec/check_icmp
749029 84 -r-sr-xr-x 1 root nagios 79512 Apr 22 12:59 /usr/local/nagios/libexec/check_dhcp
939496 8 -rwx--s--x 1 root utmp 6896 Jan 4 14:59 /usr/libexec/utempter/utempter
939333 12 -rwsr-x--- 1 root polkituser 9924 Apr 4 03:03 /usr/libexec/polkit-grant-helper-pam
939502 20 -rwxr-sr-x 1 root polkituser 16440 Apr 4 03:03 /usr/libexec/polkit-grant-helper
939151 8 -rws--x--x 1 vcsa root 8136 Nov 14 09:03 /usr/libexec/mc/cons.saver
939183 188 -rwsr-xr-x 1 root root 186096 Nov 20 14:40 /usr/libexec/openssh/ssh-keysign
1392660 16 -rwx--s--x 1 root utmp 12616 Sep 18 2007 /usr/lib/vte/gnome-pty-helper
1426488 20 -rwsr-x--- 1 root squid 17952 Mar 13 09:33 /usr/lib/squid/ncsa_auth
1425016 16 -rwsr-x--- 1 root squid 15672 Mar 13 09:33 /usr/lib/squid/pam_auth
2331680 156 -rwsr-xr-x 1 root root 151841 Mar 18 14:35 /usr/kerberos/bin/ksu
1394453 164 -rwxr-sr-x 1 root postdrop 160744 Oct 4 2007 /usr/sbin/postdrop
1392562 32 -rwsr-xr-x 1 root root 30072 Sep 11 2006 /usr/sbin/fping6
1392566 32 -rwsr-xr-x 1 root root 29140 Sep 11 2006 /usr/sbin/fping
1392960 12 -r-s--x--- 1 root apache 11668 Jan 28 06:27 /usr/sbin/suexec
1392810 8 -rwsr-x--- 1 root gnokii 7440 Nov 29 08:58 /usr/sbin/mgnokiidev
1392909 20 -rwx--s--x 1 root lock 16904 Oct 15 2007 /usr/sbin/lockdev
1392553 36 -rws--x--x 1 root root 35152 Oct 16 2007 /usr/sbin/userhelper
161941 188 -rwxr-sr-x 1 root postdrop 185348 Oct 4 2007 /usr/sbin/postqueue
1392655 12 -rwsr-xr-x 1 root root 6456 Aug 22 2007 /usr/sbin/ccreds_validate
1392885 12 -rwsr-xr-x 1 root root 7056 Oct 9 2007 /usr/sbin/usernetctl
95122 64 -rwsr-xr-x 1 root root 60956 Jan 16 08:46 /bin/mount
95064 28 -rwsr-xr-x 1 root root 27244 Mar 25 14:04 /bin/su
95077 44 -rwsr-xr-x 1 root root 41912 Sep 14 2007 /bin/ping
95124 40 -rwsr-xr-x 1 root root 39264 Jan 16 08:46 /bin/umount
95129 24 -rwsr-xr-x 1 root root 23908 Feb 28 06:05 /bin/fusermount
95080 40 -rwsr-xr-x 1 root root 36940 Sep 14 2007 /bin/ping6
443522 48 -rwsr-x--- 1 root dbus 46276 Feb 27 23:40 /lib/dbus-1/dbus-daemon-launch-helper
253666 8 -rwxr-sr-x 1 root root 6164 Oct 9 2007 /sbin/netreport
253637 64 -rwsr-xr-x 1 root root 55456 Oct 17 2007 /sbin/mount.nfs
253515 16 -rwsr-xr-x 1 root root 12552 Feb 19 16:02 /sbin/pam_timestamp_check
253541 28 -rwsr-xr-x 1 root root 27576 Feb 19 16:02 /sbin/unix_chkpwd
Trong danh sách này, có những file bắt buộc phải được gán SUID hoặc SGID, nhưng có những files bạn phải bỏ ngay lập tức.
Viết một đoạn script ngắn gọn để làm việc này:
Code:
#!/bin/bash
for FILE in `find / -type f -perm +6000`
do
echo -n "chmod -s "$FILE"? (y/n) "
read ANSWER
if [ $ANSWER = "y" ]; then
chmod -s $FILE
fi
done
Hãy chắc chắn rằng: bạn biết file nào không cần chạy với SUID hoặc SGID.
(Còn tiếp) |
|
Let's build on a great foundation! |
|
|
|
[Question] Cùng học Bash Shell Scripting |
31/07/2010 16:17:28 (+0700) | #16 | 217027 |
|
vltn
Member
|
0 |
|
|
Joined: 13/07/2010 23:09:11
Messages: 74
Location: V9F
Offline
|
|
Quanta vui lòng cho cái topic này tiếp để mọi người tham khảo đi
Đang xem đến đây, |
|
|
Users currently in here |
1 Anonymous
|
|
Powered by JForum - Extended by HVAOnline
hvaonline.net | hvaforum.net | hvazone.net | hvanews.net | vnhacker.org
1999 - 2013 ©
v2012|0504|218|
|
|