সমস্ত ধরণের সংযোগের জন্য কীভাবে ssh এর umask সেটআপ করবেন


34

আমি সেটআপ OpenSSH- র এর একটি উপায় অনুসন্ধানের জন্য করে থাকেন umask করার 0027সব বিভিন্ন ধরনের জুড়ে একটি সামঞ্জস্যপূর্ণ উপায়।

সংযোগের প্রকারের দ্বারা আমি উল্লেখ করছি:

  1. SFTP
  2. scp কমান্ড
  3. ssh হোস্টনেম
  4. ssh হোস্টনেম প্রোগ্রাম

3. এবং 4 এর মধ্যে পার্থক্যটি হ'ল প্রাক্তনটি একটি শেল শুরু করে যা সাধারণত /etc/profileতথ্যটি পড়ে যখন উত্তরটি না করে।

এই পোস্টটি পড়ার পাশাপাশি আমি ওপেনএসএসএইচ-এর নতুন সংস্করণগুলিতে উপস্থিত -u বিকল্প সম্পর্কে সচেতন হয়েছি। তবে এটি কাজ করে না।

আমি অবশ্যই যোগ করতে হবে যে /etc/profileএখন অন্তর্ভুক্ত umask 0027

পয়েন্ট পয়েন্টে যাচ্ছে:

  • sftp - এখানে উল্লিখিত হিসাবে সেট -u 0027করা যথেষ্ট নয়।sshd_config

যদি আমি এই প্যারামিটারটি সেট না করে রাখি তবে sftp ডিফল্টরূপে ব্যবহার করে umask 0022। এর অর্থ এই যে আমার কাছে দুটি ফাইল থাকলে:

-rwxrwxrwx 1 user user 0 2011-01-29 02:04 execute
-rw-rw-rw- 1 user user 0 2011-01-29 02:04 read-write

গন্তব্য মেশিনে রাখার জন্য আমি যখন এসফটিপি ব্যবহার করি তখন আমি আসলে পাই:

-rwxr-xr-x 1 user user 0 2011-01-29 02:04 execute
-rw-r--r-- 1 user user 0 2011-01-29 02:04 read-write

তবে যখন আমি সেট -u 0027উপর sshd_configগন্তব্য মেশিন আমি আসলে পেতে:

-rwxr--r-- 1 user user 0 2011-01-29 02:04 execute
-rw-r--r-- 1 user user 0 2011-01-29 02:04 read-write

যা প্রত্যাশিত নয়, যেহেতু এটি আসলে হওয়া উচিত:

-rwxr-x--- 1 user user 0 2011-01-29 02:04 execute
-rw-r----- 1 user user 0 2011-01-29 02:04 read-write

কেউ বুঝতে পারে কেন এমন হয়?

  • scp - sftp এর জন্য কী সেটআপ করা যায় তার স্বাধীনভাবে অনুমতিগুলি সর্বদা থাকে umask 0022। এটি কীভাবে পরিবর্তন করতে হয় তা সম্পর্কে বর্তমানে আমার কোনও ধারণা নেই।

  • ssh হোস্টনেম - এখানে কোনও সমস্যা নেই যেহেতু শেলটি /etc/profileডিফল্টরূপে পড়ে যার অর্থ umask 0027বর্তমান সেটআপ up

  • ssh হোস্টনেম প্রোগ্রাম - scp হিসাবে একই অবস্থা ।


সংক্ষেপে, sftpফলাফলকে ওমাস্ক স্থাপন ফলাফলটি যেমন বদলে যায় তেমনটি হয় না, ssh hostnameপ্রত্যাশিত পড়া /etc/profileএবং উভয়ই কাজ করে scpএবং ssh hostname programমনে হয় umask 0022কোথাও হার্ডকোড হয়েছে।

উপরোক্ত বিষয়গুলির যে কোনও বিষয়ে অন্তর্দৃষ্টি স্বাগত।

সম্পাদনা: আমি প্যাচগুলি এড়াতে চাই যাতে ম্যানুয়ালি ওপেনশ সংকলন প্রয়োজন। সিস্টেমটি ম্যাভেরিকের opensshপ্যাকেজগুলির সাথে উবুন্টু সার্ভার 10.04.01 (লুসিড) এলটিএস চলছে ।

উত্তর: পয়েজ দ্বারা ইঙ্গিত হিসাবে, পাম_উমস্ক ব্যবহার করে কৌশলটি করেছে।

সঠিক পরিবর্তনগুলি হ'ল:

লাইনে যুক্ত হয়েছে /etc/pam.d/sshd:

# Setting UMASK for all ssh based connections (ssh, sftp, scp)
session    optional     pam_umask.so umask=0027

এছাড়াও, সমস্ত লগইন শেলগুলি উত্স দেয় কিনা তা নির্বিশেষে প্রভাবিত করার জন্য /etc/profileএকই লাইনগুলিতে যুক্ত করা হয়েছিল /etc/pam.d/login

সম্পাদনা : কিছু মন্তব্যের পরে আমি এই বিষয়টির প্রতিক্রিয়া জানালাম।

কমপক্ষে উবুন্টুতে (যেখানে আমি পরীক্ষা করে দেখেছি) মনে হয় যে ব্যবহারকারী যদি তাদের শেলের ইআর ফাইলগুলিতে (.bashrc, .zshrc, ...) আলাদা আলাদা উমাস্ক সেট করে থাকে, তবে পাম উমাস্ককে উপেক্ষা করা হবে এবং পরিবর্তে ব্যবহারকারীর উমাস্ক সংজ্ঞায়িত করা হবে। পরিবর্তনগুলি /etc/profileপ্রভাবকে প্রভাবিত করে না যতক্ষণ না ব্যবহারকারী স্পষ্টভাবে init ফাইলগুলিতে এই পরিবর্তনগুলি উত্স করে।

সমস্ত আচরণে যদি এই আচরণটি ঘটে থাকে তবে এই মুহূর্তে এটি স্পষ্ট নয়।


আনোড: "আমি প্যাচগুলি এড়াতে চাই যাতে ম্যানুয়ালি ওপেনশ সংকলন প্রয়োজন" " কেন?
দেশস্ট্রেলেক্স

5
@ ডেসটেরালেক্স - কারণ (যদি সম্ভব হয়) তবে উত্স ভিত্তিক প্যাকেজ থাকা অতিরিক্ত রক্ষণাবেক্ষণ / প্রশাসনের কাজটি আমি এড়াতে চাই এবং যেহেতু ওমেনস্ক প্যাচিং ব্যতীত উমাস্ক পরিবর্তন করার অন্য কোনও উপায় নেই বলে আমার বিশ্বাস করা কঠিন। এটি বিশেষভাবে বিবেচনা করা যে কোনও সিস্টেমে একটি বরং মূল সুরক্ষা দিক।
আনোডে

1
/Etc/pam.d/sshd (এবং লগইন) পরিবর্তন করে এবং ssh পুনরায় আরম্ভ করার পরে, আমি কোনও আচরণগত পরিবর্তন দেখতে পাচ্ছি না। অন্যান্য প্রয়োজনীয় পরিবর্তনগুলি নিহিত রয়েছে তবে এখানে উল্লেখ করা হয়নি?
স্টিভ ক্লে

@ এমসিআর্লে - আপনার কি আছে? UsePAM yes আপনার sshd_config- এ আছে?
আনোডে

1
ব্যবহারকারীর .bashrc সমস্যা সমাধানের জন্য, আপনার মধ্যে umask কমান্ড দূরে রেখে চেষ্টা করুন /etc/profile। এরকম কিছুalias umask=/bin/true
টোবিয়া

উত্তর:


22

আমি 2 টি জিনিস চেষ্টা করার পরামর্শ দিতে পারি:

  1. pam_umask
  2. LD_PRELOAD মোড়ক (স্ব-লিখিত?)

1
+1 টি, pam_umask পর্যন্ত সবচেয়ে সহজ সমাধান দ্বারা হবে বলে মনে হয়
Flexo

পাম_উমাস্ক কৌশলটি করে। উত্তরটি
প্রতিবিম্বিত

কেবল স্ট্যাকওভারফ্লো . com/q/10220531/220060 ব্যবহার করুন । তবে সাবধান হন, যদি আপনি কোনও কিছু ভুল করে লিখে থাকেন তবে আপনি নিজেকে সার্ভার থেকে লক করে রাখুন। আপনার বর্তমান সেশনটি বন্ধ করার আগে আপনি আবার লগইন করতে পারেন কিনা তা সর্বদা পরীক্ষা করে দেখুন।
স্পষ্টভাবে

1
@Nalply দ্বারা মন্তব্যের সংযোজন: একটি ব্যাকআপ আছে কিনা তা নিশ্চিত করুন রুট অধিবেশন খোলা, ব্রেকিং পিএএম মানে যেহেতু আপনাকে সক্ষম হবেন না sudoবা sudo suবা মত।
জিরো 3

13

এখানে একটি সমাধান রয়েছে যা আপনাকে প্রতি ব্যবহারকারীর ভিত্তিতে যা করতে চায় তা করতে দেয়। sshdএটিতে কেবল স্থানীয় বৈশিষ্ট্য ব্যবহার করা হয় এবং স্থানীয়ভাবে রক্ষণাবেক্ষণ করা প্যাচগুলি নিয়ে মাকিংয়ের প্রয়োজন হয় না। এই সমাধানটি ForceCommandপ্রতিটি এসএসএস সংযোগে এনভায়রনমেন্ট-সেটআপ স্ক্রিপ্ট সন্নিবেশ করানোর জন্য sshd এর ব্যবহারের সুযোগ নেয় এবং তারপরে মূল কমান্ডটি চালায়।

প্রথমে নিম্নলিখিত সামগ্রীগুলি সহ আপনার সিস্টেমে কোথাও একটি স্ক্রিপ্ট তৈরি করুন:

#!/bin/sh

umask 0027
exec /bin/sh -c "${SSH_ORIGINAL_COMMAND:-$SHELL}"

এই উদাহরণের উদ্দেশ্যগুলির জন্য আমি ধরে নেব যে আপনি এটি বলেছেন /usr/bin/umask-wrapper

এখন, এটি সেট আপ করার জন্য আপনার কাছে কয়েকটি বিকল্প রয়েছে। আপনি যদি এটি ব্যবহারকারীর জন্য বাধ্যতামূলক কনফিগারেশন হতে চান (যা কিছুটা অসম্ভব বলে মনে হয়), আপনি নিম্নলিখিতটি অন্তর্ভুক্ত করতে আপনার এসএসডি কনফিগারেশনটি সংশোধন করতে পারেন:

ForceCommand /usr/bin/umask-wrapper

আপনি যদি কেবল কিছু ব্যবহারকারীর ক্ষেত্রে এটি প্রয়োগ করতে চান তবে আপনি একটি Matchব্লক ব্যবহার করতে পারেন (এটি আপনার শেষে চলে যায় sshd_config):

Match User user1,user2
ForceCommand /usr/bin/umask-wrapper

আপনি যদি এটি ব্যবহারকারী-নিয়ন্ত্রণযোগ্য আচরণ হতে চান তবে নির্দিষ্ট কীগুলির জন্য এই আচরণটি নির্বাচন করতে command=আপনি কোনও authorized_keyফাইলের বিকল্পটি ব্যবহার করতে পারেন । উদাহরণস্বরূপ, এটি পরীক্ষা করার সময় আমি আমার authorized_keysফাইলে একটি এন্ট্রি যুক্ত করেছি যা দেখতে এরকম কিছু দেখাচ্ছে:

command="/home/lars/bin/umask-wrapper" ssh-rsa AAAAB3NzaC1 ... umask-test

এবং এখানে আমার পরীক্ষার কিছু ফলাফল রয়েছে:

sshবিনা নির্দেশে ব্যবহার করা:

localhost$ ssh remotehost
remotehost$ touch umask-test/file1
remotehost$ ls -l umask-test/file1
-rw-r-----. 1 lars lars 0 Feb  2 06:02 file1

sshএকটি কমান্ড দিয়ে ব্যবহার :

localhost$ ssh remotehost touch umask-test/file2
localhost$ ssh remotehost ls -l umask-test/file2
-rw-r-----. 1 lars lars 0 Feb  2 06:03 file2

ব্যবহার scp:

localhost$ touch file3
localhost$ ls -l file3
-rw-r--r--  1 lars  staff  0 Feb  2 06:03 file3
localhost$ scp file3 remotehost:umask-test/file3
localhost$ ssh remotehost ls -l umask-test/file3
-rw-r-----. 1 lars lars 0 Feb  2 06:03 file3

ব্যবহার sftp:

localhost$ sftp remotehost
sftp> put file3 umask-test/file4
sftp> ls -l umask-test/file4
-rw-r-----    0 500      500             0 Feb  2 06:05 umask-test/file4

এবং সেখানে আপনি এটা আছে। আমি বিশ্বাস করি এটি এমন আচরণ যা আপনি খুঁজছিলেন। এই সমাধান সম্পর্কে আপনার যদি কোনও প্রশ্ন থাকে তবে আমি অতিরিক্ত বিশদ সরবরাহ করে খুশি হব।


যদিও এই পদ্ধতিটি কাজ করছে বলে মনে হচ্ছে, এটি কিছুটা রক্ষণাবেক্ষণের স্বপ্ন দেখে। তবুও, পাম ব্যবহার করা যায় না এমন ক্ষেত্রে ক্ষেত্রে +1।
আনোডে

3
আমি জানি না যে এটি বজায় রাখা এতই কঠিন। পিএএম-ভিত্তিক সমাধানের প্রাথমিক সুবিধাটি হ'ল এর জন্য কোনও বিশেষ সুবিধার দরকার নেই - আপনি প্রশাসকের হস্তক্ষেপ ছাড়াই এটি আপনার নিজের অ্যাকাউন্টের জন্য সেট করতে পারেন।
2:51

আমি ব্যবহারকারীদের একটি নির্বাচিত তালিকা রাখার নিরিখে ভাবছিলাম, কিন্তু প্রকৃতপক্ষে আমি সরল ব্যবহারকারী সেটআপে এই কাজ করার দিকটি লক্ষ্য করিনি। আমি যখন এটি প্রথম পড়ি তখন আমি ভেবেছিলাম ফোর্সকান্ড "প্রয়োজনীয়" ছিল এবং "সেট আপ করার একটি উপায়" নয়। command=প্রকৃতপক্ষে ssh এর একটি ঝরঝরে বৈশিষ্ট্য।
আনোডে

5

আমি সেটিংসকে কেন্দ্রীভূত করতে কিছুটা ভিন্ন পন্থা নিয়েছি।

এটি এতে যুক্ত হয়েছিল /etc/pam.d/common-session:

session    optional     pam_umask.so

এটি এতে সংশোধিত হয়েছিল /etc/login.defs:

UMASK           0027

2

আমি এসএমএসের সাথে কাজ করার জন্য পাম_উমাস্ক পেয়েছি, তবে স্ক্যাপ বা এসএফপি দিয়ে নয়।

মোড়ক পদ্ধতিটি এসএফটিপি বা স্ক্যাপের জন্য কিছুই করে না। আমি নিশ্চিত না যে বেশিরভাগ ডিস্ট্রোদের ইতিমধ্যে উমাস্ক সেট রয়েছে বলে 027 একটি ভাল উদাহরণ। 002 দিয়ে চেষ্টা করুন এবং দেখুন যে এটি কার্যকর হয় কিনা।


1

যে প্রোগ্রামগুলি তাদের নিজস্ব উমাস্ক সেট করে না সেগুলি অ্যাপ্লিকেশনটির উমাস্ককে উত্তরাধিকার সূত্রে শুরু করে। সম্পূর্ণ sshd বন্ধ করুন, আপনার উমাস্কটি 0027 এ সেট করুন, তারপরে আবার এটি শুরু করুন। (ভবিষ্যতের পুনরায় বুট করার জন্য আপনি ডিস স্ক্রিপ্টে উমাস্ক কমান্ডটি যুক্ত করতে পারেন))

Scp নিয়ে কাজ করার জন্য পরীক্ষিত।


দুঃখিত DerbK তবে এটি প্রথম জিনিসগুলির মধ্যে একটি যা আমি সফলতা ছাড়াই চেষ্টা করেছি। সমস্ত লগইন শেল রয়েছে umask 0027(যদি তারা পড়ে থাকে /etc/profile) তবে পুনরায় আরম্ভ করার ফলে এসএসপি স্ক্যাপ বা এসএসকে প্রভাবিত করে না।
আনোডে

1

যদি pam_umaskআপনার এসএফটিপি সেশনগুলি প্রভাবিত করে না দেখায়, তবে ফাইলটিতে UsePamসেট করা Yesআছে কিনা তা পরীক্ষা করে দেখুন /etc/ssh/sshd_config

আপনি যদি পাসওয়ার্ড প্রমাণীকরণ অক্ষম করে থাকেন এবং এতে UsePamসেট বা ডিফল্ট হয়েছিলেন No। আপনি সেট করতে পারেন ChallengeResponseAuthentication Noমধ্যে sshd_configকারণ অন্যথায় আপনি অনবধানতাবশত যে সিস্টেমের মাধ্যমে একটি পাসওয়ার্ড প্রমাণীকরণ সক্ষম করতে পারে ফাইল।


1

উপরে ব্যবহারকারী 188737 এর উত্তরে একটি যুক্ত নোট:

এটি না বলেই যেতে পারে তবে আপনি যদি ওপেনএসএইচ-সার্ভার প্যাকেজটি ব্যবহার না করে এবং ম্যানুয়ালি ওপেনএসএইচ সংকলন করেছেন তবে নিশ্চিত হয়ে নিন যে আপনি পাস করে "পিএএম সমর্থন সক্ষম করুন" "--with-pam কনফিগারেশন পতাকাটি ।

অন্যথায়, UsePAM=yessshd_config এ, আরও যে কোনও পরিবর্তন /etc/pam.d/*কার্যকরভাবে এড়ানো হবেsshd

অবশেষে এটি আমার সম্পর্কে জানতে পেরেছিল যে প্রস্তাবিত পিএএম সমাধানগুলির কোনওটিই অ ইন্টারেক্টিভ এসএফটিপি সংযোগের মাধ্যমে পরীক্ষার কোনও প্রভাব ফেলছে না কেন ...


1

যেহেতু উমাস্ক পিতামহীন প্রক্রিয়া থেকে উত্তরাধিকার সূত্রে প্রাপ্ত, স্ল্যাকওয়্যার সিস্টেমে যা /etc/rc.d/rc.sshdsshd শুরু / থামাতে / পুনরায় আরম্ভ করতে ব্যবহার করে, আপনি কেবল umask 0027নিজের দ্বারা একটি লাইনে সরাসরি "sshd_start" বা "sshd_restart" এর উপরে বা বিকল্প হিসাবে, কোনও বিন্দুতে আগে স্থাপন করতে পারেন place প্রধান সম্পাদন বিভাগটি শুরু হয় /etc/rc.d/rc.sshd:

case "$1" in
'start')
  umask 0027
  sshd_start
  ;;
'stop')
  sshd_stop
  ;;
'restart')
  umask 0027
  sshd_restart
  ;;
*)

অথবা, বিকল্পভাবে, ফাইলের শীর্ষে:

#!/bin/sh
# Start/stop/restart the secure shell server:
umask 0027

0

আমি সোলারিস 11 এ sshd_config বিকল্পগুলিতে লারস্কের সম্ভাব্য উন্নতি পরীক্ষা করেছি

ব্যবহারকারীদের পরিচালনা করার জন্য একটি গোষ্ঠী সেটআপ করুন এবং স্ক্রিপ্টটি নিজেই কনফিগ ফাইলে স্থানান্তরিত করুন, আমার ক্ষেত্রে আমি উমাস্কটি 0002 এ সেট করতে চেয়েছিলাম।

ফলাফল কনফিগারেশন হয়ে ....

Match Group managedgroup
ForceCommand /bin/sh -c 'umask 0002; ${SSH_ORIGINAL_COMMAND:-$SHELL}'

0

Scp ব্যবহার করে কোনও ফাইল অনুলিপি করার পরে বিশেষত ফাইল অনুমতি নিয়ে আমি এই সমস্যাটির সাথে লড়াই করছি এবং অবশেষে আমার কাছে অনুলিপিটি পরে অনুলিপি পরিবর্তন করার জন্য এসএসএস ব্যবহার করার ঘটনা ঘটেছে।

সমাধান এখানে:

  1. আপনার ফাইলটি অনুলিপি করুন: localhost$ scp filename remotehost:umask-test/filename
  2. অনুমতি স্থির করুন: localhost$ ssh remotehost "chmod go+r umask-test/filename"

সর্বোপরি, এই সমাধানটি কার্যকর করতে কোনও রুট অ্যাক্সেস প্রয়োজন।

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.